// 它涉及启动流程定义的新流程实例。
RuntimeService runtimeService = processEngine.getRuntimeService();
// RepositoryService 可能是使用 Flowable 引擎时需要的第一个服务。
RepositoryService repositoryService = processEngine.getRepositoryService();
// 围绕任务的所有内容都分组在 TaskService 中
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();
Query API 查询接口
从引擎查询数据有两种方式:查询API和本机查询。查询 API 允许您使用流畅的 API 编写完全类型安全的查询。您可以向查询添加各种条件(所有这些条件都作为逻辑 AND 一起应用)和精确的一个排序。以下代码显示了一个示例:
// 指定查询条件,仅返回分配给 "kermit" 用户的任务
//指定查询条件,仅返回流程变量 "orderId" 的值为 "0815" 的任务。这表示只查询具有特定订单ID的任务。
//按照任务的到期日期(Due Date)升序
List<Task> tasks = taskService.createTaskQuery()
.taskAssignee("kermit")
.processVariableValueEquals("orderId", "0815")
.orderByDueDate().asc()
.list();
Variables 变量
每个流程实例都需要并使用数据来执行其组成的步骤。在 Flowable 中,这些数据称为变量,存储在数据库中。变量可以用在表达式中(例如,在独占网关中选择正确的外出顺序流),在调用外部服务时的Java服务任务中(例如,提供服务调用的输入或存储服务调用的结果)等等。在。
流程实例可以具有变量(称为流程变量),而且执行(是指向流程活动位置的特定指针)和用户任务也可以具有变量。流程实例可以具有任意数量的变量。每个变量都存储在 ACT_RU_VARIABLE
数据库表中的一行中。
所有 startProcessInstanceXXX 方法都有一个可选参数,用于在创建和启动流程实例时提供变量。例如,从运行时服务:
RuntimeService runtimeService = processEngine.getRuntimeService();
/*键是稍后将用于检索变量的标识符*/
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("employee", employee);
variables.put("nrOfHolidays", nrOfHolidays);
variables.put("description", description);
/*当流程实例启动时,将创建一个执行并将其放入启动事件中。从那里开始,此执行遵循用户任务的序列流以供经理批准并执行用户任务行为。
此行为将在数据库中创建一个任务,稍后可以使用查询找到该任务。用户任务处于等待状态,引擎将停止进一步执行任何操作,返回 API 调用。*/
ProcessInstance processInstance =
runtimeService.startProcessInstanceByKey("holidayRequest", variables);//<!-- 使用密钥启动流程 -->
可以在流程执行期间添加变量。例如,(运行时服务):
void setVariable(String executionId, String variableName, Object value);
void setVariableLocal(String executionId, String variableName, Object value);
void setVariables(String executionId, Map<String, ? extends Object> variables);
void setVariablesLocal(String executionId, Map<String, ? extends Object> variables);
还可以检索变量,如下所示。请注意,TaskService 上也存在类似的方法。这意味着任务(如执行)可以具有仅在任务持续时间内“活动”的局部变量。
Map<String, Object> getVariables(String executionId);
Map<String, Object> getVariablesLocal(String executionId);
Map<String, Object> getVariables(String executionId, Collection<String> variableNames);
Map<String, Object> getVariablesLocal(String executionId, Collection<String> variableNames);
Object getVariable(String executionId, String variableName);
<T> T getVariable(String executionId, String variableName, Class<T> variableClass);
变量通常用在 Java 委托、表达式、执行或任务侦听器、脚本等中。在这些构造中,当前执行或任务对象可用,并且可用于变量设置和/或检索。最简单的方法是:
// 获取实际的任务列表
TaskService execution = processEngine.getTaskService();
execution.getVariables();
execution.getVariables(Collection<String> variableNames);
execution.getVariable(String variableName);
execution.setVariables(Map<String, object> variables);
execution.setVariable(String variableName, Object value);
标签:Map,String,variables,executionId,使用,FlowableAPI,processEngine,变量
From: https://www.cnblogs.com/zgf123/p/18113371