
# 创建工作流 - CreateBPM
#### 功能介绍
创建一个工作流。
#### URI
POST*华为云Astro轻应用域名*/u-route/baas/bp/v2.0/metadata/definitions
#### 请求参数
表1请求参数 
| 参数                | 是否必选 | 参数类型            | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| name              | 是    | String          | **参数解释**： 工作流的名称。 **约束限制**： 不涉及。 **取值范围**： 必须以英文字母开头，只能由英文字母，数字和单下划线组成，没有连续的下划线，不能以单下划线结尾，且长度不能超过64个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                   |
| label             | 是    | String          | **参数解释**： 工作流的标签。 **约束限制**： 不涉及。 **取值范围**： 1\~80个字符。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                 |
| description       | 否    | String          | **参数解释**： 工作流的描述信息。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                       |
| version           | 否    | String          | **参数解释**： 工作流的版本号。工作流保存时 ，可以保存为不同的版本，在启用时，可以选择不同的版本进行启用，但是同时只能有一个版本被启用。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                   |
| instanceLabel     | 否    | String          | **参数解释**： 实例标签，可以内嵌系统变量。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。                                                                                                                                                                                                                                                |
| laneSet           | 否    | object          | **参数解释**： 泳道信息。一条泳道代表工作流的流程处理中的一种用户角色。工作流中每个泳道都和队列一一对应。配置了工作队列后，处于不同泳道的图元，分别归属不同的工作队列中的用户去处理。工作队列是在业务场景中，用来记录一类具有相同权限和任务对象的成员集。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                        |
| config            | 否    | object          | **参数解释**： 工作流中的基本配置信息，用于设置隐私（流程或任务是否仅限当前所有者可查看）和流程是否允许撤销，以及通过哪个工作流节点之后不允许撤销。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                        |
| startEvents       | 否    | Array of object | **参数解释**： 起始图元的定义。起始图元的属性包含其下一个连接图元的名称。起始图元是工作流的开始节点，属性中的type默认为"Start"。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                 |
| dataMappers       | 否    | Array of object | **参数解释**： 数据映射定义。数据映射图元主要用来进行变量、字段、属性和常量间的赋值。例如可，以将某个变量或常量的值，通过该图元赋值给另一个变量。当流程到达"数据映射"任务时，进行赋值操作，完成后继续执行后续路线。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                               |
| userTasks         | 否    | Array of object | **参数解释**： 用户任务定义。用户任务用来表示业务流程中由用户参与完成的工作。当引擎处理到该节点时，给指定的用户（参与者）或者一组用户（如某泳道的工作队列）创建待处理的任务项，等待用户的处理。可以配置用户任务的审批信息，界面渲染信息，接收人信息，前置后置动作，数据映射等。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                |
| serviceTasks      | 否    | Array of object | **参数解释**： 自动任务定义，是脚本图元、服务编排图元、记录创建图元、记录查询图元、记录更新图元、记录删除图元和邮件图元的配置信息的集合。例如： - 脚本图元，可以配置指定脚本的出入参，在工作流中执行指定的脚本。  - 服务编排图元可以在工作流中执行指定的服务编排。  - 记录增删改查图元可以在工作流中对指定对象进行增删改查。   **约束限制**： 不涉及。 |
| businessRuleTasks | 否    | Array of object | **参数解释**： 决策表任务定义。该图元根据决策表的配置生成一定的规则，后续根据规则的输出连接网关路由到不同的其他图元节点，当流程到达"规则"任务时，系统根据该规则路由到不同的路线。使用该图元时，需要选择具体使用的决策表。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                       |
| callActivities    | 否    | Array of object | **参数解释**： 活动调用定义。在工作流中，可以嵌套其他工作流。当流程到达"调用活动"任务时，系统自动执行该活动（其实是调用的另一个工作流），执行完成后继续执行后续路线。这里可以配置其他工作流的属性信息，如配置选中工作流的出入参。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                |
| subProcesses      | 否    | Array of object | **参数解释**： 内嵌子流程定义。调用活动和子流程图元都是工作流的内嵌子流程，区别是： - 调用活动把子流程当做一个黑盒，通过参数传递进行调用。  - 内嵌子流程直接在当前流程中规划出一个子流程，子流程可共享父流程的变量，可用于流程步骤的划分、封装和复用。   **约束限制**： 不涉及。                                                                                                                           |
| sendEvents        | 否    | Array of object | **参数解释**： 抛出信号事件定义。当工作流执行到"抛出信号"事件时，引擎向系统内部发出一个事件，事件发出后流程沿后续路线继续执行。抛出的信号，可以被"捕获信号"订阅处理。使用该图元时，需要配置抛出的具体事件，并需要在"输入参数"配置事件参数。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                           |
| catchEvents       | 否    | Array of object | **参数解释**： 捕获事件定义，包括捕获时间事件图元和捕获信号事件图元的配置信息。 - 当工作流执行到"捕获时间"事件时中断在这里，引擎会创建一个定时器，当定时器触发后事件结束，流程沿后续路线继续执行。使用该图元时，需要配置基准时间、偏移时间和偏移单位。  - 当工作流执行到"捕获信号"事件时中断在这里，等待抛出信号事件或者API发出匹配的信号后结束，流程沿后续路线继续执行。使用该图元时，需要配置需要捕获的具体事件、捕获条件以及输出参数。   **约束限制**： 不涉及。                         |
| exclusiveGateways | 否    | Array of object | **参数解释**： 排他网关定义。排他网关用来在流程中，实现一组分支的唯一决策。系统将按照"条件顺序"评估流出网关的分支，流程会执行第一个连线条件被评估为true（当多个条件为true时，将执行第一个决策）的分支，并且不再继续评估下面的分支。如果所有分支条件决策都为false且该网关定义了一个默认的连线，那么该默认分支将被执行。如果没有可到达的分支，抛出异常，流程被中断。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                               |
| inclusiveGateways | 否    | Array of object | **参数解释**： 包容网关定义。包容网关是一类特殊的并行网关，在并行网关的基础上每条连线都可以配置一个条件，符合条件的连线分支都将被并行执行。如果都不符合，若配置了默认分支，将会执行默认分支。每个包容网关都应该成对出现，从包容发散网关出发最终连接到汇聚网关。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                       |
| parallelGateways  | 否    | Array of object | **参数解释**： 并行网关定义。并行网关用于无条件的合并分支，该类网关对连线条件是忽略的。允许流程多进一出，引出的多个分支被工作流引擎并发执行。 并行网关是成对出现的，一对网关中可以有多个并行分支的。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                     |
| eventGateways     | 否    | Array of object | **参数解释**： 事件网关定义。通常网关根据连线条件来决定后续路径，这要求条件信息必须存在于流程自身之中。但是，当需要选择的后续路径的条件不是来自该流程时，可以使用事件网关。事件网关只有分支行为，允许从多个候选分支中选择事件最先到达的分支（如时间事件、消息事件），并取消其他分支。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                              |
| slas              | 否    | Array of object | **参数解释**： SLA定义。SLA是为用户任务设置定时器，时间逾期可增加紧急程度并执行相应动作。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                       |
| constants         | 否    | Array of object | **参数解释**： 常量定义，即全局上下文中配置的常量信息。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                             |
| variables         | 否    | Array of object | **参数解释**： 变量定义，即全局上下文中配置的变量信息。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                           |
| endEvents         | 否    | Array of object | **参数解释**： 结束事件定义，表示工作流或分支的自然结束。当存在多个执行分支路线时，最末尾一个分支自然结束后，工作流实例结束。 **约束限制**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                        |
   
#### 响应参数
表2响应参数 
| 参数      | 参数类型   | 描述                                                                                                                                                                                                                                            |
|:---|:---|:---|
| resCode | String | **参数解释**： 返回码。 **取值范围**： 如果返回"0"代表请求成功，其他错误码说明请参考[错误码（数据面）](https://support.huaweicloud.com/api-astrozero/astrozero_api_0082.html)。 |
| resMsg  | String | **参数解释**： 返回消息。 **取值范围**： 成功返回"成功"，其他情况会返回具体的错误信息。                                                                              |
| result  | Object | **参数解释**： 成功会返回工作流的一个ID值，失败会返回错误和警告信息。                                                                                                                                                                    |
   
#### 请求示例
创建工作流实例。
```
POST https://华为云Astro轻应用域名/u-route/baas/bp/v2.0/metadata/definitions 
{
    "config": {
        "cancelable": false,
        "noCancelAfterElem": ""
    },
    "dataMappers": [
        {
            "assignmentItems": [
                {
                    "assignTo": "dateList",
                    "name": "",
                    "operator": "add",
                    "value": "2019-03-04",
                    "valueType": ""
                },
                {
                    "assignTo": "dateList",
                    "name": "",
                    "operator": "add",
                    "value": "2020-01-02",
                    "valueType": ""
                }
            ],
            "connector": "userTask",
            "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L1\",\"points\":[\"619 125\",\"643 125\",\"662.5 125\",\"662.5 100\",\"682 100\",\"706 100\"]}",
            "description": "",
            "label": "Data Mapper",
            "locationX": 575,
            "locationY": 125,
            "name": "dataMapper",
            "connectors": []
        }
    ],
    "description": "",
    "label": "SimpleBP",
    "laneSet": {
        "label": "",
        "lanes": [
            {
                "elements": [
                    "userTask",
                    "userTask1",
                    "dataMapper",
                    "start"
                ],
                "height": 201.35220031738282,
                "label": "lane",
                "name": "lane",
                "role": "LoanRequest.Applicant",
                "width": 1080
            }
        ],
        "name": ""
    },
    "name": "SimpleBP",
    "slas": [
        {
            "active": true,
            "criteria": "",
            "deadlineDays": 0,
            "deadlineHours": 0,
            "deadlineIncreaseUrgencyBy": 2,
            "deadlineMinutes": 0,
            "deadlineOnlyBusinessDays": false,
            "goalActions": [
                {
                    "action": "",
                    "criteria": "{!IsMatched} && {!Owner}",
                    "name": "sla-act",
                    "type": "Notify Manager"
                }
            ],
            "goalDays": 0,
            "goalHours": 0,
            "goalIncreaseUrgencyBy": 1,
            "goalMinutes": 0,
            "goalOnlyBusinessDays": false,
            "label": "userTask1_sla",
            "name": "userTask1_sla",
            "startWhen": "",
            "variable": "",
            "actions": []
        },
        {
            "active": true,
            "criteria": "",
            "deadlineDays": 0,
            "deadlineHours": 0,
            "deadlineIncreaseUrgencyBy": 2,
            "deadlineMinutes": 0,
            "deadlineOnlyBusinessDays": false,
            "goalActions": [
                {
                    "action": "NotifyBPManager",
                    "criteria": "",
                    "name": "sla-act1",
                    "type": "Notify Manager"
                }
            ],
            "goalDays": 1,
            "goalHours": 0,
            "goalIncreaseUrgencyBy": 1,
            "goalMinutes": 0,
            "goalOnlyBusinessDays": false,
            "label": "userTask_sla",
            "name": "userTask_sla",
            "startWhen": "",
            "variable": "",
            "actions": []
        }
    ],
    "startEvents": [
        {
            "connector": "dataMapper",
            "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L0\",\"points\":[\"151.5 100\",\"175.5 100\",\"341.25 100\",\"341.25 110.5\",\"507 110.5\",\"531 110.5\"]}",
            "label": "Start",
            "locationX": 125,
            "locationY": 100,
            "name": "start",
            "type": "Start",
            "startType": "",
            "renderType": "",
            "render": "",
            "document": "",
            "description": ""
        }
    ],
    "userTasks": [
        {
            "approvalType": "Single",
            "connector": "userTask1",
            "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L1\",\"points\":[\"794 100\",\"818 100\",\"875 100\",\"875 100\",\"932 100\",\"956 100\"]}",
            "description": "wuli desc",
            "groupAsSingleParticipant": false,
            "inputAssignments": [
                {
                    "input": "$Task.Title",
                    "name": "",
                    "value": "{!$GlobalConstant.EmptyString}",
                    "valueType": ""
                }
            ],
            "label": "User Task",
            "locationX": 750,
            "locationY": 100,
            "name": "userTask",
            "participants": [
                {
                    "type": "user",
                    "value": "ecommerce6"
                }
            ],
            "preActions": [
                {
                    "action": "{!$GlobalConstant.EmptyString}",
                    "criteria": "",
                    "name": "action",
                    "type": "Set Status"
                }
            ],
            "render": "SimpleBP$Form1$form",
            "renderType": "Form",
            "routeType": "Name and Expressions",
            "router": {
                "defaultRouteTo": "",
                "defaultRouteType": "",
                "name": ""
            },
            "title": "wu li tu cao",
            "usingSLA": "userTask_sla",
            "routeTo": "",
            "faultConnector": "",
            "boundaryEvents": [],
            "outputAssignments": [],
            "document": "",
            "priority": 3
        },
        {
            "approvalType": "Single",
            "groupAsSingleParticipant": false,
            "label": "User Task",
            "locationX": 1000,
            "locationY": 100,
            "name": "userTask1",
            "priority": 3,
            "render": "SimpleBP$ut1$form",
            "renderType": "Form",
            "routeType": "Last Assignee In Lane",
            "router": {
                "defaultRouteTo": "",
                "defaultRouteType": "",
                "name": ""
            },
            "title": "T2",
            "routeTo": "",
            "connector": "",
            "faultConnector": "",
            "boundaryEvents": [],
            "inputAssignments": [],
            "outputAssignments": [],
            "document": "",
            "description": ""
        }
    ],
    "variables": [
        {
            "currencyFactor": 0,
            "dataType": "checkBox",
            "defaultValue": "{!$GlobalConstant.True}",
            "defaultValueType": "",
            "description": "",
            "extNS": "",
            "extType": "",
            "isCollection": false,
            "isInput": false,
            "isNested": false,
            "isOutput": false,
            "name": "IsMatched"
        },
        {
            "currencyFactor": 0,
            "dataType": "text",
            "defaultValue": "Hello",
            "defaultValueType": "",
            "description": "",
            "extNS": "",
            "extType": "",
            "isCollection": false,
            "isInput": false,
            "isNested": false,
            "isOutput": false,
            "name": "Owner"
        },
        {
            "currencyFactor": 0,
            "dataType": "date",
            "defaultValue": "",
            "defaultValueType": "",
            "description": "",
            "extNS": "",
            "extType": "",
            "isCollection": false,
            "isInput": false,
            "isNested": false,
            "isOutput": false,
            "name": "dateVar"
        },
        {
            "currencyFactor": 0,
            "dataType": "date",
            "defaultValue": "",
            "defaultValueType": "",
            "description": "",
            "extNS": "",
            "extType": "",
            "isCollection": true,
            "isInput": false,
            "isNested": false,
            "isOutput": false,
            "name": "dateList"
        },
        {
            "currencyFactor": 0,
            "dataType": "extStruct",
            "defaultValue": "",
            "defaultValueType": "",
            "description": "",
            "extNS": "SimpleBP",
            "extType": "Form1Form",
            "isCollection": false,
            "isInput": false,
            "isNested": false,
            "isOutput": false,
            "name": "Form1Form"
        }
    ],
    "version": "1.0.1",
    
    "constants": [],
    "serviceTasks": [],
    "businessRuleTasks": [],
    "callActivities": [],
    "subProcesses": [],
    "endEvents": [],
    "sendEvents": [],
   
    "catchEvents": [],
    "exclusiveGateways": [],
    "parallelGateways": [],
    "eventGateways": [],
    
}
```
#### 响应示例
```
{
    "resCode": "0",
    "resMsg": "成功",
    "result": {
        "errors": [],
        "id": "000y000000aM8XixTN0S",
        "warnings": []
    }
}
```
#### 状态码
状态码请参见[状态码](https://support.huaweicloud.com/api-astrozero/astrozero_api_0081.html)。
#### 错误码
错误码请参见[错误码（数据面）](https://support.huaweicloud.com/api-astrozero/astrozero_api_0082.html)。
