流程定义
流程定义服务作为工作流平台中最频繁调用的服务,并且流程定义是业务流程的静态逻辑数据,所以一般使用缓存,以减少数据库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("flows/leave.snaker")
发布后的版本号默认为0,如果存在同名的流程定义,则新的流程定义版本号依次加1,并不会影响其它已经运行的流程实例。
重新发布
redeploy(String processId, InputStream inputStream)
engine.process().redeploy(processId, StreamHelper.getStreamFromClasspath("flows/leave.snaker")
重新发布流程会影响已经运行的流程实例
卸载
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> getProcesss(QueryFilter filter)
public List<Process> getProcesss(Page<Process> page, QueryFilter filter)