Skip to content

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会报空指针或流程不存在等异常。