BPEL代表业务流程执行语言(Business Process Execution Language),它是面向服务架构(Service Oriented Architecture,SOA)的关键技术之一,为描述内部或外部信息交换提供了一种业务流程引擎。BPEL明确针对业务流程的功能性方面:控制流(分支、循环、并行)、异步会话和关联、长期运行的嵌套工作单元、故障和补偿。
BPEL专门用来处理以下业务流程难题:
协调服务之间的异步通信, 关联各方之间的消息交换, 实现并行活动处理, 在合作伙伴交互之间处理数据, 支持长期运行的业务事务和活动。
业务流程中的用户交互
BPEL业务流程被定义为可以调用服务的活动集合。BPEL不会区分由应用程序提供的服务和其他交互,比如人机交互,人机交互非常重要,因为真实的业务流程不仅涉及系统和服务,还会涉及到用户。业务流程中的用户交互可以非常简单,比如批准某项任务或决策,也可以非常复杂,比如委托(delegation)、续订(renewal)、升级(escalation)、委任(nomination)或链式执行(chained execution)。
任务审批是最简单也是最常见的用户交互。在一个保险业务流程中,比如用于批准某项保险索赔,可能需要用户交互来确定是否批准这项索赔。如果情况更复杂的话,业务流程可能需要多名用户依次或同时做出批准。在需要用户依次做出批准的场景中,流程中的下一个用户经常需要查看由前一个用户做出的决策。有时,特别是出现并行用户交互的情况下,不允许用户查看其他用户的决策。这使决策具有更多的可能性。有时,用户甚至不知道哪些用户参与到流程中——或者根本不知道是否涉及其他用户。
BPEL为业务流程中的人机交互提供了Human任务组件。
创建含有HumanTask的BPEL
让我们从一个样例研究案例开始,批准保险索赔的过程是一个业务流程,其中保险索赔的提交者和批准者是流程的参与者,并且批准状态由Human Task做出。该案例涉及客户的个人信息和索赔信息,比如customerID、customerName以及索赔描述和索赔数量等。在真实的业务中,我们将按照HIPPA和HL-7 等HealthCare Standards获取信息,从而可以在异构系统中实现互操作。
下面是创建Insurance Claim Business流程的步骤。
切换到Business Integration Perspective。
通过选择File > New > Module创建新的Business Integration Module。
单击Finish,创建InsuranceClaimModule。
图 1. 创建业务模块
图 2. 创建业务对象
创建业务模块后,它将打开模块,如图 2 所示。
创建所需的业务对象(Data 类型)。
右键单击Data Types > New > Business Object。
单击Finish,将创建一个空对象。
向该对象添加一些必需的字段及字段类型。
图 3. 向业务对象添加字段
在我们的场景中,必需的字段为CustomerInformation和ClaimInfomation,其中,CustomerInformation保存CustomerId、CustomerName等值,而ClaimInformation包含描述和数量信息。Business Editor中的典型Business Object如图 3 所示。
图 4. 创建接口
创建接口InsuranceClaim和ClaimReview。
图 5. 向接口添加操作
InsuranceClaim接口将processClaim() 作为操作,将CustomerInformation和ClaimInformation作为输入,将决策作为输出。
ClaimReview接口将review() 作为操作,将ClaimInformation作为输入,将结果作为输出。
图 6. 创建业务流程
创建新的业务流程。
右键单击Business Logic > New > Business Process。
图 7. 选择流程类型
如图 7 所示,选择Long-Running流程,因为它包含人机交互。
图 8. 选择一个接口
这里我们选择了一个需要与流程进行映射的接口,流程将作为Receive活动的输入。
为此,需要单击Select an Interface单选按钮并选择InsuranceClaim接口和processClaim()操作。
单击Finish,将创建ClaimBusinessProcess。
图 9. 映射字段
向Receive活动映射InsuranceClaim接口、processCLaim操作和输入。
Reply活动被映射到输出字符串决策。
图 10. 业务流程编辑器
在业务编辑器的右上方,我们可以看到Interface Partners及其对应的变量。图 10 展示了具有宏流(macro flow)的业务流程,该宏流包含了Receive和Reply活动,我们可以从面板中拖拽Human Task来添加它。
图 11. 添加人工任务
处理索赔的核心决策是通过使用人工任务(human task)作出的,我们将选择一个合适的接口,它将根据用户的决策选择流程。在我们的例子中,我们选择了ClaimReview接口,它具有review()操作,返回Boolean值,表示批准索赔要求。如图 11 所示,为任务命名并选择合适的接口,然后添加类型为Boolean的新变量“result”。
图 12. 向人工任务添加属性
在properties选项卡中向review()操作添加映射变量。
在humantask活动之后添加代码片段,显示来自人工任务的结果并向代码片段提供以下java代码。
以下是引用片段: if(result.booleanValue() == true) { decision = “approved”; } else { decision = “rejected”; } System.out.println(“result:”+decision); |
图 13. 添加代码片段
流程流的典型视图和java代码编辑器将如图 13 所示。
执行完合适的映射后,保存模块。
为HumanTask生成用户界面
在前面一节中,我们创建了一个业务流程,它将获取信息、处理信息并根据人工任务交付输出。现在,完整的BPEL被公开为一个界面,我们需要对它执行下面的步骤:
将BPEL组件放到Assembly Diagram中。
双击Assembly Diagram,打开Assembly diagram编辑器。
将ClaimBusinessProcess bpel拖拽到编辑器中。
右键单击Processes下的ClaimBusinessProcess,选择Generate User Interfaces。
图 14. 生成用户界面
图 15. 用户界面向导
在我们BPEL流程中默认选择JSF定制客户机和人工任务作为Generator Type。
单击Next以继续。
图 16. 创建Web模块
生成的用户界面应当位于某些web项目中,可以执行下面的操作来实现:
命名web项目。
为生成的页面选择User Interface样式并单击Finish。
动态web项目及其对应的EAR将被创建。
运行项目
现在,是时候来测试我们的BPEL人工任务了。完成下面的步骤:
启动服务器并向其中添加这两个项目。
右键单击服务器>选择Add and Remove projects>选择BPEL项目和web项目EAR,单击Finish。
图 17. 添加BPEL和Web项目
图 18. 添加BPEL和Web项目,步骤 2
换到Assembly diagram。
右键单击BPEL组件>选择Test Component。
填充Initial request parameters部分的所有细节。
选择Invoke in Events部分并单击continue。
流程将在人工任务阶段暂停,等待输入。
要调用Human Task,运行Web项目。
图 19. 运行JSF用户界面
使用服务器凭证登录服务器,这会将您重定向到settings.jsp页面。
选择open链接,开始处理人工任务。窗口将显示等待状态中的任务。
图 20. 暂停的人工任务
选择显示了所需的输入数据和claim按钮的任务。
图 21. 接收的输入参数
单击claim按钮。
图 22. 人工任务决策
要批准索赔,单击result复选框。
要将任务置于暂停状态,单击save按钮。
要拒绝索赔,单击release。
图 23. 显示结果
图 23 展示了代码片段的结果以及BPEL中余下的活动。
在真实场景中,将使用相同的方式将用户重定向到另一个页面,后者帮助用户导航到其他屏幕/操作。我们在这里使用的用户界面是由WebSphere Integration Developer默认提供的。要获得更丰富的感观,可以根据我们的业务需求进行定制。
结束语
本文总结了使用BPEL和JSF技术的SOA应用程序开发。它主要关注为大多数业务流程中常见的BPEL人工任务开发定制的用户界面。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
购买应用集成工具可以采取平衡做法
购买应用程序集成工具需要好好看看你的公司需求,知道从供应商里面要寻找哪些关键功能。