作者:empty 出版社:empty |
常用操作1、流程定义部署如何使用流程设计器定义流程请参考三、流程设计器。部署的相关方法包含:deploy、redeploy, undeploy, 分别表示流程定义的部署、重新部署、卸载。部署时统一使用InputStream输入流作为流程定义的数据。可借助org.snake r.engine.helper.Stream Helper帮助类完成, 方法如下定义InputStream的方法名称描述get Stream From String根据字符串获取输入流get Stream From File根据文件对象获取输入流get Stream From Classpath根据类路径下的资源文件名称获取输入流get Stream From Url根据Url远程资源获取输入流>deployengine.process() .deploy(Stream Helper.部署相同的流程定义,会产生版本号依次加1的新的流程定义数据。但是不会对同名的流程实例产生影响。
可根据流程定义的id或者名称启动流程实例。如果相同的流程名称存在不同的版本,井使用名称启动实例时,会按照最新的版本来启动,其它低版本运行中的流程实例不会受到由name启动实例的参数为:流程定义name、版本号version、操作人operator、参get Stream From cLasspath( test/task/simple/process.snake r ) ) ;>redeployengine.process() .redeploy(processId, Stre an Helper,由id启动实例的参数为:流程定义id、操作人operator, 参数列表argsgetS treo nF row CLasspath( test/task/sin ple/process.snake r“) ) ;重新部署流程会影响当前流程实例的执行>undeployengine, process() .undeploy(processId) ;卸载流程只会更新状态state值, 不会物理除数据.
2、启动流程实例影响,这样就允许流程的多个版本同时运行。>根据id启动实例engine.start Instance By Id(processid) ;engine.start Instance By Id(processId, “admin ) ;engine.start Instance By Id(processId, “admin , args) ;>根据name启动实例engine.start Instance By Name( simple“) ;engine.start Instance By Name( simple , 8) ;engine.start Instance By Nane( simple , 8, “adn in ) ;engine, start Instance By Nane( simple , 8, T admin , args) ;数列表args流程实例的启动会在以下的表中产生数据:wf_order.wf_hist_order
3、执行任务执行任务的处理逻辑包括两部分:完成当前任务按照流程定义产生新的任务执行任务的api如下:engine.execute Task(task Id) ;engine, execute Task(task Id, admin ) ;engine.execute Task(task Id, admin , args) ;执行任务的参数为:任务号task Id、操作人operator、参数列表arg 5
4、转派任务任务转派的业务逻辑是结束当前任务, 并创建新的任务给转派人.其调用的api为:engine.task() .create New Task(task.getId() , e, test ) ;engine.task() .complete(task.getId() ) ;create New Task方法中的第二个参数“证务类型“表示创建主办, 协办任务、5、撤回任务根据历史任务id,撤回由该历史任务派发的所有活动任务,如果无活动任务,则不允许撤回.抛出Snake r Exception异常engine.task() .with dr an Task(task Id, “admin ) ;6、提取任务任务提取一般发生在参与者为部门、角色等组的情况下,该组的某位成员提取任务后,其它成员无法处理任务.engine.task() .take(task Id, admin ) ;7、任务驳回任务驳回有多种场景,常见的有:驳回上一步、驳回到任意节点engine.execute And Jun p Task(String task Id, String operator, Map String, Object>args,String node Nane)方法的参数nodeName决定驳回的方式:nodeName为空(null或空字符) , 则驳回至上一步(不允许驳回至fork、join、su process以及会签任务)nodeName非空, 则根据nodeName确定跳转的目标节点, 该实现原理与其它流程在engine.execute And Jump Task方法已经支持, 参考任务驳回引擎思路一致、通过动态创建连接完成跳转。8、自由流程Snake r支持两种自由流:已经定义流转节点,由用户随意在节点之间跳转未定义流转节点,即流程定义没有流程模型的情况,由用户随意创建自定义任务(任务名称、任务参与者、任务关联的表单等)Task Model tml-new Task Model() ;tni.setName(“task 1 ) ;tml.set Display Nane(“任务1*) ;List Task>tasks=null;tasks=engine.create Free Task(orderId, “1 , args, tm 1) ;for(Task task:tasks) {自由任务需要调用engine.task() .complete方法结束任务。并且需要手动结束流程实例。engine.task() .complete(task.getId() , “1 , null) ;强制终止实例先结束该实例所有活动的任务,最后结束流程实例。engine, order() .complete(order, getId() ) ;自由流程存在强制终止的情况,此时需要调用void terminate(String orderId) ;void terminate(String orderId, String operator) ;