Showing posts with label Oracle BPA Suite. Show all posts
Showing posts with label Oracle BPA Suite. Show all posts

Wednesday, 13 August 2008

Oracle BPM Suite vs. BPA Suite

Yesterday I still had some questions in my article about the Oracle BEA acquisition. One of them being the mist I had between Oracle's BPA Suite and the BPM suite. There is however a pdf of the presentation that belongs to the webcast of Thomas Kurian. It can be found at: http://www.oracle.com/products/middleware/docs/oracle-middleware-strategy-briefing-072008.pdf. In the pdf is stated that:
  • BPA suite is meant for rigorous process modelling
  • BPM suite is meant for agile process modelling
So that clears things up, right?
If it does for you, you may explain to me what Oracle means by "rigorous" and "agile", why should I put (more) energy in learning BPA Suite, and why is Oracle spending money in closing the life-cycle-wheel in the BPA Suite-BPEL-BAM round trip? It's kind of contraditory I think: BPA Suite for rigorous process-models generating BPEL bleu-prints that is clearly meant for a SOA and one of the main drivers for SOA is having agile enterprice business processes.

I think I have a feeling about BPA suite and the use of it in larger enterprises and having business process modelled that are not that agile. That turn out to be more rigid.
But is there an enterprise that is going to use both suites? Doing their "rigid" business processes in BPA en the agile in BPM both generating BPEL for the "Converged" process engine? I would not think so, but I'm probably not so visionary as the Oracle VP's are. Probably you would use one of the two suites and if you choose for BPA suite, the more agile processes that you don't design with BPA, you probably design and build directly in BPEL Designer in combination with good old MS Word/OpenOffice Writer.

Monday, 9 June 2008

Reverse Engineering BPEL to BPMN

As I wrote in my previous posting, I attended the Oracle BPA Suite Workshop last week in Brussels. As it goes with my thoughts, attending such a course will get my head spinning and generating all new ideas on how to use the tool, get it into propositions and where to position it in the whole IT landscape.

The last three years or so, we got into building many BPEL processes. These are mostly designed using a highly sophisticated and modern tool. It's called Microsoft Word... In about the same period a rather good alternative is developed into a great alternative: Open Office/Writer.

But what about Oracle BPA Suite. We want to use that one to do our Business Process modelling. And of course we want to have a relationship between the BPMN model and our BPEL Process. This should be great when doing impact analysis. Hey, wait a minute, this is something I missed. I hope some Oracle Product Manager reads this and puts this high on the wish-list of near-future-improvements.

To get thus far, you probably want to have your bpel-processes reverse engineered to the BPA Suite. And if possible a simple migration would be great. Well, to get the expectations right in the beginning: you can't. That is: as far as I have seen the tool. But given the current "State of the Union" I'm pretty sure I'm right.

So that's the bad side of the story. Now I probably wouldn't write this post if I have not tried it or thought further and maybe you're interested in my findings. I think it is quite possible to outline a step-approach that gives at least a connection between a BPMN model and your BPEL project. It is at leas a starting point for your reverse engineering.

I found that the step-approach consist of two phases. The bottom up-phase and then the top-down phase.

The Bottom-up phase

The bottom-up phase is, simply stated, that you create a simple BPMN model consisting of one-automated-activity surrounded by a start and an end-event. That one you'll hand over to the IT-Department and the IT-Department will merge the current bpel-process into that one. Having done that you'll end up with a BPMN-model that is of course not very usefull for modelling and documentation purposes. But it is a necessary start for the reverse-engineering process.

The phase consist of the following steps:

  1. Backup the BPEL-project, by renaming the project directory and the jDeveloper-project file to another name. For example suffix the project with "_bck". Before doing that, make sure you committed the latest changes into your version control system.
  2. In BPA Architect create a BPMN-model with the same name as the BPEL project. Also it is wise to create a proper folder structure in which you put your processes, your datagrams (Technical Terms), Application system definitions, etc.
  3. In BPMN model create a Pool with a Lane and within that a Start- and an End-event . Also an Automated Task. This Task should be of type "Abstract BPEL" (not an invoke of a service). Give the Automated Activity an input document as input and a response document as output. Of course create the proper connnections
  4. Publish it to IT (using the SOA menu).
  5. Create a new BPEL-project in jDeveloper using the BPA Server connection (I assume you know how to do that) and choose the newly created BPMN-model for it.
  6. From the source of the backuped BPEL, copy the namespaces. Replace the tns and target-namespace with the one that is in the client. Also deduplicate the namespaces.
  7. Copy the partnerlinks. Make sure there is only one client partnerlink based on the one in the backuped BPEL.
  8. Copy the rest of the project including the variables to the scope of the automated activity.
  9. Place the variables to out the sequence of the scope, the rest of the BPEL code should be within the sequence. There's probably an empty activity named the same as the Automated Activity. You can remove that one.
  10. Comment out the receive client and invoke callback-client statements. In a later step we use them to replace the generated ones in the Start and End scope.
  11. Move the input and output variables to the global scope.
  12. Move the commented receive activity to the scope belonging to the BPMN-start event and move the commented invoke/callback activyt to the scope of the BPMN-end-event.
  13. Replace the generated receive/invokes by the moved/commented ones. Mark the namespaces: they should correspond to the namespaces of the original BPEL-source. The bpel generated by the BPA-Suite connection have "tns" as a namespace. The BPEL originally created by jDeveloper have "client" as a namespace. Make sure they're both equal to the original BPEL source. They should also match with the WSDL.
    Also mark that the original ones are probably empty activities and the newly generated ones have annotations. Take care that the annotations are adapted into the resulting receive/invoke activities.
  14. Probably it is convenient to just replace the WSDL files of the new BPEL project with the original one of the backuped BPEL. Also copy al the other artefacts (WSDL's of other partnerlinks/adapters, XSD's, XSL's of transformations, etc.) to the new BPEL project. Maybe this should be done upfront.
  15. Save the project in jDeveloper.
  16. Save project to the bpa server (make sure that in BPA Architect the model is not opened).
  17. Go to the naar Architect and accept the changes from IT. For that you should deselect any detail-activity by clicking somewhere on the background of the model and the Accept and Refuse changes buttons light up.
  18. Of course try to deploy your project to the development SoaSuite and adapt possible mistakes and save the correct/deployable and correctly runnable project to both BPA Suite and your Version Control System.
The Top-Down phase
As said this will deliver you a simple BPMN model but it does consist all your technical BPEL details. In jDeveloper you could add some Abstracts in the sequence of BPMN activities and move the appropriate BPEL details to the corresponding scopes. It is however not possible to add business logic on BPMN level. You could try to rename a "locked" BPMN activity by renaming the scope. But the BPA-Suite connection will notice and refresh your BPEL source. You can only do that in the BPA suite. And that is in fact what you're going to do in the Top-Down phase. There you'll add the necessary business logic.

For each Partnerlink Invocation you'll have to add Automated Tasks with the appropriate naming, Technical Terms, Input and Output documents (resembling the input and output variables of your partnerlink-invocation) and Human Workflow activities. Of course you'll provide the necessary Business Logic.

I would suggest to do this in small steps:
  1. Add one or two Automated Tasks for appropriate Partnerlink invocation
  2. Add the necessary Business Logic Plumbing
  3. Save the model and publish it to IT
  4. In jDeveloper move the appropriate logic to the corresponding scopes and get it to work in your Development SoaSuite.
  5. Save the project in jDeveloper and in your Version Control System.
  6. Save it to BPA Suite.
Repeat these steps as often as needed to get the right granularity in your BPMN-model.
Don't change your BPMN project with all the Business Logic right away. Then it is to hard to get all the technical details moved properly ending up with a BPEL process that won't work anymore and is hardly possible to get it work ever. So add one or two Automated Activities


Conclusion
Unfortunatly at this time we don't have a smart one-click approach. Especially for big models it can be a monks-job. But I think it might be worth it. It'll get you to a neatly documented Business Process that can grow with your organization.
It might turn out that some of your BPEL is just to complicated. That your technical detailing is based on some technical choices that does not resemble the thoughts of the Business Analyst. That is not necessarily wrong from functional-perspective. But then it is not possible to get the whole out of it.
Also I'm not sure yet how to handle the invoke and receive of Asynchronous Services. But that gets sorted out.
And if you need help: just contact us through www.darwin-it.nl.

BPA Suite Workshop Brussels 04-05 june 2008

Last week I was in Belgium to attend the BPA Suite Workshop, organized by Oracle Product development. My former colleague Hugo Brandt did a nice job in introducing us into the Business Process Architect, the BP Repository and the BPA Publisher.

I must say that I was pretty tiered because of a few busy days before and the long drive from home (Amersfoort the Netherlands) to the Oracle BeLux (Belgium Luxembourg) headquarters near Brussels Airport. Which is an extra compliment for both Hugo and the BPA Suite, keeping mee interested for two days.

First after an introduction we had to install the bunch of software. I downloaded the lot from edelivery.oracle.com and found that the zips are not as straight forward as you would expect. Zip 1 contained CD1 + part of CD2, Zip 2 part of CD2 and part of CD3 and Zip3, as you might expect by now, the remaining of CD3. So you had to unzip the whole into one directory and so combining the cd-parts.

For the installation you had 3 possible topologies:
1. Business Process Architect with a local repository in Oracle Lite
2. Business Process Architect with a local repository in Oracle XE
3. A "Remote" repository in a "real" database (Oracle XE/10g/11g or SQL Server) and BP Architect.

Since I'm no enthousiastic Oracle Lite user and I had the downloads in a VM with allready SoaSuite against a proper 10g database, I choose topology 3. The installation went straight forward. Just start OracleBPA.exe from the second cd and follow the arrows (Like Asterix and Obelix in "The Odyssey of Asterix" ). Then you can install the BPArchitect from cd1.
BPA Suite needs a UTF-8 database. So if you want to use Oracle XE do use the "universal" version of XE (not the standard one). If you, just like me, want to use an 10g/11g Enterprise Edition database, it have to be a database with a UTF-8 characterset.

At the end of the course I had some difficulties in getting the BPA Publisher installed and configured correctly. It turns out that it had to be installed in the same directory as the repository and the architect. And also it was "self-wise" to install against Oracle Lite (while there is no OLite service installed). So we had to reconfigure it with note 556414.1 from metalink to get Publisher configured against a standard Oracle Database.

I was quite enthusiastic about BPA Suite. It is really a great product to capture your BPMN models and also the upper levels of the ARIS House. Since Im no Business Analyst (and at the moment I've no ambitions to become one) I've no real comparison to other tools, exept for Oracle Designer perhaps. But besides that Oracle is doing a nice job in filling in the gap between BPMN and BPEL with the BPEL Blueprinting additions.

With BPA Suite it is possible to "publish the bpmn to the IT-Department". This means that you create a BPEL Blue print from the BPA suite. This blue print can be picked up by jDeveloper with the BPA Suite plugin found at the Add-on folder on the BPA Suite cd's. With that you create a BPA repository Server connection that enables you to browse through the repository for Processes that are handed over to the IT Department. Each activity in the BPMN model will become a scope in BPEL that can be detailed by the BPEL Developer. The right XSD's have to be imported, the wsdl's/services have to be detailed and the correct assignments and/or transformation between the variables have to be added.

Then after technically detailing the bpel-blueprint to a real working bpel process the BPEL specialist can upload the project again to the BPA Suite. By doing so the process may be subject to change by the Business Analyst without loosing the technical detailing. Unless ofcourse the Business Analyst removes some activities and replaces them by others. Then the detailing of the removed activities are lost and the new ones have to be detailed again. So keep in mind that the BPA Suite is by no means a replacement for a version-control system.

Publisher is by the way a nice tool that enables the rest of your enterprise browse to the published copy of the repository. In Oracle Designer we had a Repository Object Browser which enabled you to browse with a regular internet browser to the definitions in the Designer repository (it probably still works in the latest Designer). BPA Business Process Publisher however works on an own workset that is a publishment of a part of the BPA Repository.
So you have to regularly publish the latest state of your work.

I'm now philosophizing how one could migrate existing BPEL Processes to BPA suite. It should not be too hard I think. I'm thinking of the next step plan:
  1. In BPA Suite create a new model with a start and an end activity and one automated activity in between. Give it a name that resembles the name of your bpel process.
  2. Publish it to the IT Department/Create a BPEL Blueprint of it.
  3. In jDeveloper pick-up the blueprint
  4. Merge the two projects, this probably means smart copy and pasting your exisiting bpel project and additional artefacts to the new BPA Suite BPEL Project. Leave the generated scopes of the BPEL Blueprint in tact.
  5. In the BPMN View of your process add Abstracts according to the scopes and structure of your bpel project.
  6. Distribute your bpel code over the scopes that are added during step 5. Also take care of the logic between the scopes.
  7. Upload the bpel process to the BPA Repository.
  8. In BPA Architect you'll find that the BPMN proces is locked/read only and there is a copy of it with "(1)" at the end. Architect will notify you of the fact that "IT updated your model". In the new model you have to accept the changed by IT (you can do that with the accept-changes-button in the upper right corner in the toolbar).
  9. Then you could refine the model, get the conditional logic right etc. Publish again and possibly refine the technical details.
I'ts probably a tedious job when it's about a large BPEL Process. Also I don't know yet how to cater for the Data-grams (the so-called Technical Terms) that Architect keeps as input and output for each automated activity. But I probably am going to try in the near future.

By the way, I just stated I've no ambitions to become a Business Analyst. My ambitions are more in the line of being a Technical/Integration Architect. And since February (2008) I'm certified TOGAF consultant. Until now I lacked (is that the correct English saying?) in making that known.