|
SYS-CON.TV Webcasts
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
Top Links You Must Click On
BPM Real World WSFL
Real World WSFL
By: Steve Benfield
May. 24, 2002 12:00 AM
Web services has promised many things. One primary promise has been the ability to piece applications together by snapping Web services together like so many Lego blocks. The output of one service becomes the input to the next and so on. In 2001, IBM published a specification called WSFL 1.0: Web Services Flow Language. WSFL is a language used to define business processes using Web services. By implementing WSFL, you can create process definitions that can be used by any WSFL-based business process engine. In addition, any process defined in WSFL can, itself, become a Web service, allowing composition of more and more complex and coarse-grained processes. My company worked directly with IBM to interpret and implement their specification; this article describes WSFL at a high level and concludes with some thoughts on WSFL and its future.
Why Business Process Modeling?
Basics of WSFL
Flow Model
Activities
Control Links
Data Link
Conditional Links
Join Activities and Conditions
You can't use a transition condition because each link would only be aware of its previous activity's data. In this case you need information from both activities to make a decision. Figure 1 shows two activities that merge into one. Once the individual link statuses are (the credit is ok, inventory is in stock), the "create invoice" join condition will be evaluated. The join condition enforces that both links must be true for the process to proceed. (If either were false, then you would never get to the activity anyway.) Join conditions can have a join evaluation property that is "deferred" or "immediate." The default is deferred and means that all links coming into an activity must be valid and completed before the join condition is evaluated, ensuring that all activities have finished. The result is synchronized execution. If the evaluation is immediate, the join condition is evaluated each time a link is completed; this way, an activity can fire before all the previous activities are completed. An example of this would be a supplier inventory check, where at least one supplier must confirm an item is in stock. The flow can continue once one supplier confirms the item is in stock without waiting for the other suppliers' responses.
Exit Conditions
FlowSource and FlowSink
Start and End Activities
Logic Construction
The Global Model
In the global model, you can define service provider types, port types, service providers, service locators, and plug links. Going into detail on these would require another article twice the size of this one because of the abstraction they provide. Plug links are used to map specific activities in the flow model to the actual Web services that will be used. Services can be hard-coded, looked up from UDDI services, or even specified by the data that is used within the process itself. Given the state of Web services today, I expect that most implementations of business processes will use hard-coded services references and that some of the more flexible portions of the global model will not be used for some time. However, WSFL does provide extreme flexibility in how actual services can be specified and called during execution time and it's good that WSFL anticipates the dynamic nature of Web services. Another thing the global model allows is the definition of the public interface of the flow itself. It contains mappings to define what the resulting WSDL of the model will look like and allows outside services to call or return data to specific services within the flow as required. For example, you might have an activity in a flow that merely waits for notification from some outside process. That outside process will need a way to get to the specific activity managed by the WSFL engine.
Real World WSFL
There are a few areas in which WSFL is currently lacking, however. Because of these limitations, any real-world implementation must extend the current version of the specification. WSFL lacks some features needed for effective B2B implementations; many of these features are scheduled to be expressed in something called WSEL - Web Services Endpoint Language. WSEL describes things like timeout values, retry values, and other quality-of-service information needed to make B2B interactions work. WSEL has not been released, but the WSFL specification provides some high-level guidance as to where WSEL is heading. WSFL doesn't handle asynchronous recursive processes very well. In BPM circles these are known as fan-in and fan-out scenarios; while they can be implemented in WSFL, they are complex and error-prone and require special services to make the processing work. I believe WSFL should have provisions for such requirements. Finally, WSFL doesn't address some B2B and human workflow semantics, such as addressees, correlation IDs, and priority levels. These are required so that waiting processes can be delegated to various individuals and groups within an organization. WSFL's provision for a process ID is not sufficient. Any major commercial implementation based on WSFL will have to have extensions to the base WSFL in order to be viable. Fortunately, the standards process works and all of the current weaknesses in WSFL are being addressed.
Summary
Reader Feedback: Page 1 of 1
Enterprise Open Source Magazine Latest Stories . . .
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||