Flowable 是一个开源的 BPMN 2.0 工作流引擎,用于在 Java 应用中构建业务流程和案例管理。以下是一个简单的 Java 代码示例,说明如何使用 Flowable API 来部署一个 BPMN 2.0 流程定义,并启动一个流程实例。
首先,确保已经在项目中添加了 Flowable 的依赖。如果使用 Maven,可以在 pom.xml 文件中添加如下依赖:
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-engine</artifactId>
<version>你的Flowable版本号</version>
</dependency>
然后,可以使用以下 Java 代码示例:
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngines;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.repository.Deployment;
public class FlowableDemo {
public static void main(String[] args) {
// 默认情况下,Flowable 会查找 classpath 下的 flowable.cfg.xml 配置文件来创建 ProcessEngine
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 获取 RepositoryService 用于部署流程定义
RepositoryService repositoryService = processEngine.getRepositoryService();
// 部署流程定义,通常从文件、输入流或字符串中读取 BPMN 2.0 XML
// 这里假设您有一个名为 "my-process.bpmn20.xml" 的 BPMN 文件在 classpath 下
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("my-process.bpmn20.xml")
.deploy();
System.out.println("Deployment ID: " + deployment.getId());
// 获取 RuntimeService 用于启动流程实例
RuntimeService runtimeService = processEngine.getRuntimeService();
// 启动流程实例,这里假设流程定义的 key 是 "myProcess"
// 您可以根据需要传递流程变量
runtimeService.startProcessInstanceByKey("myProcess");
System.out.println("Process instance started");
// 注意:这里只是启动了流程实例,并没有处理流程中的用户任务或等待状态。
// 在实际应用中,您需要根据流程定义中的逻辑来处理这些任务或状态。
}
}
注意:
这个示例假设已经有一个名为 “my-process.bpmn20.xml” 的 BPMN 2.0 流程定义文件在 classpath 下。
流程定义的 key(“myProcess”)是用于启动流程实例的,它应该与 BPMN 文件中的流程定义 ID 或 key 相匹配。
在实际应用中,可能需要处理流程中的用户任务、等待状态、事件等。这通常涉及使用 TaskService、IdentityService、FormService 等其他 Flowable API。
Flowable 还提供了许多其他功能和配置选项,可以查阅官方文档以获取更多信息。