技术开发 频道

建模与开发协作 缩短业务实现与部署

【IT168 专稿】    本文中,作者将使用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流程建模

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

图4

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

图5

    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、图9所示。

图7
图8
图9

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

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

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

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

图10

    导出PI文件导入WID

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

图11

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

图12

    消除这两个错误:

    1.消除错误1。

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

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

    -〉为“Initiation”选择“Yes”

    ->保存

图13

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

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

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

    -〉保存

图14

    3.添加4个“PropertyAlias”。

图15
图16
图17
图18

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

图19

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

图20

    6.消除新出现的错误。

图21
图22

    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”

图23
图24

    通过BPC测试

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

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

    -〉点击“Process Template”

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

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

图25
图26

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

    -〉点击“Process Template”

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

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

图27

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

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

    -〉点击“Work On”

    -〉点击“Complete”

图28
图29

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

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

    -〉点击“Work On”

    -〉点击“Complete”

图30

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

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

    -〉点击“Started By Me”

    -〉点击“apply1”

    -〉打开“Waiting Operations”

    -〉点击“QueryApplyStatus”

    -〉填入申请ID“8888”

    -〉点击“Submit”

图31
图32
图33

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

图34

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

    -〉点击“Started By Me”

    -〉点击“apply1”

    -〉打开“Waiting Operations”

    -〉点击“QueryApplyStatus”

    -〉填入申请ID“9999”

图35

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

图36
0
相关文章