工作流Activiti的学习总结(九)Activiti手工执行的应用(ReceiveTask实现方式)
?工作流模拟的业务情景如下:
????????? ?1.用户到银行转账业务
?????????? 2.银行工作人员查询用户余额
?????????? 3.银行工作人员帮助用户转账
?手工触发执行是指,执行到流程中某个个结点后流程暂时停止运行,直到收到外部发送的信号
? 以后,才会继续向前推进,这样情况可以更加精细地控制流程。?
针对用户手动执行的任务可以采用手工触发执行?
????? ?通过<receiveTask>和<userTask>元素都可以实现流程的手工触发执行。
?
本文讲解ReceiveTask方式实现:
配置如下:
?
流程配置如下:
?
?
?
代码实现如下:
?
?
?
?
?
?
?
采用官方推荐Junit4实现测试如下:
2011-12-18 13:08:45 org.activiti.engine.impl.ProcessEngineImpl <init>信息: ProcessEngine default created2011-12-18 13:08:45 org.activiti.engine.impl.jobexecutor.JobAcquisitionThread run信息: JobAcquisitionThread starting to acquire jobs2011-12-18 13:08:45 org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy信息: Processing resource com/easyway/workflow/activiti/BankUserTaskActiviti.bpmn20.xml2011-12-18 13:08:45 org.activiti.engine.impl.bpmn.parser.BpmnParse parseDefinitionsAttributes信息: XMLSchema currently not supported as typeLanguage2011-12-18 13:08:45 org.activiti.engine.impl.bpmn.parser.BpmnParse parseDefinitionsAttributes信息: XPath currently not supported as expressionLanguage2011-12-18 13:08:46 com.easyway.workflow.activiti.CheckBankAccountMoneyTask execute信息: 根据输入参数,开始检查银行账户余额........in : {protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, merchant=ICBC, maxTransCount=1000000, in={}, out={}}deploymentId=BankUserTask:1:13132011-12-18 13:08:46 com.easyway.workflow.activiti.CheckMerchantMoneyTask execute信息: 正在转账中.........in : {protocol=UM32, repository=10.10.38.99:/home/shirdrn/repository, merchant=ICBC, maxTransCount=1000000, type=receiveTask, in={}, out={}}?