流程定义

流程定义服务作为工作流平台中最频繁调用的服务,并且流程定义是业务流程的静态逻辑数据,所以一般使用缓存,以减少数据库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)

results matching ""

    No results matching ""