Activiti 的一些业务处理Service

2020-02-23  本文已影响0人  MaJiT

1.业务处理Service

1.RepositoryService:提供一系列管理流程定义和流程部署的API。
2.RuntimeService:在流程运行时对流程实例进行管理与控制。
3.TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务分本任务等。
4.IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户以及它们之间的关系。
5.ManagementService:提供对流程引擎进行管理和维护的服务。
6.HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
7.DynamicBpmnService:使用该服务,可以不需要重新部署流程模型,就可以实现对流程模型的部分修改。

1.1流程引擎

ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
...
engine.close();

1.2流程部署

        // 存储服务
        RepositoryService rs = engine.getRepositoryService();

1.3流程启动

        // 运行时服务
        RuntimeService runService = engine.getRuntimeService();

1.4任务处理

        // 任务服务
        TaskService taskService = engine.getTaskService();

2.流程部署

2.1 原文件形式部署方式

repositoryService.createDeployment().addClasspathResource("first.bpmn").deploy();

2.2 压缩包ZIP形式部署

        DeploymentBuilder builder = repositoryService.createDeployment();
        FileInputStream fis = new FileInputStream(new File("resource/datas.zip"));
        ZipInputStream zis = new ZipInputStream(fis);
        builder.addZipInputStream(zis).deploy();

注意:这一步在数据库中将操作三张表:

a)act_re_deployment 存放流程定义的显示名和部署时间,每部署一次增加一条记录

b)act_re_procdef 存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。

c)act_ge_bytearray 存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。

3流程启动

//返回一个流程实例对象
ProcessInstance pi = runService.startProcessInstanceByKey("myProcess");

注意:操作数据库的act_ru_execution表,如果是用户任务节点,同时也会在act_ru_task添加一条记录

4.任务处理

4.1根据流程实例对象查询任务并完成任务

        //第一种方法 usertask的时候使用complete
        Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
        taskService.complete(task.getId());
        //第二种方法 receivetask时使用trigger
        // 查当前的子执行流
        Execution exe = runService.createExecutionQuery() 
                          .processInstanceId(pi.getId()).onlyChildExecutions()
                          .singleResult();
        // 让它往前走
        runService.trigger(exe.getId());
上一篇下一篇

猜你喜欢

热点阅读