XML上传并触发工作流 Camunda/Activiti如何启动流程

7次阅读

可通过rest api、web界面或java sdk在camunda/activiti平台上传bpmn xml并启动流程实例:一、单次post部署并启动;二、先部署再按key启动并传变量;三、web界面手动操作;四、java sdk内嵌调用。

XML上传并触发工作流 Camunda/Activiti如何启动流程

如果您已准备就绪一个符合 BPMN 2.0 规范的 XML 文件,并希望在 Camunda 或 Activiti 平台上完成上传并立即启动对应流程实例,则需通过平台提供的 REST API 或 Web 界面执行特定操作。以下是实现该目标的具体方式:

一、使用 REST API 上传 BPMN XML 并启动流程实例

此方法通过单次 http POST 请求将 BPMN XML 内容提交至引擎,同时触发新流程实例的创建。Camunda 支持 /deployment/create 接口接收 XML 并自动部署;Activiti 7+(基于 spring Boot)也提供类似端点,但需注意版本兼容性与认证配置。

1、构造 POST 请求,目标 URL 为 http://localhost:8080/engine-rest/deployment/create(Camunda 默认地址)或对应 Activiti 的部署端点。

2、设置请求头:Content-Type 为 multipart/form-data,并携带有效 Bearer Token 或 Basic Auth 凭据。

3、在表单字段中添加名为 deployment-name 的文本字段,值为自定义部署名称;再添加名为 bpmn20.xml 的文件字段,值为本地 BPMN XML 文件内容。

4、若需上传后立即启动流程,可在同一请求中追加字段 enableProcessDefinitions 并设为 true,部分 Camunda 版本支持该参数自动激活最新部署的流程定义。

二、先部署再通过流程定义 Key 启动实例

该方式将部署与启动分离,适用于需校验部署结果、获取流程定义 ID 或需指定启动变量的场景。XML 上传后生成可复用的流程定义,后续可通过其唯一 key 调用启动接口。

1、向 /engine-rest/deployment/create 发送仅含 XML 文件的 POST 请求,不附加启动参数。

2、从响应体中提取 id 字段值,即本次部署的唯一标识;再调用 /engine-rest/process-definition 查询最新部署的定义列表,定位目标流程定义的 keyversion

3、发起新 POST 请求至 /engine-rest/process-definition/{key}/start,其中 {key} 替换为上一步获取的实际流程定义 key。

4、请求体为 json 格式,包含可选的 variables 字段,用于传入启动时所需的流程变量,例如:{“variables”:{“applicantName”:{“value”:”张三”,”type”:”String”}}

三、通过 Camunda Tasklist 或 Activiti App Web 界面手动上传并启动

适用于开发调试或低频操作场景。Web 界面封装了底层 API 调用逻辑,用户无需编写代码即可完成部署与启动,但无法批量处理或集成至自动化流水线。

1、登录 Camunda Tasklist(默认地址 http://localhost:8080/camunda/app/tasklist/default/)或 Activiti App(如 http://localhost:8080/activiti-app)。

2、导航至“部署”或“流程应用”模块,点击“新建部署”按钮。

3、在文件选择区域拖入或浏览选取本地 BPMN XML 文件,填写部署名称,点击“部署”。

4、部署成功后,在流程定义列表中找到对应条目,点击右侧操作栏中的 “启动流程实例” 按钮,按提示填写启动表单字段或跳过空表单,确认提交。

四、使用 Java SDK 在应用内完成上传与启动

当流程建模与执行嵌入到 spring boot 应用中时,可直接调用官方 Java 客户端(Camunda Engine API 或 Activiti Cloud Client),避免 HTTP 层交互开销,提升执行效率与类型安全性。

1、在 maven 项目中引入 camunda-engine-spring-boot-starteractiviti-spring-boot-starter 依赖。

2、注入 RepositoryService 实例,调用 createDeployment().addClasspathResource(“process.bpmn”).deploy() 完成 XML 部署。

3、获取最新流程定义对象:调用 repositoryService.createProcessDefinitionQuery().processDefinitionKey(“myProcess”).latestVersion().singleResult()

4、使用 RuntimeService 启动实例:runtimeService.startProcessInstanceById(processDefinition.getId(), variables),其中 variables 为 map 类型启动变量。

text=ZqhQzanResources