Flowable API 详解
一、简介
Flowable是一个使用Java编写的轻量级业务流程管理(BPM)引擎,广泛应用于企业级应用中,它支持BPMN 2.0标准,能够灵活地处理各种复杂的业务流程,Flowable提供了丰富的API和插件机制,使得开发者可以根据需求进行定制和扩展。
二、核心概念
在深入了解Flowable API之前,首先需要掌握一些核心概念:
1、ProcessEngine:这是与Flowable交互的总入口点,通过它可以获取各种服务对象。
2、RepositoryService:用于管理流程定义的部署和查询。
3、RuntimeService:用于操作流程的运行时数据,如启动流程实例、执行流程任务等。
4、TaskService:用于管理任务数据和处理与任务相关的操作。
5、HistoryService:用于访问和查询流程的历史数据。
6、IdentityService:用于管理用户、组、角色等身份信息。
7、ManagementService:用于进行底层的引擎管理和操作。
8、DynamicBpmnService:用于动态修改流程定义的流程元素。
9、FormService:用于管理表单数据和处理与表单相关的操作。
三、主要API介绍
ProcessEngine
getDefaultProcessEngine():获取默认的流程引擎实例。
getRepositoryService():获取RepositoryService对象。
getRuntimeService():获取RuntimeService对象。
getTaskService():获取TaskService对象。
getHistoryService():获取HistoryService对象。
getIdentityService():获取IdentityService对象。
getManagementService():获取ManagementService对象。
getDynamicBpmnService():获取DynamicBpmnService对象。
getFormService():获取FormService对象。
RepositoryService
方法名 | 描述 |
createDeployment() | 创建一个流程部署。 |
deleteDeployment(String var1) | 删除指定的流程部署。 |
setDeploymentCategory(String var1, String var2) | 为指定的流程部署设置分类。 |
getDeploymentResourceNames(String var1) | 获取指定流程部署的资源名称列表。 |
getResourceAsStream(String var1, String var2) | 获取指定流程部署中的资源流。 |
changeDeploymentTenantId(String var1, String var2) | 修改指定流程部署的租户ID。 |
createProcessDefinitionQuery() | 创建一个流程定义查询对象。 |
createNativeProcessDefinitionQuery() | 创建一个原生SQL的流程定义查询。 |
suspendProcessDefinitionById(String var1) | 暂停指定的流程定义。 |
activateProcessDefinitionById(String var1) | 激活指定的流程定义。 |
RuntimeService
方法名 | 描述 |
startProcessInstanceByKey(String var1) | 根据流程定义的key启动一个新的流程实例。 |
startProcessInstanceById(String var1) | 根据流程定义的ID启动一个新的流程实例。 |
signalEventReceived(String var1) | 通知引擎某个事件已被接收。 |
getProcessInstances() | 查询所有的流程实例。 |
getVariable(String var1, String var2) | 获取流程变量的值。 |
TaskService
方法名 | 描述 |
createTaskQuery() | 创建一个任务查询对象。 |
claim(String var1, String var2) | 认领任务。 |
complete(String var1, Map |
完成任务。 |
HistoryService
方法名 | 描述 |
createHistoricProcessInstanceQuery() | 创建一个历史流程实例查询对象。 |
createHistoricTaskInstanceQuery() | 创建一个历史任务实例查询对象。 |
createHistoricActivityInstanceQuery() | 创建一个历史活动实例查询对象。 |
IdentityService
方法名 | 描述 |
createUser(String var1) | 创建一个新用户。 |
updateUser(String var1) | 更新用户信息。 |
deleteUser(String var1) | 删除用户。 |
createGroup(String var1) | 创建一个新组。 |
updateGroup(String var1) | 更新组信息。 |
deleteGroup(String var1) | 删除组。 |
ManagementService
方法名 | 描述 |
getTableCount() | 获取数据库表中的数据数量。 |
getTableMetaData(String var1) | 获取表的元数据信息。 |
executeCommand(CommandConfig var1) | 执行指定的命令配置。 |
8. DynamicBpmnService
方法名 | 描述 |
changeActivityState(String var1, String var2, String var3, String var4) | 改变活动的状态。 |
changeActivityDiagram(String var1, String var2, String var3, String var4) | 改变活动的图形表示。 |
FormService
方法名 | 描述 |
getStartFormData(String var1) | 获取开始表单的数据。 |
submitStartFormData(String var1, Map |
提交开始表单的数据。 |
getTaskFormData(String var1) | 获取任务表单的数据。 |
submitTaskFormData(String var1, Map |
提交任务表单的数据。 |
四、常见问题与解答
问题1:如何在Flowable中部署一个新的流程定义?
答:在Flowable中部署一个新的流程定义可以通过RepositoryService来完成,以下是一个简单的示例代码:
// 获取RepositoryService对象 RepositoryService repositoryService = processEngine.getRepositoryService(); // 读取BPMN 2.0文件并将其部署到Flowable引擎中 InputStream bpmnFile = new FileInputStream("path/to/your/bpmn/file.bpmn"); repositoryService.createDeployment() .addInputStream("yourDeploymentName.bpmn", bpmnFile) .deploy();
在这个示例中,我们首先从文件中读取BPMN 2.0流程定义,然后使用createDeployment()
方法创建一个新的部署对象,并通过addInputStream()
方法添加BPMN文件,最后调用deploy()
方法将其部署到Flowable引擎中。
问题2:如何启动一个已经部署的流程实例?
答:要启动一个已经部署的流程实例,可以使用RuntimeService,以下是一个示例代码:
// 获取RuntimeService对象 RuntimeService runtimeService = processEngine.getRuntimeService(); // 根据流程定义的key启动一个新的流程实例 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("yourProcessDefinitionKey");
在这个示例中,我们首先从ProcessEngine中获取RuntimeService对象,然后使用startProcessInstanceByKey()
方法根据流程定义的key启动一个新的流程实例,返回的ProcessInstance对象包含了新启动的流程实例的信息。
到此,以上就是小编对于“flowable api”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/729777.html