JBPM4.3知识
activity是一个节点,task是一个任务,只有相对于TaskActivity时,才会出现一个task对应一个activity的情况。
实际上task只是为了与流程外界交互的媒介。并不属于流程引擎的一部分。
?
jBPM4里的限制是,每个execution只能对应一个subProcess,只能对应一个task。如果你动态生成多个subProcess,难以挂在同一个execution。
如果需要同时发起多个子流程,需要参考fork/join的形式,先用分支活动创建多个execution分支,然后为每个execution创建一个subProcess
?
?
state用于自动流程
实例:
? 我的项目审批流程,在执行到一个步骤后,需要调去外部系统的审计信息,根据审计信息的结果决定下步流程的流程(审计不通过,流程可能直接终止。)
? 此时,流程需要等待外部系统发送数据,然后才能继续执行。为了实现这种场景,就可以先使用java活动,向外部系统接口发送一个报文,报文中包含 executionid,然后进入state等待状态。
? 外部系统接收到此报文后,既开始进行处理,当处理完成后,既根据报文中的 executionId回调流程系统提供的接口,流程既可以继续向下流转了。
task用于需要外部操作人参与的流程。
实例与上述近似,只是将外部系统换为一个系统操作员,流程运行到TaskActivity会暂停,并向目标操作人发送一条待办任务,当操作人员完成任务后,对应流程就会被激活并自动向下运行。
?