在Workspace的项目中,本文项目名称为:Training_WSApp。在项目中根目录下建立BPM文件夹,然后鼠标右键,在弹出菜单中选择New ->Business Process Model组件,进行流程建模开发。
图1
图2
在Business Process Model工作台上,图形化、拖拽绘制流程图。
图3
(1)为BPM流程配置表单(新建)
图4
注意:发布表单
图5
在Business Process Model界面中,在其左下角选择Workspace
图6
拖拽表单界面BPMTestInterface到各个活动环节中,如下图所示。
图7
在拖拽表单过程中,系统将询问是否替换环节名称为表单名称,在此不做替换,直接点击“否”按钮即可。
图8
(2)配置流程参数传递:Message
活动环节上有入口、出口参数,在活动环节上把出入参与与表单上的数据项相关联。
图9
(2.1)创建Message Map
图10
(2.2)先创建Message,再创建其Element
图11
(2.3)首先,设置启动节点传入Message
图12
选择具体Message
图13
(2.4)环节入口参(Pre Assignments)
Message输入、输出从Source到Target,选中到Assignment。
图14
结果如下:
图15
(2.5)环节出口,出参(Post Assignments),处理提交后,出口把资源传到流程消息Message
领导审批界面中,ns2:***Model_OP,为Output,把界面的值传到流程的消息Message中。
图16
注:所有的流程环节通常都要设置传递参数Message,并其上面所承载表单关键数据项目对应。
图17
(1)单步跟踪调试界面
图18
在项目中,使用统一的Message定义,方法如下:
(1)导出已经定义的Message定义XML Schema
图19
(2)粘出Show XML内容
(3)在其他BPM里导入建立Message
(4)导入XML Schema
图20
菱形的环节是判断节点,用于流程分支处理,如下图所示的分支,领导同意走采购员采购环节,否则走重新修改申请单环节,再审批。
图21
如上图21所示,选择输入条件:Condition
图22
通过“Replace Content With Fixed Value”设置,传递固定值/特定值。
图23
注:流程实例管理,Process Instance Manager中需要流程描述要清晰些,方便使用流程实例管理。
(1)通过XForm界面启动流程
新建TestStartBPMXForm,增加“启动流程”按钮。
图24
图25
如上图25所示,新建model(Manager Models中,选择“+”),model名称为StartBPMModel。
图26
(注:上图中Business Object有误,应为StartBPMModel)
(2)写按钮处理脚本代码
function start_Click(eventObject)
{
var req = StartBPM.XMLDocument;
cordys.setNodeText(req,".//*[local-name()='goodsName']",goodsName.getValue());
cordys.setNodeText(req,".//*[local-name()='counts']",counts.getValue());
cordys.setNodeText(req,".//*[local-name()='price']",price.getValue());
StartBPMModel.setMethodRequest(req);
StartBPMModel.reset();
var resp=StartBPMModel.getData();
var instanceid=cordys.getNodeText(resp,".//*[local-name()='instance_id']");
InstanceID.setValue(instanceid);
}
(3)设置流程实例Model名称
在WorkSpace中,选中BPM文件夹下BPMTest2,鼠标右键菜单,选择属性。获取Soap
图27
使用Qualified Name内容,把“.”换成“/”。如下图28所示,并在界面底部切换Tab页面到XML页面。
图28
<xml>
<xml xmlns="" id="StartBPMModel">
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<ExecuteProcess xmlns="http://schemas.cordys.com/bpm/execution/1.0" type="">
<type>definition</type>
<receiver>BPM/BPMTest2</receiver>
<message>
<Test xmlns="http://schemas.cordys.com/default">
<goodsName xmlns="http://schemas.cordys.com/default">钢笔</goodsName>
<counts xmlns="http://schemas.cordys.com/default">10</counts>
<price xmlns="http://schemas.cordys.com/default">8</price>
</Test>
</message>
</ExecuteProcess>
</SOAP:Body>
</SOAP:Envelope>
</xml>
</xml>
上面代码中<receiver>BPM/BPMTest2</receiver>为流程Soap请求名称。在Process Instance Manager监控管理中可见此流程实例。
图28
图29
由于时间有限,不足之处,欢迎讨论反馈。