# workflow **Repository Path**: zhaojiaxing/workflow ## Basic Information - **Project Name**: workflow - **Description**: workflow是对activiti7工作流进行扩展,使其更符合中国工作流的标准,简化工作流的开发流程以及使用门槛,开箱即用。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 6 - **Created**: 2021-12-15 - **Last Updated**: 2023-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Activiti7的工作流引擎构件(workflow) ​ workflow是对activiti7工作流进行扩展,使其更符合中国工作流的标准,简化工作流的开发流程以及使用门槛,开箱即用。 # 1 什么是工作流? ## 1.1 工作流介绍 - 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。 ## 1.2 工作流系统 ### 1.2.1 概述 - 一个软件系统中具有工作流的功能,我们把它称为工作流系统。 - 一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。 - 即使没有工作流业务系统也可以开发运行,只不过有了工作流可以更好的管理业务流程,提高系统的可扩展性。 ### 1.2.2 使用行业 - 消费品行业,制造业,电信服务业,银证险等金融服务业,物流服务业,物业服务业,物业管理,大中型进出口贸易公司,政府事业机构,研究院所及教育服务业等,特别是大的跨国企业和集团公司。 ## 1.3 工作流实现方式 - 在没有专门的工作流引擎之前,我们之前为了实现流程控制,通常的做法就是采用状态字段的值来跟踪流程的变化情况。这样不同角色的用户,通过状态字段的取值来决定记录是否显示。 - 针对有权限可以查看的记录,当前用户根据自己的角色来决定审批是否是合格的操作。如果合格将状态字段设置一个值,来代表合格;当然如果不合格也需要设置一个值来代表不合格的情况。 - 这是一种最为原始的方式。通过状态字段虽然做到了流程控制,但是当我们的流程发生变更的时候,这种方式所编写的代码也要进行调整。 - 那么有没有专业的方式来实现工作流的管理呢?并且可以做到业务流程变化之后,我们的程序可以不用改变,如果可以实现这样的效果,那么我们的业务系统的适应能力就得到了极大提升。答案就是采用工作流引擎。 ## 1.4 工作流实现原理分析 - 如何做到我们在业务流程发生变更后,我们的业务系统代码可以不发生改变?原理如下: [![工作流实现原理图](https://gitee.com/zhaojiaxing/image/raw/master/images//1128804-20200913095106879-1620779290.png)](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095106879-1620779290.png) - 将业务流程的每个节点读取到数据库中,这样每个节点(包括开始节点和结束节点)就是数据库中的一条记录,当发生业务流程的时候,不断的从业务流程图中读取下一个节点,其实就相当于操作节点对应的数据库记录,这样就实现流程管理和状态字段无关。 # 2 什么是Activiti7? ## 2.1 Activiti7介绍 ### 2.1.1 概述 - Alfresco 软件在 2010 年 5 月 17 日宣布 Activiti 业务流程管理(BPM)开源项目的正式启动, 其 首席架构师由业务流程管理 BPM 的专家 Tom Baeyens 担任, Tom Baeyens 就是原来 jbpm 的架构师, 而 jbpm 是一个非常有名的工作流引擎,当然 activiti 也是一个工作流引擎。 - **Activiti 是一个工作流引擎**, activiti 可以将业务系统中复杂的业务流程抽取出来,使用专门的 建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务 流程由 activiti 进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的 健壮性,同时也减少了系统开发维护成本。 - [官方网站](https://www.activiti.org/) ### 2.1.2 Activiti7内部核心机制 - 1️⃣业务流程图要规范化,需要遵守一套标准。 - 2️⃣业务流程图本质上就是一个XML文件,而XML可以存放所要的数据。 - 3️⃣读取业务流程图的过程就是解析XML文件的过程。 - 4️⃣读取一个业务流程图的结点就相当于解析一个XML的结点,进一步将数据插入到MySQL表中,形成一条记录。 - 5️⃣将一个业务流程图的所有节点都读取并存入到MySQL表中。 - 6️⃣后面只要读取MySQL表中的记录就相当于读取业务流程图的一个节点。 - 7️⃣业务流程的推进,后面就转换为读取表中的数据,并且处理数据,结束的时候这一行数据就可以删除了。 ### 2.1.3 BPM - BPM(Business Process Management),即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法,常见商业管理教育如EMBA、MBA等均将BPM包含在内。 - 企业流程管理主要是对企业内部改革,改变企业只能管理机构重叠、中间层次多、流程不闭环等,做到机构不重叠、业务不复杂,达到缩短流程周期、节约运作资本、提高企业效益的作用。 ### 2.1.4 BPM软件 - BPM软件就是根据企业中业务环境的变化,推进人和人之间、人和系统之间以及系统和系统之间的整合及调整的经营方法和解决方案的IT工具。通常以Internet方式实现信息传、数据同步、业务监控和企业业务流程的持续升级优化,从而实现跨应用、跨部门、夸合作伙伴和客户的企业运作。通过BPM软件对企业内部及外部的业务流程的整个生命周期进行建模、自动化、管理监控和优化,使企业成本降低,利润得以大幅度提升。 - BPM软件在企业中应用领域广泛,凡是有业务流程的地方都可以用BPM软件进行管理,比如企业人事办公管理、采购流程管理、公文审批流程管理、财务管理等。 ### 2.1.5 BPMN - BPMN(Business Process Model And Notation),业务流程模型和符号,是由BPMI(Business Process Management Initiative)开发的一套的业务流程建模符号,使用BPMN提供的符号可以创建业务流程。2004年5月发布了BPMN1.0规范。BPMI于2005年9月并入OMG(The Object Management Group,对象管理组织)组织。OMG于2011年1月发布BPMN2.0的最终版本。 - BPMN是目前被各BPM厂商广泛接受的BPM标准。Activit就是使用BPMN2.0进行流程建模、流程执行管理,它包括很多的建模符号。 - 比如: - Event用一个圆圈表示,它是流程中运行过程中发生的事情。 [![Event](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107110-1141687013.png)](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107110-1141687013.png) - 活动用圆形矩形表示,一个流程由一个活动或多个活动组成。 [![BPMN图标](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107260-1091167916.png)](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107260-1091167916.png) - 一个BPMN的例子: - 首先当事人发起一个请假单; - 其次他所在部门的经理对请假单进行审核; - 然后人事经理进行复核并进行备案; - 最后请假流程结束。 [![BPMN例子](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107421-849218252.png)](https://img2020.cnblogs.com/blog/1128804/202009/1128804-20200913095107421-849218252.png) - BPMN其实是用XML表示业务流程的,上面的.bpmn文件使用文本编辑器打开: ```xml SequenceFlow_13g4uaz SequenceFlow_13g4uaz SequenceFlow_0yljdna SequenceFlow_0yljdna SequenceFlow_0wc7wvy SequenceFlow_0wc7wvy SequenceFlow_0o4nsg1 SequenceFlow_0o4nsg1 ``` ## 2.2 activiti表结构介绍 ### 2.2.1 表的命名规则和作用 Activiti一共有25张表,Activiti使用到的表都是ACT_开头的。 **ACT_RE** :'RE'表示 repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资 源(图片,规则等)。 **ACT_RU**:'RU'表示 runtime。 这是运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti 只在流程实例执行 过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 **ACT_HI**:'HI'表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。 **ACT_GE** : GE 表示 general。全局通用数据及设置(general), 用于不同场景下 。 ### 2.2.2 activiti数据表介绍 | **表分类** | **表名** | **解释** | | ------------ | --------------------- | -------------------------------------------------- | | 一般数据 | | | | | [ACT_GE_BYTEARRAY] | 通用的流程定义和流程资源 | | | [ACT_GE_PROPERTY] | 系统相关属性 | | 流程历史记录 | | | | | [ACT_HI_ACTINST] | 历史的流程实例 | | | [ACT_HI_ATTACHMENT] | 历史的流程附件 | | | [ACT_HI_COMMENT] | 历史的说明性信息 | | | [ACT_HI_DETAIL] | 历史的流程运行中的细节信息 | | | [ACT_HI_IDENTITYLINK] | 历史的流程运行过程中用户关系 | | | [ACT_HI_PROCINST] | 历史的流程实例 | | | [ACT_HI_TASKINST] | 历史的任务实例 | | | [ACT_HI_VARINST] | 历史的流程运行中的变量信息 | | 流程定义表 | | | | | [ACT_RE_DEPLOYMENT] | 部署单元信息 | | | [ACT_RE_MODEL] | 模型信息 | | | [ACT_RE_PROCDEF] | 已部署的流程定义 | | 运行实例表 | | | | | [ACT_RU_EVENT_SUBSCR] | 运行时事件 | | | [ACT_RU_EXECUTION] | 运行时流程执行实例 | | | [ACT_RU_IDENTITYLINK] | 运行时用户关系信息,存储任务节点与参与者的相关信息 | | | [ACT_RU_JOB] | 运行时作业 | | | [ACT_RU_TASK] | 运行时任务 | | | [ACT_RU_VARIABLE] | 运行时变量表 | # 3 基于activiti7的工作流构建workflow ## 3.1 什么是workflow ​ workflow是基于activiti7的工作流扩展,采用了Spring Boot、mybatis、activiti7等技术。workflow基于activiti封装了大部分工作流核心API和功能,基本上能满足日常业务需要,是一个典型的中国式工作流的流程引擎,解决了activiti7无法实现流程驳回、任意跳转等缺陷。 ​ workflow是一个和业务解耦,完全独立,**开箱即用**的构件,提供restful api,你可以使用此api和你的业务系统相结合,实现自定义的工作流平台。 ## 3.2 workflow提供的api workflow流程引擎提供了35个API,其实现的大致功能如下: - **核心API**(支持启动流程、提交任务、驳回、驳回任意环节、驳回首环节、撤回、挂起/激活流程等API) - **流程管理**(支持流程在线设计器、发布/部署、挂起、激活、导出/导入、启动、删除) - **我的流程**(发起流程申请) - **我的待办**(支持快速办理、查看任务表单办理、历史审批意见、流程实时流转图等) - **我的已办**(支持撤回功能) - **我的申请**(查看所有当前用户申请过的流程情况) image-20211201103019094 ## 3.3 为什么使用workflow 1. workflow是基于业内主流开源组件进行扩展,生态发展比较好,相关资料也比较丰富 2. **workflow扩展了activiti的相关功能(驳回、撤回、终止流程等),使其更符合中国式工作流** 3. **使用传统的方式开发工作流,效率低下,把流程和业务耦合不仅导致代码开发、修改成本高,而且流程偏定制开发,无法复用** 4. 使用workflow实现流程引擎,**可以以极低的成本,快速实现业务工作流,提高开发效率,大大节约工作量**。比如一个流程需要五天开发完毕,十个流程就是50天,但是使用workflow只需要一两个小时即可完成。 5. workflow构件简单易用,有完善的说明文档,并且**具有足够的健壮性,与容错处理以及错误提示**。 6. workflow与业务解耦,可以独立部署,具有广泛的通用性,**所有与流程有关的场景均可以使用此构件**。 **健壮性示例**: ![image-20211130091031348](https://gitee.com/zhaojiaxing/image/raw/master/images//image-20211130091031348.png) **容错处理和错误提示示例**: ![image-20211130091331272](https://gitee.com/zhaojiaxing/image/raw/master/images//image-20211130091331272.png) ![image-20211130091442946](https://gitee.com/zhaojiaxing/image/raw/master/images//image-20211130091442946.png) ## 3.4 驳回相关功能实现原理 ​ 中国人的流程习惯是有来有往,能审批通过就应该能驳回。即可驳回到流程线上任意一节点,而国外的流程引擎思想这点与国内差别很大,为了满足国内的项目需要,就必须对这些流程引擎进行封装或改造。 ​ Activiti提供了一组Service,向用户暴露流程引擎的功能,Service内部通过命令模式执行真正的操作。以TaskService的complete方法为例: ![image-20211201104338434](https://gitee.com/zhaojiaxing/image/raw/master/images//image-20211201104338434.png) 从代码中可以看到`complete`方法执行的是`CompleteTaskCmd`,执行命令的是一个叫`commandExecutor`的对象。 因此我们可以通过实现自定义的Command命令来扩展驳回等功能。其大致实现原理如下: ![image-20211201111824432](https://gitee.com/zhaojiaxing/image/raw/master/images//image-20211201111824432.png) ## 3.5 workflow构件适用场景 - **关键业务流程**:订单、报价处理、合同审核、客户电话处理、供应链管理等。 - **行政管理类**:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。 - **人事管理类**:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。 - **财务相关类**:付款请求、应收款处理、日常报销处、出差报销、预算和计划申请等。 - **客户服务类**:客户信息管理、客户投诉、请求处理、售后财务管理等。 - **特殊服务类**:ISO系统对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、物流公司货物跟踪处理等各种通过表单逐步手动流转完成的任务均可应用工作流软件自动规范实施。 - **其他相关审批事项** 事业部内有关项目使用流程引擎例子:数字政协、绵阳水务集团资产管理系统 ## 3.6 如何使用workflow workflow支持以jar包形式独立运行,也可以作为第三方jar包引入项目里面。推荐以jar包形式独立运行,完全与业务解耦。 使用步骤: 1. 修改配置文件application.yml,配置数据库账号和密码 2. 新建数据库workflow(也可以是别的数据库名) 3. 执行workflow.sql脚本 4. 以jar形式启动项目(nohup java -jar workflow-0.0.1-SNAPSHOT.jar \>/dev/null &),注意要将修改后的application.yml文件放到jar包同级目录 5. 调用提供的接口实现自己的工作流平台 application.yml文件修改说明: ``` server: port: 10001 # 端口 servlet: context-path: / session: timeout: 9000 spring: datasource: username: root password: jdyp_sckr2002 url: jdbc:mysql://192.168.7.211:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC&nullCatalogMeansCurrent=true #数据库地址和用户名密码 driver-class-name: com.mysql.cj.jdbc.Driver activiti: db-history-used: true #使用历史表,如果不配置,则工程启动后可以检查数据库,只建立了17张表,历史表没有建立 history-level: full #记录全部历史操作 database-schema-update: true #自动建表 如果选择自动建表也可以不执行sql脚本 check-process-definitions: false # 自动部署验证设置:true-开启(默认)、false-关闭 resources: static-locations: classpath:/templates/,classpath:/static/,classpath:/resources/ #日志的相关配置 logging: level: root: info ``` 项目启动后可查看swagger接口文档,地址为:ip:port/doc.html。示例:http://localhost:10001/doc.html 前端设计器地址:ip:port/bpmnjs/dist/index.html。示例:http://localhost:10001/bpmnjs/dist/index.html # 4.workflow相关接口文档 注意:所有接口地址都需要加上ip:port前缀 ## 4.1 任务相关接口 ### 4.1.1 驳回到指定环节 **接口描述**:驳回任务到指定环节 **接口地址**:`/task/back/any` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "targetNodeId": "", "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------------- | -------------------- | | dto | dto | body | true | 驳回到目标节点传参类 | 驳回到目标节点传参类 | **schema属性说明** **驳回到目标节点传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ------------ | -------- | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | targetNodeId | 目标节点 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.2 驳回至首环节 **接口描述**:驳回至首环节 **接口地址**:`/task/back/first` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "taskId": "", "userKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | ---------- | ---------- | | dto | dto | body | true | 任务传参类 | 任务传参类 | **schema属性说明** **任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.3 驳回任务 **接口描述**:驳回任务 **接口地址**:`/task/back/task` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "taskId": "", "userKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | ---------- | ---------- | | dto | dto | body | true | 任务传参类 | 任务传参类 | **schema属性说明** **任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.4 完成任务 **接口描述**:完成任务,任务进入下一个节点 **接口地址**:`/task/complete` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "nextAssigne": "", "taskId": "", "userKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 任务完成传参类 | 任务完成传参类 | **schema属性说明** **任务完成传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ----------- | ------------------------ | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | nextAssigne | 下一步审批人,可以不指定 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.5委派任务 **接口描述**:委派任务 **接口地址**:`/task/delegate` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 驳回任务传参类 | 驳回任务传参类 | **schema属性说明** **驳回任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------- | ------ | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.6 结束任务 **接口描述**:结束任务 **接口地址**:`/task/end/task` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "taskId": "", "userKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | ---------- | ---------- | | dto | dto | body | true | 任务传参类 | 任务传参类 | **schema属性说明** **任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.7 根据实例ID查询当前实例所有审批意见 接口描述**:根据实例ID查询当前实例所有审批意见 **接口地址**:`/task/get/comments` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ----------------- | -------- | ----- | -------- | -------- | ------ | | processInstanceId | 实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.8 获取可以驳回的节点 接口描述**:获取可以驳回的节点 **接口地址**:`/task/get/nodeList` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | taskId | taskId | query | true | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.9 根据任务key查询当前任务自定义信息 接口描述**:根据任务key查询当前任务自定义信息 **接口地址**:`/task/get/variables` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | taskId | 任务ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.10 查询所有任务 **接口描述**:查询所有任务 **接口地址**:`/task/query/all` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "assignee": "zhangsan", "isGetParam": 0, "key": "xxx", "pageNum": 1, "pageSize": 10 } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 任务查询传参类 | 任务查询传参类 | **schema属性说明** **任务查询传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ---------- | -------------------------------- | ---- | -------- | -------------- | ------ | | assignee | 候选人或者当前用户 | body | false | string | | | isGetParam | 是否获取自定义参数 0不获取 1获取 | body | false | integer(int32) | | | key | 流程定义key | body | false | string | | | pageNum | 页码 | body | false | integer(int32) | | | pageSize | 每页条数 | body | false | integer(int32) | | **响应示例**: ```json { "code": 0, "data": { "count": 0, "list": [ { "assignee": "", "businessKey": "", "createTime": "", "definitionKey": "", "delegation": "", "deploymentId": "", "description": "", "dueDate": "", "executionId": "", "id": "", "name": "", "owner": "", "parentTaskId": "", "procDefId": "", "procInstId": "", "suspensionState": 0, "taskDefKey": "", "variblesMap": {} } ] }, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------------- | -------------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | Page«流程任务实体类» | Page«流程任务实体类» | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **Page«流程任务实体类»** | 参数名称 | 参数说明 | 类型 | schema | | -------- | -------- | -------------- | -------------- | | count | | integer(int64) | | | list | | array | 流程任务实体类 | **流程任务实体类** | 参数名称 | 参数说明 | 类型 | schema | | --------------- | ------------ | ----------------- | ------ | | assignee | 任务处理人 | string | | | businessKey | 业务key | string | | | createTime | 开始日期 | string(date-time) | | | definitionKey | 流程定义key | string | | | delegation | 委托人 | string | | | deploymentId | 部署ID | string | | | description | 描述 | string | | | dueDate | 过期日期 | string(date-time) | | | executionId | 执行对象id | string | | | id | 主键 | string | | | name | 任务名 | string | | | owner | 任务拥有者 | string | | | parentTaskId | 父节点任务ID | string | | | procDefId | 流程定义ID | string | | | procInstId | 流程实例ID | string | | | suspensionState | 挂起状态 | integer(int32) | | | taskDefKey | 任务key | string | | | variblesMap | 自定义参数 | object | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ----------------------- | | 200 | OK | R«Page«流程任务实体类»» | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | | | | | ### 4.1. 11 委派人完成任务 **接口描述**:委派人完成任务 **接口地址**:`/task/resolve` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "comment": "", "taskId": "", "userKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | ---------- | ---------- | | dto | dto | body | true | 任务传参类 | 任务传参类 | **schema属性说明** **任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ---- | -------- | -------- | ------ | | comment | 审批意见 | body | false | string | | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.12 查询当前用户的待办任务 **接口描述**:查询当前用户的待办任务 **接口地址**:`/task/todo/list` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "assignee": "zhangsan", "isGetParam": 0, "key": "xxx", "pageNum": 1, "pageSize": 10 } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 任务查询传参类 | 任务查询传参类 | **schema属性说明** **任务查询传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ---------- | -------------------------------- | ---- | -------- | -------------- | ------ | | assignee | 候选人或者当前用户 | body | false | string | | | isGetParam | 是否获取自定义参数 0不获取 1获取 | body | false | integer(int32) | | | key | 流程定义key | body | false | string | | | pageNum | 页码 | body | false | integer(int32) | | | pageSize | 每页条数 | body | false | integer(int32) | | **响应示例**: ```json { "code": 0, "data": { "count": 0, "list": [ { "assignee": "", "businessKey": "", "createTime": "", "definitionKey": "", "delegation": "", "deploymentId": "", "description": "", "dueDate": "", "executionId": "", "id": "", "name": "", "owner": "", "parentTaskId": "", "procDefId": "", "procInstId": "", "suspensionState": 0, "taskDefKey": "", "variblesMap": {} } ] }, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------------- | -------------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | Page«流程任务实体类» | Page«流程任务实体类» | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **Page«流程任务实体类»** | 参数名称 | 参数说明 | 类型 | schema | | -------- | -------- | -------------- | -------------- | | count | | integer(int64) | | | list | | array | 流程任务实体类 | **流程任务实体类** | 参数名称 | 参数说明 | 类型 | schema | | --------------- | ------------ | ----------------- | ------ | | assignee | 任务处理人 | string | | | businessKey | 业务key | string | | | createTime | 开始日期 | string(date-time) | | | definitionKey | 流程定义key | string | | | delegation | 委托人 | string | | | deploymentId | 部署ID | string | | | description | 描述 | string | | | dueDate | 过期日期 | string(date-time) | | | executionId | 执行对象id | string | | | id | 主键 | string | | | name | 任务名 | string | | | owner | 任务拥有者 | string | | | parentTaskId | 父节点任务ID | string | | | procDefId | 流程定义ID | string | | | procInstId | 流程实例ID | string | | | suspensionState | 挂起状态 | integer(int32) | | | taskDefKey | 任务key | string | | | variblesMap | 自定义参数 | object | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ----------------------- | | 200 | OK | R«Page«流程任务实体类»» | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.13 任务转办 **接口描述**:任务转办,把任务交给别人处理 **接口地址**:`/task/turnTask` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 驳回任务传参类 | 驳回任务传参类 | **schema属性说明** **驳回任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------- | ------ | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | | | | | ### 4.1.14 撤回任务 **接口描述**:撤回任务 **接口地址**:`/task/withdraw/task` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 驳回任务传参类 | 驳回任务传参类 | **schema属性说明** **驳回任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------- | ------ | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.1.15 签收任务 **接口描述**:签收任务 **接口地址**:`/task/claim` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 驳回任务传参类 | 驳回任务传参类 | **schema属性说明** **驳回任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------- | ------ | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | | | ### 4.1.16 取回签收任务 **接口描述**:取回签收任务 **接口地址**:`/task/unclaim` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "taskId": "", "userKey": "" } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 驳回任务传参类 | 驳回任务传参类 | **schema属性说明** **驳回任务传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------- | ------ | | taskId | 任务ID | body | false | string | | | userKey | 用户key | body | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | | | ## 4.2 历史相关任务 ### 4.2.1 获取任务实例历史记录 **接口描述**:获取任务实例历史记录 **接口地址**:`/history/getInstancesByPiID` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | piID | 实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": [ { "assignee": "", "category": "", "claimTime": "", "createTime": "", "deleteReason": "", "description": "", "dueDate": "", "durationInMillis": 0, "endTime": "", "executionId": "", "formKey": "", "id": "", "name": "", "owner": "", "parentTaskId": "", "priority": 0, "processDefinitionId": "", "processInstanceId": "", "processVariables": {}, "startTime": "", "taskDefinitionKey": "", "taskLocalVariables": {}, "tenantId": "", "time": "", "workTimeInMillis": 0 } ], "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | array | HistoricTaskInstance | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **HistoricTaskInstance** | 参数名称 | 参数说明 | 类型 | schema | | ------------------- | -------- | ----------------- | ------ | | assignee | | string | | | category | | string | | | claimTime | | string(date-time) | | | createTime | | string(date-time) | | | deleteReason | | string | | | description | | string | | | dueDate | | string(date-time) | | | durationInMillis | | integer(int64) | | | endTime | | string(date-time) | | | executionId | | string | | | formKey | | string | | | id | | string | | | name | | string | | | owner | | string | | | parentTaskId | | string | | | priority | | integer(int32) | | | processDefinitionId | | string | | | processInstanceId | | string | | | processVariables | | object | | | startTime | | string(date-time) | | | taskDefinitionKey | | string | | | taskLocalVariables | | object | | | tenantId | | string | | | time | | string(date-time) | | | workTimeInMillis | | integer(int64) | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ----------------------------- | | 200 | OK | R«List«HistoricTaskInstance»» | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.2.2 获取用户已办历史任务 **接口描述**:获取用户已办历史任务 **接口地址**:`/history/getInstancesByUserName` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | userkey | 用户key | query | false | string | | **响应示例**: ```json { "code": 0, "data": [ { "assignee": "", "category": "", "claimTime": "", "createTime": "", "deleteReason": "", "description": "", "dueDate": "", "durationInMillis": 0, "endTime": "", "executionId": "", "formKey": "", "id": "", "name": "", "owner": "", "parentTaskId": "", "priority": 0, "processDefinitionId": "", "processInstanceId": "", "processVariables": {}, "startTime": "", "taskDefinitionKey": "", "taskLocalVariables": {}, "tenantId": "", "time": "", "workTimeInMillis": 0 } ], "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | array | HistoricTaskInstance | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **HistoricTaskInstance** | 参数名称 | 参数说明 | 类型 | schema | | ------------------- | -------- | ----------------- | ------ | | assignee | | string | | | category | | string | | | claimTime | | string(date-time) | | | createTime | | string(date-time) | | | deleteReason | | string | | | description | | string | | | dueDate | | string(date-time) | | | durationInMillis | | integer(int64) | | | endTime | | string(date-time) | | | executionId | | string | | | formKey | | string | | | id | | string | | | name | | string | | | owner | | string | | | parentTaskId | | string | | | priority | | integer(int32) | | | processDefinitionId | | string | | | processInstanceId | | string | | | processVariables | | object | | | startTime | | string(date-time) | | | taskDefinitionKey | | string | | | taskLocalVariables | | object | | | tenantId | | string | | | time | | string(date-time) | | | workTimeInMillis | | integer(int64) | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ----------------------------- | | 200 | OK | R«List«HistoricTaskInstance»» | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.2.3 流程图高亮 **接口描述**:流程图高亮 **接口地址**:`/history/gethighLine` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ---------- | -------- | ----- | -------- | -------- | ------ | | instanceId | 实例ID | query | false | string | | | userKey | 用户key | query | false | string | | | userkey | userkey | query | true | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | --------------------- | | 200 | OK | R«Map«string,object»» | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.2.4 我发起的记录 **接口描述**:我发起的记录 **接口地址**:`/history/process/mys` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | userKey | 用户key | query | false | string | | **响应示例**: ```json { "code": 0, "data": [ { "businessKey": "", "deleteReason": "", "deploymentId": "", "description": "", "durationInMillis": 0, "endActivityId": "", "endTime": "", "id": "", "name": "", "processDefinitionId": "", "processDefinitionKey": "", "processDefinitionName": "", "processDefinitionVersion": 0, "processVariables": {}, "startActivityId": "", "startTime": "", "startUserId": "", "superProcessInstanceId": "", "tenantId": "" } ], "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | ----------------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | array | HistoricProcessInstance | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **HistoricProcessInstance** | 参数名称 | 参数说明 | 类型 | schema | | ------------------------ | -------- | ----------------- | ------ | | businessKey | | string | | | deleteReason | | string | | | deploymentId | | string | | | description | | string | | | durationInMillis | | integer(int64) | | | endActivityId | | string | | | endTime | | string(date-time) | | | id | | string | | | name | | string | | | processDefinitionId | | string | | | processDefinitionKey | | string | | | processDefinitionName | | string | | | processDefinitionVersion | | integer(int32) | | | processVariables | | object | | | startActivityId | | string | | | startTime | | string(date-time) | | | startUserId | | string | | | superProcessInstanceId | | string | | | tenantId | | string | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | -------------------------------- | | 200 | OK | R«List«HistoricProcessInstance»» | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.2.5 查询流程历史变量 **接口描述**:查询流程历史变量 **接口地址**:`/history/variable` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ----------------- | -------- | ----- | -------- | -------- | ------ | | processInstanceId | 实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": [ { "createTime": "", "id": "", "processInstanceId": "", "taskId": "", "value": {}, "variableName": "", "variableTypeName": "" } ], "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | array | 流程历史变量 | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **schema属性说明** **流程历史变量** | 参数名称 | 参数说明 | 类型 | schema | | ----------------- | ---------- | ----------------- | ------ | | createTime | 时间 | string(date-time) | | | id | ID | string | | | processInstanceId | 实例ID | string | | | taskId | 任务ID | string | | | value | 变量内容 | object | | | variableName | 变量名 | string | | | variableTypeName | 变量类型名 | string | | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | --------------------- | | 200 | OK | R«List«流程历史变量»» | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ## 4.3 流程实例相关 ### 4.3.1 根据流程实例ID删除流程实例 **接口描述**:根据流程实例ID删除流程实例 **接口地址**:`/instance/deleteProcessInstanceByID` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ----- | -------- | -------- | ------ | | processId | 流程实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.3.2 根据流程实例key删除流程实例 **接口描述**:根据流程实例key删除流程实例 **接口地址**:`/instance/deleteProcessInstanceByKey` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------------------- | ----------- | ----- | -------- | -------- | ------ | | processDefinitionKey | 流程实例Key | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | | | | | ### 4.3.3 根据流程ID查询流程实例 **接口描述**:查询流程实例 **接口地址**:`/instance/searchById` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | --------- | ---------- | ----- | -------- | -------- | ------ | | processId | 流程实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.3.4 根据流程key查询流程实例 **接口描述**:查询流程实例 **接口地址**:`/instance/searchByKey` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------------------- | -------- | ----- | -------- | -------- | ------ | | processDefinitionKey | 流程key | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.3.5 根据流程key启动流程 **接口描述**:每一个流程有对应的一个key这个是某一个流程内固定的写在bpmn内的 **接口地址**:`/instance/start` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求示例**: ```json { "businessKey": "", "nextAssigne": "", "processKey": "", "startUserKey": "", "variables": {} } ``` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ---- | -------- | -------------- | -------------- | | dto | dto | body | true | 启动流程传参类 | 启动流程传参类 | **schema属性说明** **启动流程传参类** | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ------------ | ------------------------ | ---- | -------- | -------- | ------ | | businessKey | 业务key | body | false | string | | | nextAssigne | 下一步审批人,可以不指定 | body | false | string | | | processKey | 流程定义key | body | false | string | | | startUserKey | 发起人 | body | false | string | | | variables | 自定义参数 | body | false | object | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.3.6 根据实例ID挂起/激活流程实例 **接口描述**:根据实例ID挂起/激活流程实例(针对发起的流程进行挂起) **接口地址**:`/instance/suspend` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ----------------- | -------- | ----- | -------- | -------- | ------ | | processInstanceId | 实例ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ## 4.4 流程部署 ### 4.4.1 通过bpmn字符串部署流程 **接口描述**:将bpmn文件内容转为字符串然后部署流程,字符串内容即为流程内容 **接口地址**:`/processDefinition/addDeploymentByString` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ---------- | ---------------------- | ----- | -------- | -------- | ------ | | name | 部署名 | query | false | string | | | stringBPMN | bpmn文件内容(字符串) | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.2 删除流程定义 **接口描述**:删除流程定义 **接口地址**:`/processDefinition/del/definition` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | ---------- | ----- | -------- | -------- | ------ | | depID | 流程部署id | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.3 获取流程定义xml **接口描述**:获取流程定义xml **接口地址**:`/processDefinition/getDefinitionXML` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ------------ | ---------------- | ----- | -------- | -------- | ------ | | deploymentId | 流程部署id | query | false | string | | | resourceName | 部署的bpmn文件名 | query | false | string | | **响应示例**: ```json ``` **响应参数**: 暂无 **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.4 获取流程定义列表 **接口描述**:获取流程定义列表 **接口地址**:`/processDefinition/getDefinitions` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: 暂无 **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.5 获取部署列表 **接口描述**:获取部署列表 **接口地址**:`/processDefinition/getDeployments` **请求方式**:`GET` **consumes**:`` **produces**:`["*/*"]` **请求参数**: 暂无 **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.6 根据流程部署ID挂起/激活流程定义 **接口描述**:根据流程部署ID挂起/激活流程定义 **接口地址**:`/processDefinition/suspend/id` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | ---------- | ----- | -------- | -------- | ------ | | depID | 流程部署ID | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.7 根据流程key挂起/激活流程定义 **接口描述**:根据流程key挂起/激活流程定义 **接口地址**:`/processDefinition/suspend/key` **请求方式**:`POST` **consumes**:`["application/json"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | -------- | -------- | ----- | -------- | -------- | ------ | | key | 流程key | query | false | string | | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | | ### 4.4.8 通过bpmn文件部署流程 **接口描述**:通过bpmn文件部署流程 **接口地址**:`/processDefinition/uploadStreamAndDeployment` **请求方式**:`POST` **consumes**:`["multipart/form-data"]` **produces**:`["*/*"]` **请求参数**: | 参数名称 | 参数说明 | in | 是否必须 | 数据类型 | schema | | ----------- | -------------------- | ------ | -------- | -------- | ------ | | name | 流程部署名称 | query | false | string | | | processFile | 设计的流程图bpmn文件 | __file | false | file | file | **响应示例**: ```json { "code": 0, "data": {}, "extra": {}, "isError": true, "isSuccess": true, "msg": "", "path": "", "timestamp": 0 } ``` **响应参数**: | 参数名称 | 参数说明 | 类型 | schema | | --------- | --------------------------- | -------------- | -------------- | | code | 响应编码:0/200-请求处理成功 | integer(int32) | integer(int32) | | data | 响应数据 | object | | | extra | 附加数据 | object | | | isError | | boolean | | | isSuccess | | boolean | | | msg | 提示消息 | string | | | path | 请求路径 | string | | | timestamp | 响应时间戳 | integer(int64) | integer(int64) | **响应状态**: | 状态码 | 说明 | schema | | ------ | ------------ | ------ | | 200 | OK | R | | 201 | Created | | | 401 | Unauthorized | | | 403 | Forbidden | | | 404 | Not Found | |