ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Modeler和WID协作实现简单的信用卡申请及进度查询的业务流程

使用Modeler和WID协作实现简单的信用卡申请及进度查询的业务流程

原创 Linux操作系统 作者:第四只手 时间:2009-06-14 23:11:30 0 删除 编辑

内容摘要:

  本文中,作者将使用Websphere Business Modeler和Websphere Integration Developer协作,端到端地实现并部署一个简单的信用卡申请及进度查询的业务流程,以便于读者更好地了解如何使用Modeler 和 WID进行BPM的快速实现和部署。本文非常适合对Modeler和WID有一定了解,并想通过二者协作来缩短开发周期的读者。

正文:

 

  首先,介绍一下相关背景知识。

 

多输入标准(Multiple Input Criteria):

  如果一个流程具有多输入标准,那意味着该流程或许可以由多种输入启动。比如某流程具有2个输入标准,那可能出现两种情况。

  情况一:两个输入标准都可以启动该流程。一个典型例子是某机票代理公司的机票预定流程,客户可以通过输入一个手机号开始一个预定流程,也可以通过一个账号/密码启动一个预定流程。

  情况二:两个输入标准只有一个可以启动流程,另外一个可以配合或者监控被启动流程实例的运行。一个典型的例子就是某信用卡申请及进度查询流程,客户可以通过提交申请单开始一个流程实例,之后,该客户就可以通过申请号去查询流程实例的运行进度。

 

相关集(Correlation sets)

  同一个流程在运行时可以启动多个实例,相关集可以唯一标识一个流程的实例。在上面所说的信用卡流程中,申请号就可以被封装成一个相关集,用以在运行时识别所需要访问的流程实例。在Modeler中可以在“属性视图”(Attributes View)中的“输入逻辑”(Input Logic)选项卡中找到设置相关集的地方。在WID中,选择一个Receive或者Pick,可以在“属性视图”中的“相关集”(Correlation)选项卡中看到相关信息。

 

输入标准及相关集在Modeler和WID间的映射关系

  Modeler中的多输入标准WID导出时将映射成一个Pick或者多个Receive活动;同时,一些空的相关集将被生成。(这些相关集都是需要在WID中进一步实现的才能部署的,这也是为什么多输入标准的流程不能直接部署的主要原因之一。)

  针对流程的具体设置,WID到处映射的处理原则是:

  一, 如果Modeler流程没有设置输入标准的相关集属性(Correlation),每个输入标准将被映射成Pick元素中的一个OnMessage construct。

  二,如果有一个或者多个输入标准设置了相关集属性(Correlation),并且“If no instance satisfy the condition”被设成“Create a new instance”(如图1),那么,每个输入标准将被映射成一个Receive活动,“Create a new process instance if one does not already exist”将是“Yes” (如图2),相关集的“Initiation”将是“Yes” (如图3)。

                  (图 1)

                       (图 2)

                        (图 3)

  三, 如果有一个或者多个输入标准设置了相关集属性(Correlation),并且“If no instance satisfy the condition”被设成“Treat as error”或者“Discard the input”,那么,每个输入标准将被映射成一个Receive活动,“Create a new process instance if one does not already exist”将是“No”,相关集的“Initiation”将是“No”。

 

下面我们将开始实现并部署这个信用卡申请及进度查询流程。

使用Modeler流程建模:

数据项创建:整个模型只有一个数据项,如图:

 

流程创建: 如下图,该流程有两个输入标准,一个信用卡申请的输入标准,一个是进度查询的输入标准。上面的分支用于处理信用卡申请,有3个人工任务,4个Data Map。

  1.   信用卡申请流程开始,Data map将进度设置成“Apply Started”,并写入Repository。

  2.   客户信息校验,Data map将进度设置成“Verification Completed”,并写入Repository。

  3.   客户信用评估,Data map将进度设置成“Evaluation Completed”, 并写入Repository。

  4.   信用申请收尾工作,Data map将进度设置成“Apply Succeed”, 并写入Repository。

下面的分支用于进度查询:

  5.   活动“Send Apply Status to Client”将把申请进度打印出来。

  6.   在申请的进度还不是“Apply Succeed”之前,查询分支都将“返回”,用户可以再次查询。条件表达式如下图。

 

输入/输出标准设置:如图6,图7,图8所示

                                    (图 6)

                               (图 7)

                                    (图 8)

 

设置活动“Send Apply Status to Client”的实现方式:

-〉选择活动“Send Apply Status to Client”,

-〉选择“Technical Attributes”视图,打开“Implementation”业

-〉在“实现方式(Implementation Type)”中选“Java”

 

导出 PI文件, 并导入到WID中以实现。

打开BPEL视图。其中1和2是由两个输入标准导出的Receive活动。

     

 

“Problems”视图里面有两个错误:

 

 

 

消除这两个错误:

 

1.   消除错误1。

-〉选择靠上面的“CreditCardProcess”Receive活动

-〉选择“属性(Properties)”视图,选择“Correlation”选项卡

-〉为“Initiation”选择“Yes”

-> 保存

 

2.   消除错误2。创建一个Correlation Property。

-〉点击“Correlation Properties”旁边的“+”

-〉对话框中,在“Name”中输入“ApplyID”,选择“string”为数据类型

-〉保存

 

 

3.   添加4个“PropertyAlias”。

 

 

 

 

 

 

4.   为相关集选择已创建的相关集属性(Correlation Property)。

 

5.   我们需要稍微调整一下卡进度查询分支的顺序,即把Receive 2 移到和Back link相连,使得客户不至于只能查询一次。

 

 

6.   消除新出现的错误

 

 

 

7. 实现任务“SendApplyStatustoClient”:

打开Java Usages "SendApplyStatustoClientImpl",添加如下代码:

public java.lang.String InputCriterion(commonj.sdo.DataObject Input2, java.lang.String Input) 

{  String status =  Input2.getString("Status");

     String applyid = Input;

     System.out.println("***********************************************************");

     System.out.println("*The status of the application with ID="+applyid+" is <<"+status+">>");

     System.out.println("***********************************************************");

     return status;

 }

 

 

通过UTE部署

-〉切换到“Servers”视图

-〉右击“Websphere Process Server 62”,选择“Add and Remove Projects…”

-〉点击“Add All”

-〉点击“Finish”

 

 

 

 

通过BPC测试

1.      登陆bpc:  https://localhost:9443/bpc/

2.      启动第一个信用卡申请流程

-〉点击“Process Template”

-> 选上“CreditCardProcess”,点击“Start Instance”

-> 填充表单,提交(注意:ApplyID为“8888”)

 

 

 

 

3.     启动第二个信用卡申请流程

-〉点击“Process Template”

-〉选上“CreditCardProcess”,点击“Start Instance”

-〉填充表单,提交(注意:ApplyID为“9999”)

 

 

4.      处理第一个申请请求(Client Verification)

-〉点击”My To-dos”, 选择“Activated”时间较早的一个任务(也就是第一个申请请求)

-〉点击“Work On”

-〉点击“Complete”

 

 

5.      继续处理第一个申请请求(Evaluation client)

-〉点击”My To-dos”, 选择“Evaluation client”任务

-〉点击“Work On”

-〉点击“Complete”

 

 我们可以知道,到目前为止,第一个申请的状态是“Evaluation Completed”,第二个申请的状态是“Apply Started”

 

6.      查询第一个申请的状态

-〉点击“Started By Me”

-〉点击“apply1”

-〉打开“Waiting Operations”

-〉点击“QueryApplyStatus”

-〉填入申请ID“8888”

-〉点击“Submit”

 

 

-〉打开控制台(Console),我们将看到打印出来的信用卡申请状态

 

 

 

7.      查询第二个申请的状态

-〉点击“Started By Me”

-〉点击“apply1”

-〉打开“Waiting Operations”

-〉点击“QueryApplyStatus”

-〉填入申请ID“9999”

 

-〉打开控制台(Console),我们将看到打印出来的信用卡申请状态

 

 

p1.jpg

p2.jpg

p3.jpg

p4.jpg

CreditCardApply1.jpg

Snap10.jpg

Snap7.jpg

Snap8.jpg

Snap9.jpg

p5.jpg

Snap12.jpg

Snap14.jpg

Snap16.jpg

Snap23.jpg

Snap24.jpg

Snap25.jpg

Snap26.jpg

Snap27.jpg

Snap30.jpg

Snap31.jpg

Snap32.jpg

Snap33.jpg

Snap34.jpg

Snap39.jpg

Snap42.jpg

Snap45.jpg

Snap48.jpg

Snap50.jpg

Snap51.jpg

Snap52.jpg

Snap53.jpg

Snap55.jpg

Snap57.jpg

Snap60.jpg

Snap62.jpg

Snap63.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/45371/viewspace-606358/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-05-07

  • 博文量
    1
  • 访问量
    2492