持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情
Activiti的使用
上一篇学到了Activiti的变量,接下来看看Activiti的其他内容。
Activiti的瞬时变量
瞬时变量和普通变量一样,但不会持久化。通常,瞬时变量用于比较特殊的场景(即,如果不知道使用什么变量,通常用不同的过程变量)。
以下适用于瞬时变量:
- 对于瞬时变量,不会存储任何历史记录。
- 与常规变量一样,瞬时变量在设置时放在顶层的父变量上。这意味着在执行时设置变量时,瞬时变量实际上存储在流程实例执行中。与常规变量一样,如果想在特定执行或任务上设置变量,则存在方法的局部变量。
- 临时变量只能在当前等待状态中访问。之后,就会被清除。等待状态在这里是指流程实例中的点,在该点上,等待状态被持久化到数据存储中。请注意,在此定义中,异步活动也是等待状态!
- 瞬时变量只能由
setTransientVariable(key,value)设置,但调用getVariable(name)时也会返回瞬时变量(也存在一个getTransientVariable(name),它只检查瞬时变量)。这样做的原因是为了简化表达式的编写,并且使用变量的现有逻辑适用于这两种类型。 - 临时变量会对同名的持久变量进行覆盖处理。这意味着,当在流程实例上同时设置持久变量和瞬时变量,并且使用
getVariable("someVariable")时,将返回瞬时变量值。 在大多数暴露普通变量的地方,可以获取和/或设置瞬时变量: - 在JavaDelegate实现中的DelegateExecution
- ExecutionListener实现中的DelegateExecution和TaskListener实现中的DelegateTask
- 通过execution对象在脚本中执行任务
- 通过运行时服务启动流程实例时
- 完成任务时
- 调用
Service.trigger方法 瞬时变量API如下:
void setTransientVariable(String variableName, Object variableValue);
void setTransientVariableLocal(String variableName, Object variableValue);
void setTransientVariables(Map<String, Object> transientVariables);
void setTransientVariablesLocal(Map<String, Object> transientVariables);
Object getTransientVariable(String variableName);
Object getTransientVariableLocal(String variableName);
Map<String, Object> getTransientVariables();
Map<String, Object> getTransientVariablesLocal();
void removeTransientVariable(String variableName);
void removeTransientVariableLocal(String variableName);