本文为翻译文章,如有不合理处请查看原文https://hub.alfresco.com/t5/alfresco-process-services/activiti-7-deep-dive-series-using-the-core-libraries/ba-p/288484
简介
Activiti 7是Alfresco经过实战考验的Activiti工作流引擎的演变,完全被采用在云环境中运行。 它是根据Cloud Native应用程序概念构建的,与之前的Activiti版本在架构方面有所不同。 我们在之前的文章中还有一个新的Activiti Modeler。在本文中,我们将使用新的Activiti 7 Process Runtime和Task Runtime Java API来试用Activiti 7流程引擎。 我们将从Spring Boot 2应用程序执行此操作。 我们需要的所有Activiti 7 Java工件都可以在Alfresco的Maven Repository(Nexus)中找到。Spring Boot应用程序还将包含Web组件(即Spring MVC),因此我们可以创建一个小的ReST API来用于启动进程以及与进程和任务交互。 Activiti 7提供了一个ReST API,但是当我们只使用核心库时,我们不打算在本节中使用它。 在这里,我们只创建自己的简单ReST API,它将使用Activiti 7 Java库(即Process Runtime和Task Runtime)。这个新的API旨在提供Cloud Native方法的明确途径。 它们还包括用户的安全和身份管理。新API还简化了一些常见用例。在本文中,我们将使用Activiti 7 Core库实际构建一个简单的业务流程管理(BPM)应用程序/解决方案。 这通常不是你要做的事情,但能够理解Activiti 7提供的API是一个很好的练习。
Activiti 7 Deep Dive文章系列
本文是详细介绍Activiti 7的系列文章的一部分,应按列出的顺序阅读。
- 部署和运行业务流程
- 使用Modeler设计业务流程
- 构建、部署和运行自定义业务流程
- 使用核心库-本文
前期条件
- 已阅读并阅读了“Activiti 7 - 使用建模器设计业务流程”一文
- JDK已安装
- Maven已安装
源代码
您可以在此处找到与本文相关的源代码:
https://github.com/gravitonian/activiti7-api-basic-process
搭建springboot2应用
使用Spring Boot应用程序非常容易。 只需访问https://start.spring.io/并填写应用程序的数据,如下所示:
确保将Spring Boot版本2.0.x与Activiti 7 Beta 1 - 3一起使用,Beta 4应与版本2.1.x一致。
你不必像我一样使用相同的Group(org.activiti.training)和Artifact(activiti7-api-basic-process-usertask-servicetask-events)名称,只需使用您喜欢的任何名称即可。 但是,如果您从本文中复制代码,则使用相同的包名称(即同一组)可能会更容易。 搜索H2和Web依赖关系,以便它们包含在Maven POM中。 然后单击“Generate Project”按钮。 完成的Spring Boot 2 Maven项目将自动下载为ZIP。
标准spring boot应用测试
在继续使用Activiti之前,让我们确保Spring Boot应用程序正常工作。 这涉及两个步骤。 首先构建应用程序JAR,然后运行应用程序JAR。
构建应用程序jar:
运行应用程序jar:
Ctrl-C退出应用程序以继续下面的配置。
添加依赖(Activiti 7 Dependencies)
除了Activiti 7依赖项之外,Spring Boot应用程序具有我们需要的大多数依赖项。 所以让我们添加它们。 我们可以使用BOM(物料清单)依赖关系,它将引入所有需要的Activiti 7依赖关系管理配置,包括所有依赖关系的正确版本。
Pom.xml添加以下内容:
这将导入Activiti 7的所有依赖项管理配置。现在我们只需要添加一个Activiti 7依赖项,它支持运行Activiti流程引擎,服务任务实现(如云连接器)和事件处理程序实现(如流程和任务侦听器)。 将以下依赖项添加到pom.xml:
这将带来所有Activiti和Spring依赖项需要运行嵌入在Spring Boot应用程序中的Activiti 7流程引擎。 我还可以编写我们的服务任务实现和我们的流程引擎事件处理程序。
我们还不能使用这些新的依赖项运行应用程序,因为它将在resources / processes目录中查找流程定义。 如果此目录不存在,则抛出异常并停止应用程序。
应用程序添加流程定义
我们现在将我们在之前的一篇文章中设计的流程定义XML文件添加到项目中。 在src / main / resources目录下创建一个名为processes的新目录。 然后将.bpmn20.xml文件复制到此目录中。 您现在应该看到这样的目录结构:
这就是我们需要做的,我们现在可以测试启动应用程序了。
测试包含Activiti库和进程定义的Spring Boot App
我们现在可以打包并运行应用程序,以查看所有Activiti库是否已正确加载和是否正确读取了流程定义而没有错误。
添加与流程引擎交互的Rest 调用
我们现在可以使用Activiti 7流程引擎运行时库运行应用程序,因此我们可以创建一些标准的Spring MVC rest调用来与流程引擎和可用的流程定义进行交互
添加一些用户和组并启用Web安全性
为了能够与Process Runtime API进