jBPM-4.0中文开发指南-第5章 实现基本活动 - 编程入门网
通过在任务管理系统中创建一个任务入口,然后等待 到这个人完成这个任务。
一旦活动行为已经处于等待状态,然后执行会等待到调用signal方法。 执行会委派signal给 ExternalActivityBehaviour对象 分配给当前的活动。 所以活动的signal方法 会在等待期间,在执行获得一个外部触发器的时候调用。 signal方法中,响 应会传递给后面的流程执行。 比如,当一个人完成了一个任务,任务管理系统 会在执行中调用signal方 法。 一个signal可选择使用signal名字和一个参数map. 活动行为拦截signal和参数的最常用方式是 signal对应选择的外出转移,参数作为执行中的变量。但那些只是例子,它一直等到活动使用singal和它 期望的参数。 jBPM-4.0中文开发指南-第5章 实现基本活动(3)时间:2011-09-245.4. ExternalActivity实例 这里是一个简单等待状态实现的第一个例子:
execute方法调用execution.waitForSignal()。 execution.waitForSignal()的调用 会使流程执 行进入等待状态,直到一个外部触发器出现。 signal方法使用signal参数对应的转移名称 来选择转移。所以当一个执行获得一个外部触发器, signal名称被拦截,作为外部转移的名称,执行会被传播到那个转移上。 这里是从a到b有一个转移的相同的流程。 这时候,两个活动的行为都是WaitState. 外部活动实例流程 图 5.2. 外部活动实例流程
jBPM-4.0中文开发指南-第5章 实现基本活动(4)时间:2011-09-24让我们为流程定义启动一个新流程实例: ClientExecution execution = processDefinition.startProcessInstance(); 启动这个流程会执行a中的WaitState活动。 WaitState.execute会调用 ActivityExecution.waitForSignal. 所以当processDefinition.startProcessInstance()返回,执行 会一直处在a活动。 assertEquals("a", execution.getActivityName()); 然后我们提供了外部触发器,通过调用signal方法。 execution.signal(); execution.signal()会委派给当前活动。 所以在这种情况下就是a活动里的 WaitState活动。 WaitState.signal会调用 ActivityExecution.take(String transitionName)。 当我们没有提供一个 signal名称,第一个名字是null会被选中。 我们指定的a的唯一转移没有名字,所以会选中这个。 然后 这个转移指向b. 当执行到达b活动,b活动中的WaitState活动会被执行。 就像我们上面看到的,执行会 在b一直等待,这时signal会返回,离开的执行指向b活动。 assertEquals("b", execution.getActivityName()); 5.5. 基本流程执行 在下一个例子里,我们会结合自动活动和等待状态。 这里例子构建了贷款审批流程,使用WaitState 和Display活动,我们刚刚创建的。 贷款流程的图形看起来像这样: 图 5.3. 贷款流程 使用Java构建流程图形是很乏味的事情,因为你必须在局部变量中跟踪所有的引用。 为了解决这个问 题,流程虚拟机提供了一个P |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |