# 核心表结构

# 流程表

workflow表

列名 类型 说明
id int unsigned id
name varchar(200) 工作流名称
user varchar(100) 工作流创建人
enabled tinyint(1) 是否启用
desc varchar(500) 工作流描述
trigger_app varchar(30) 工作流中起始触发app类型,如:cron, webhook...
trigger_token varchar(50) trigger token
start_app_inst_id varchar(100) 起始app
end_app_inst_id varchar(100) 起始app
engine varchar(100) 使用的工作流类型,不同的类型执行会有区别,包括:标准工作流和快速工作流,默认使用标准工作流
tasks mediumtext 工作流中各个节点的配置参数及关系
create_at timestamp 创建时间
update_at timestamp 更新时间

# 流程实例表

workflow_inst表

列名 类型 说明
id int unsigned 自增长id
uid varchar(32) snowflake算法生成的全局唯一id
p_uid varchar(32) 父uid
workflow_id int unsigned 工作流id
name varchar(200) 工作流名称
user varchar(100) 工作流创建人
executor varchar(100) 工作流触发人,默认是工作流创建人
status varchar(10) 执行状态,请参考流程的生命周期章节
trigger_data mediumtext 开始事件触发时所传递的数据,例如api的post请求体
trigger_app varchar(30) 工作流中起始触发app类型,如:cron, webhook...
start_at char(19) 实例开始时间
end_at char(19) 实例结束时间
start_app_inst_id varchar(100) 开始执行的app
end_app_inst_id varchar(100) 结束执行的app
engine varchar(100) 使用的引擎,不同的引擎对工作流的执行会有区别,包括:标准引擎和快速引擎,默认使用标准引擎
tasks mediumtext 工作流中各个节点的配置参数及关系
workflow_output text 工作流输出结果
cost long int 执行耗时,单位:毫秒
create_at timestamp 创建时间
update_at timestamp 更新时间

# 节点实例表

node_inst表

列名 类型 说明
id int unsigned 自增长id
uid varchar(32) snowflake算法生成的全局唯一id
workflow_uid varchar(32) 工作流实例id,引用workflow表的uid字段
execution_uid varchar(32) 执行uid
index int(11) 索引id,在循环时使用,表示第几次执行
node_id varchar(100) 前端画布生成的节点id,在每一个流程中是唯一的
name varchar(200) 原子任务名称
desc varchar(500) 原子任务说明
template varchar(100) app模板id类型,如:cron-timer、database-handler
trigger_token varchar(50) trigger token
trigger_data mediumtext trigger data
task mediumtext Task参数数据,不同task参数不一样
status varchar(32) 状态,请参考节点的生命周期章节
execute_ip varchar(32) 执行该app的容器ip地址
start_at char(19) 实例开始时间
end_at char(19) 实例结束时间
cost long int 执行耗时,单位:毫秒
create_at timestamp 创建时间
update_at timestamp 更新时间

# 核心接口

WFMC定义的所有接口如下:

● 过程定义数据,以及过程定义数据的转换规范

● 支持不同工作流系统间协同工作的接口

● 支持与各种不同IT应用程序交互的接口

● 支持与用户交互的接口

● 提供系统监视,以及标准功能来简化复合工作流应用环境管理的接口

# 创建流程

请求URL /api/process
请求方法 POST
说明 创建流程

请求

各个字段的说明请参考第三章的《流程定义》。

{
    "name": "Unknown",
    "description": "",
    "startTaskInstId": "",
    "endTaskInstId": "",
    "engine": "fast",
    "status": "",
    "creator": "admin",
    "executor": "",
    "timeout": 0,
    "inputDataSchema": {
        ...
    },
    "outputDataSchema": {
        ...
    },
    "error": "",
    "extension": {
        ...
    },
    "metadata": {
        ...
    },
    "tasks": [
        ...
    ]
}

响应

{
    "response": {
        "id": "proc-avxhke9u"
    }
}

# 获取流程详情

请求URL /api/process/{process_id}
请求方法 GET
说明 获取特定流程详情
请求参数 - process_id (流程ID,字符串)
响应

请求

  • process_id (流程ID,字符串)
/v1/process/proc-avxhke9u

响应

{
    "id":"proc-avxhke9u",
    "name": "Unknown",
    "description": "",
    "startTaskInstId": "",
    "endTaskInstId": "",
    "engine": "fast",
    "status": "",
    "creator": "admin",
    "executor": "",
    "timeout": 0,
    "inputDataSchema": {
        ...
    },
    "outputDataSchema": {
        ...
    },
    "error": "",
    "extension": {
        ...
    },
    "metadata": {
        ...
    },
    "tasks": [
        ...
    ]
}

# 获取任务详情

请求URL /api/process/{process_id}/{task_id}
请求方法 GET
说明 获取特定流程下的任务详情

请求

  • process_id (流程ID,字符串)

  • task_id(任务ID,字符串)

/api/process/proc-10001/task-3udfizra

响应

{
    "instId": "task-3udfizra",
    "name": "脚本任务执行",
    "description": "执行脚本任务",
    "template": "script",
    "positions": [],
    "connections": [],
    "parameters": {
        "code": {
            "label": "代码",
            "type": "string",
            "value": "",
            "default": "",
            "required": true
        }
    },
    "errorHandler": {},
    "loopHandler": {},
    "timeout": 0,
    "isIgnore": false
}

# 启动流程实例

请求URL /api/process/{process_id}
请求方法 POST
说明 启动流程实例

请求

  • process_id (流程ID,字符串)

  • payload (初始化数据,可以为空,也可以传递启动的JSON数据)

/api/process/proc-avxhke9u

{
    "param1": "hello world",
		"param2": "tester"
}

响应

启动成功后,异步返回流程实例ID

{
    "response": {
        "id": "1541815603606036480"
    }
}

# 获取流程实例详情

请求URL /api/processInst/{inst_id}
请求方法 GET
说明 获取流程实例详情
请求参数 - inst_id (流程实例ID,字符串)
响应

请求

  • inst_id (流程实例ID,字符串。注意:每个inst_id是唯一的不重复)
/api/processInst/1541815603606036480

响应

这里主要是获取流程实例中各个任务实例在运行时的数据,即runtimes数据。

{
    "id":"1541815603606036480",
    "proc_id":"proc-avxhke9u",
    "name": "Unknown",
    "description": "",
    "startTaskInstId": "",
    "endTaskInstId": "",
    "engine": "fast",
    "status": "",
    "creator": "admin",
    "executor": "",
    "timeout": 0,
    "inputDataSchema": {
        ...
    },
    "outputDataSchema": {
        ...
    },
    "error": "",
    "extension": {
        ...
    },
    "metadata": {
        ...
    },
    "tasks": [
          {
              "instId": "task-3udfizra",
              "name": "脚本任务执行",
              "description": "执行脚本任务",
              "template": "script",
              "positions": [],
              "connections": [],
              "parameters": {
                  "code": {
                      "label": "代码",
                      "type": "string",
                      "value": "",
                      "default": "",
                      "required": true
                  }
              },
              "errorHandler": {},
              "loopHandler": {},
              "timeout": 0,
              "isIgnore": false,
              "runtimes": [
                  {
                      "index": 0,
                      "startAt": 1700063265000,
                      "endAt": 1700063307000,
                      "status": "done",
                      "error": "",
                      "input": {
                          "code": "xxx"
                      },
                      "output": "ok"
                  }
              ]
          }
    ]
}

# 获取任务实例详情

请求URL /api/processInst/{inst_id}/{task_id}
请求方法 GET
说明 获取某个流程实例下的某个任务执行详情

请求

  • inst_id(流程实例ID,字符串。注意:每个流程实例ID都是唯一不重复的)
  • task_id (任务ID,字符串。注意:流程实例中每个任务ID都是唯一不重复的)
/api/processInst/inst-avxhke9u/task-3udfizra

响应

这里只返回对应流程实例中所关注的任务的运行时数据,即runtimes数据。

{
    "instId": "task-3udfizra",
    "name": "脚本任务执行",
    "description": "执行脚本任务",
    "template": "script",
    "positions": [],
    "connections": [],
    "parameters": {
        "code": {
            "label": "代码",
            "type": "string",
            "value": "",
            "default": "",
            "required": true
        }
    },
    "errorHandler": {},
    "loopHandler": {},
    "timeout": 0,
    "isIgnore": false,
    "runtimes": [
        {
            "index": 0,
            "startAt": 1700063265000,
            "endAt": 1700063307000,
            "status": "done",
            "error": "",
            "input": {
                "code": "xxx"
            },
            "output": "ok"
        }
    ]
}

# 查询代办任务

请求URL /api/taskInsts?user={string}&limit={integer}&offset={integer}
请求方法 GET
说明 查询某个用户待处理的任务列表

请求

  • user (用户,字符串)
  • limit(分页大小,整形)
  • offset(分页偏移,整形)
/api/taskInsts?user=zhangsan&limit=20&offset=0

响应

返回的list数组中的任务实例ID:inst-xf2gh3xs9是唯一不重复的。

{
    "response": {
        "list": [
            {
                "id": "inst-xf2gh3xs9",
                "name":"请假条审批",
                "content":"由于.....",
                "createAt":"2023-12-01 10:00:00"
            }
        ],
        "total": 1
    }
}

# 提交任务

请求URL /api/taskInst/{task_inst_id}
请求方法 POST
说明 任务实例提交

请求

  • task_inst_id (任务实例ID,字符串)
  • payload提交的post参数,根据任务实例的入参来传递key、value数据。可以通过前面的获取任务实例详情接口得到入参列表。
/api/taskInst/inst-xf2gh3xs9

{
    "key1": "value1",
    "key2": "value2"
}
最后更新: 4/6/2024, 8:27:42 AM