Skip to content
广告❤️成为赞助商

流程服务

流程服务包含对实例任务的核心操作相关类,控制着整个工作流的生命周期内的数据流转。

FlowLongEngine

核心类,是流程引擎的关键接口,可以获取流程的各种服务。如:流程定义服务、流程常用查询服务、流程实例服务、流程任务服务以及其他常用方法。

示例:

java
// 流程定义服务
final ProcessService processService = flowLongEngine.processService();

// 流程常用查询服务
final QueryService   queryService   = flowLongEngine.queryService();

// 流程任务服务
final TaskService    taskService    = flowLongEngine.taskService();

// 根据任务ID,创建人ID,参数列表执行任务
flowLongEngine.executeTask(flwTask.getId(), FlowCreator.of("370000197405268159" , "石勇" ), Collections.singletonMap("reason", "同意"));

// 启动流程实例(配合下方的 ProcessService)
final Map<String, Object> args           = new HashMap<String, Object>();
args.put("yg", 1);
args.put("money", 500);
args.put("fl", 1);
args.put("ftlb", 1);
FlwInstance instance = flowLongEngine.startInstanceById(processId, testCreator, args).get();

ProcessService

流程定义服务,可以使用来部署流程、卸载流程等操作。

示例:

java
// 部署流程(直接将流程定义文件放置在 resources 下即可)
Long processId = processService.deployByResource("ggfybx.json" , testCreator, false);

QueryService

流程常用查询服务,可以用来查询流程的一些相关数据。如:根据流程实例ID获取流程实例对象、根据 流程实例ID 获取当前活动任务列表、根据任务ID获取活动任务参与者数组、......

示例:

java
// 当流程节点流转到部门经理手上时,由部门经理进行审核
List<FlwTask> tasks    = queryService.getActiveTasksByInstanceId(instance.getId()).get();
FlwTask       flwTask  = tasks.stream().filter(t -> Objects.equals("部门经理" , t.getTaskName())).findFirst().get();
flowLongEngine.executeTask(flwTask.getId(), FlowCreator.of("370000197405268159" , "石勇" ), Collections.singletonMap("reason", "同意"));

// 获取当前流程实例的历史操作信息
List<FlwHisTask> hisTasks = queryService.getHisTasksByInstanceId(instance.getId()).get();
hisTasks.forEach(t -> System.out.println("---> [历史节点] 节点名称 = " + t.getTaskName() + ",创建人 = " + t.getCreateBy()));

TaskService

任务业务类接口,可以用来对流程节点做一些操作。比如:完成任务、驳回任务、任务跳转、转办任务、拿回任务、加签减签、......

示例:

java
// 审批、驳回
List<FlwTask> tasks3    = queryService.getActiveTasksByInstanceId(instance.getId()).get();
queryService.getTaskActorsByTaskId(tasks3.get(0).getId()).forEach(a -> {
    if ("汤强".equals(a.getActorName())) {
        flowLongEngine.executeTask(tasks3.get(0).getId(), FlowCreator.of(a.getActorId(), a.getActorName()), Collections.singletonMap("reason", "同意"));
    } else {
        taskService.rejectTask(tasks3.get(0), FlowCreator.of(a.getActorId(), a.getActorName()), Collections.singletonMap("rejectReason", "不同意"));
    }
});

RuntimeService

流程实例运行业务类,可以用来操作当前运行的实例,如:根据流程实例ID获取流程实例模型、向指定实例id添加全局变量数据、......

示例:

java
// 获取当前流程实例的模型
final ProcessModel processModel = flowLongEngine.runtimeService().getProcessModelByInstanceId(flwTask.getInstanceId());
System.err.println("当前流程Key = " + processModel.getKey());

// 流程实例强制终止


// 流程实例撤销(用于错误发起审批申请,发起人主动撤销)

更适合中国人的工作流引擎