engine.process(); 获取实例服务
engine.order(); 获取任务服务
engine.task(); 获取查询服务
engine.query(); 获取管理服务
engine.manager(); 启动流程
流程实例由引擎API的startInstance......方法完成,方法的参数一般为流程定义的id或者是name、version。
根据流程定义id启动实例 engine.startInstanceById(String id); engine.startInstanceById(String id, String operator); engine.startInstanceById(String id, String operator, Map
执行任务
执行任务由引擎API的executeTask......方法完成,方法的参数一般为任务的id,操作人operator,变量数据args。
engine.executeTask(String taskId); engine.executeTask(String taskId, String operator); engine.executeTask(String taskId, String operator, Map
驳回、任意跳转任务
任务驳回有两种场景:驳回至上一步;驳回至任意节点。
engine.executeAndJumpTask(String taskId, String operator, Map
?
nodeName为空时,则驳回至上一步,不需要传递参与者数据
? ?
nodeName不为空,则表示任意跳转,此时需要传递参与者数据。
?
创建自由任务
engine.createFreeTask(String orderId, String operator, Map
流程定义服务作为工作流平台中最频繁调用的服务,并且流程定义是业务流程的静态逻辑数据,所以一般使用缓存,以减少数据库io访问次数。
snaker在设计流程定义服务时,通过实现缓存管理器包装接口来实现流程定义的缓存。默认使用内存缓存方式,同时也支持ehcache缓存框架。只需要依赖snaker-ehcache包即可。
org.snaker.engine.IProcessService org.snaker.engine.cache.CacheManagerAware
发布 重新发布 卸载 更新类别 查询接口 快速入门章节的流程定义已经介绍如何通过设计器创建新的流程,本章节主要介绍对已经创建好的流程定义,如何操作。 流程发布统一使用InputStream输入流作为流程定义的数据。可借助
org.snaker.engine.helper.StreamHelper 流帮助类完成,方法如下定义:
InputStream的方法名称 getStreamFromString getStreamFromFile getStreamFromClasspath getStreamFromUrl 描述 根据字符串获取输入流 根据文件对象获取输入流 根据类路径下的资源文件名称获取输入流 根据url远程资源获取输入流 注意:snaker的流程定义编码格式统一使用UTF-8 发布 ?
deploy(InputStream inputStream) engine.process().deploy(StreamHelper .getStreamFromClasspath(\发布后的版本号默认为0,如果存在同名的流程定义,则新的流程定义版本号依次加1,并不会影响其它已经运行的流程实例。
重新发布 ?
redeploy(String processId, InputStream inputStream) engine.process().redeploy(processId, StreamHelper .getStreamFromClasspath(\重新发布流程会影响已经运行的流程实例
卸载 ?
undeploy(String processId) engine.process().undeploy(processId) 卸载流程只会更新状态state值,不会删除物理数据
更新类别 ?
updateType(String processId, String type) engine.process().updateType(processId, type) 更新类别主要用于业务流程较多,并且存在分类情况时使用
查询接口 Process getProcessById(String id) Process getProcessByName(String name) Process getProcessByVersion(String name, Integer version) public List
通过流程定义章节的查询接口可以轻松获取到Process实体对象,该实体中的model属性就是流程图的对象表达形式了,可通过getModel方法获取ProcessModel。
process.getModel()
流程模型 流程模型 Start节点 name获取节点 类型获取所有节点 所有任务节点 后续一级节点集合 org.snaker.engine.model.ProcessModel 流程模型、流程定义的XML文件、流程图三种表现形式可互相转换,流程模型对象不仅包含了自身的属性(如:
name displayName instanceUrl expireTime instanceNoClass ),同时也包含了所有节点模型对象以及它们的关系。
Start节点 org.snaker.engine.model.StartModel Start节点作为流程启动的入口,只有输出路由,其输入路由为空,可通过getInputs方法进行验证
name获取节点 NodeModel getNode(String nodeName) 根据节点的name属性获取到节点模型对象
类型获取所有节点 List
List