电脑
intelliJ idea,jdk1.8,mysql
现在我们继续在springboot项目(二)的基础上,再进行集成activity6.0。
首先我们需要引入activity的jar包,所以需要先在pom.xml文件中添加:
需要在SpringbootProjectApplication启动类中加入@SpringBootApplication(exclude = SecurityAutoConfiguration.class)注释,不然会报java.lang.ArrayStoreException异常。还有需要在resources资源文件中添加processes文件夹不然会报class path resource [processes/] cannot be resolved to URL because it does not exist
按上边的步骤完成启动成功后如下图;数据库中的流程引擎相关表也会自动帮你建好。
完成以上步骤初步完成springboot项目集成activity6.0.0,接下来测试集成的activity6.0.0的使用情况。
首先我们需要创建一个流程图文件First.bpmn,如果idea打开后,没有如下图所示的工具栏,则需要下载插件actiBPM。
创建简单的流程图如下图所示;流程图需要开始和结束,中间引入两个UserTask任务节点,点击流程图的空白处,编辑流程图的唯一固定ID。
测试代码如下: import org.activiti.engine.ProcessEngine; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; /** * Created by 30721 on 2019/7/7. */ @RunWith(SpringRunner.class) @SpringBootTest public class ActivityTest { @Autowired private ProcessEngine engine; @Autowired private RuntimeService runtimeService; @Autowired private RepositoryService repositoryService; @Autowired private TaskService taskService; @Test public void test() { RepositoryService repositoryService = engine.getRepositoryService(); // 部署流程文件 repositoryService.createDeployment() .addClasspathResource('processes/First.bpmn').deploy(); // 启动流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey('process1'); // 查询第一个任务 Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println('当前节点名称' + task.getName()); // 完成第一个任务 taskService.complete(task.getId()); task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println('流程结束后,查找任务:' + task); engine.close(); System.out.println('================================================'); } }
运行结果如下图:第一个节点是Expense Request,第一个节点同意后,流程转到第二个节点了Handle Request。流程没有问题,集成的activity能够正常使用。
activity中有很多事件,这边不多做赘述,需要自己去学习。