流程变量
数据存储
设计方法
Snaker的流程变量
变量数据获取
流程引擎在设计的过程中,需要考虑数据的分类存储
数据存储
业务数据
一般保存在业务表中
流程数据
一般保存在流程引擎的表中,如`wf_process` `wf_order` `wf_task`等
关联数据
流程变量保存的就是关联数据
设计方法
变量表
目前主流的流程引擎如Jbpm、Activiti都常用变量表方式,其优点是支持丰富的变量类型,变量值无长度限制,支持查询。缺点是很多使用者过于依赖变量表,将大部分业务数据保存在变量表中,数据过多时性能急剧下降。
变量字段
变量字段方式适用于中小型流程平台,只支持少量字段的存储,强制用户适用业务表保存业务数据,流程变量仅保存少量的关联数据。变量数据随实例、任务记录一次查询即可获得。但是缺点也很明显,不支持关联数据的查询,如果需要查询,只能将关联数据在业务表重复保存一份。
snaker的流程变量
snaker使用变量字段保存关联数据的方式,并支持在运行时动态添加全局变量数据
全局变量
全局变量的作用域是流程实例从启动至结束的所有过程
局部变量
局部变量的作用域是任务执行的单个过程
动态添加全局变量数据,可通过addVariable方法完成。
engine.order().addVariable(String orderId, Map<String, Object> args)
变量数据获取
变量数据取可通过实例对象OrderHistoryOrder
、任务对象TaskHistoryTask
的getVariableMap()
方法获取