Appearance
RuntimeService
主要用于查询、操作运行中数据。此处只列举群里最常问几个api,其他参考插件WfProcess服务类。
启动流程
根据流程定义id、流程定义key等条件发起流程。
java
// 启动前需指定流程发起人 - 必须
identityService.setAuthenticatedUserId(userId);
// 根据不同参数启动
runtimeService.startProcessInstanceByXXX
或使用builder自定义条件
java
// 自行组合api,不认识英文找个翻译或辞职
runtimeService.createProcessInstanceBuilder()
...
.start();
查询流程
java
// 自行组合api,不认识英文找个翻译或参考常见api
runtimeService.createProcessInstanceQuery()
...
获取流程发起人
java
// 上一步获取的ProcessInstance
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
...
.singleResult();
String userId = processInstance.getStartUserId();
查询变量
条件更加详细,不只局限于某个流程
java
// 自行组合api,不认识英文找个翻译或参考常见api
runtimeService.createVariableInstanceQuery()
...
获取流程变量
java
// 获取实例流程中全部变量
Map<String, Object> variables = runtimeService.getVariables(String processInsId);
// 获取流程实例中某个变量
Object variable = runtimeService.getVariable(String processInsId, String variableName);
T variable = runtimeService.getVariable(String processInsId, String variableName, Class<T> variableClass);
改变流程变量
java
// 改变某一变量
runtimeService.setVariable(String processInsId, String variableName, Object value);
// 改变某些变量,相同变量名会覆盖
runtimeService.setVariables(String processInsId, Map<String, ? extends Object> variables);
DANGER
RuntimeService、TaskService只能对【运行中】数据查询、操作。当流程结束后【运行中】数据会删除!此时再用这俩service会报空指针或流程不存在等异常。