云服务器内容精选

  • 请求示例 对一个BPM实例修改或设置,设置其中两个开发者自定义的参数值,将变量cpuNumber的值改为1, custVar1的值改为value1。被操作的BPM实例ID是“002N000000Q3QW4IMAOO”。 PUT https://华为云Astro轻应用 域名 /u-route/baas/bp/v2.0/runtime/instances/002N000000Q3QW4IMAOO/variables { "cpuNumber":1, "custVar1":"value1" }
  • URI PUT 华为云Astro轻应用域名/u-route/baas/bp/v2.0/runtime/instances/{instance_id}/variables 表1 路径参数 参数 是否必选 参数类型 描述 instance_id 是 String 参数解释: 对应一个具体BPM实例的标识,可通过调用查询BPM实例接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 请求示例 创建BPM实例。 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": [], }
  • 请求参数 表1 请求参数 参数 是否必选 参数类型 描述 name 是 String 参数解释: BPM的名称。 约束限制: 不涉及。 取值范围: 必须以英文字母开头,只能由英文字母,数字和单下划线组成,没有连续的下划线,不能以单下划线结尾,且长度不能超过64个字符。 默认取值: 不涉及。 label 是 String 参数解释: BPM的标签。 约束限制: 不涉及。 取值范围: 1~80个字符。 默认取值: 不涉及。 description 否 String 参数解释: BPM的描述信息。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 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 参数解释: 内嵌子流程定义。调用活动和子流程图元都是BPM的内嵌子流程,区别是: 调用活动把子流程当做一个黑盒,通过参数传递进行调用。 内嵌子流程直接在当前流程中规划出一个子流程,子流程可共享父流程的变量,可用于流程步骤的划分、封装和复用。 约束限制: 不涉及。 sendEvents 否 Array of object 参数解释: 抛出信号事件定义。当BPM执行到“抛出信号”事件时,引擎向系统内部发出一个事件,事件发出后流程沿后续路线继续执行。抛出的信号,可以被“捕获信号”订阅处理。使用该图元时,需要配置抛出的具体事件,并需要在“输入参数”配置事件参数。 约束限制: 不涉及。 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 参数解释: 结束事件定义,表示BPM或分支的自然结束。当存在多个执行分支路线时,最末尾一个分支自然结束后,BPM实例结束。 约束限制: 不涉及。
  • 响应示例 { "resCode": "0", "resMsg": "成功", "result": { "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\"]}", "connectors": [ ], "description": "", "label": "Data Mapper", "locationX": 575, "locationY": 125, "name": "dataMapper" } ], "description": "", "id": "001L000000Peuw1Q318a", "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": [ { "actions": [ ], "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": "" } ], "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\"]}", "description": "", "document": "", "label": "Start", "locationX": 125, "locationY": 100, "name": "start", "render": "", "renderType": "", "startType": "", "type": "Start" } ], "startStage": null, "startType": "", "status": "Warning", "status.name": "Warning", "userTasks": [ { "approvalType": "Single", "boundaryEvents": [ ], "connector": "userTask1", "connectorPoint": "{\"fromPort\":\"R1\",\"toPort\":\"L1\",\"points\":[\"794 100\",\"818 100\",\"875 100\",\"875 100\",\"932 100\",\"956 100\"]}", "description": "wuli desc", "document": "", "faultConnector": "", "groupAsSingleParticipant": false, "inputAssignments": [ { "input": "$Task.Title", "name": "", "value": "{!$GlobalConstant.EmptyString}", "valueType": "" } ], "label": "User Task", "locationX": 750, "locationY": 100, "name": "userTask", "outputAssignments": [ ], "participants": [ { "type": "user", "value": "ecommerce6" } ], "preActions": [ { "action": "{!$GlobalConstant.EmptyString}", "criteria": "", "name": "action", "type": "Set Status" } ], "priority": 3, "render": "SimpleBP$Form1$form", "renderType": "Form", "routeTo": "", "routeType": "Name and Expressions", "router": { "defaultRouteTo": "", "defaultRouteType": "", "name": "" }, "title": "wu li tu cao", "usingSLA": "userTask_sla" }, { "approvalType": "Single", "boundaryEvents": [ ], "connector": "", "description": "", "document": "", "faultConnector": "", "groupAsSingleParticipant": false, "inputAssignments": [ ], "label": "User Task", "locationX": 1000, "locationY": 100, "name": "userTask1", "outputAssignments": [ ], "priority": 3, "render": "SimpleBP$ut1$form", "renderType": "Form", "routeTo": "", "routeType": "Last Assignee In Lane", "router": { "defaultRouteTo": "", "defaultRouteType": "", "name": "" }, "title": "T2" } ], "usingSLA": "", "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" } }
  • URI DELETE 华为云Astro轻应用域名/u-route/baas/bp/v2.0/runtime/instances/{instance_id} 表1 路径参数 参数 是否必选 参数类型 描述 instance_id 是 String 参数解释: 对应一个具体BPM实例的标识,可通过调用查询BPM实例接口查看(响应消息中的“id”)。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • BPM能力 BPM可以提供如下能力,本示例中仅使用到前三种能力: 端到端页面流编排 将用户交互的前端页面与各种任务之间进行编排,形成一个完整的商业流。 支持长流程 步骤之间可以是立即执行,也可以是小时、天、甚至更长时间的间隔,支持SLA期限管理。 跨人员的工作流 支持每一步由不同的用户、组串行或并行处理。 BPM内部进行调用 BPM可以作为子BPM被其他BPM进行内部调用。在总的BPM中使用“调用活动”元素,可嵌套使用子BPM。
  • 了解BPM设计界面 图1 BPM设计界面 整体编辑器页面由上方按钮区域、左侧面板图元区域、中间画布工作区域、右侧属性配置区域四部分组成。 表1 BPM设计界面说明 编号区域名称 功能说明 1 功能按钮区域,包括锁定、解锁、启用(或者禁用)、保存、另存为新版本或者新BPM、运行、操作回退、撤销回退、启用流跟踪器以及切换版本的操作。支持快捷键操作,即可脱离鼠标直接用键盘操作。 2 BPM的组成图元,一个BPM业务流程由以下几个部分组成: 事件图元(Events):用来表明BPM的生命周期中发生的事件,例如开始、捕获信号等。 网关图元(Gateways):网关用来控制流程的执行流向,可理解为决策、判断。 活动图元(Activities):是BPM的核心图元,可理解为节点或者步骤,例如调用脚本、用户需要做的任务。 3 BPM设计操作区域。在该区域可对BPM进行具体流程设计、组件放置。 不同色块的表示不同的泳道,BPM由一个或多个泳道组成,泳道中包括了实现不同功能逻辑的图元。 选中泳道或者某个图元,可以在右侧属性配置区域进行各种配置操作。 4 整个BPM、泳道或者图元属性设置区域。 当选择BPM中图元时,右侧配置区域为该图元的属性设置区域。 当选择BPM中空白区域时,右侧配置区域为该BPM的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 操作步骤 创建流程大致是先创建3个泳道,再拖拽泳道图元,然后配置相关图元,保存并启用。 在“我的应用”中,单击“设备维修管理系统”,进入应用。 在“WorkOrder”目录中,将鼠标放在“Bpm”上,单击界面上出现的“+”,在弹出菜单中选择“BPM”。 在弹窗中,设置“标签”、“名称”为“WorkOrderBpm”,单击“添加”。 图2 添加BPM 在设计区域,单击2次“AddLane”,为BPM添加2个角色泳道。 图3 添加泳道 修改泳道基础属性。 选中“Lane”,在右侧属性配置区域,设置泳道标签为“客服人员”,“工作队列”设置为创建工作队列中创建的“客服人员”。 图4 修改客服人员泳道基本信息 参考上一步,分别设置其他两个泳道的“标签”及“工作队列”。 表2 泳道标签及工作队列 泳道初始标签 泳道修改后标签 工作队列 Lane(上一步已配置) 客服人员 客服人员 lane1 派单员 派单员 lane2 维修人员 维修人员 创建BPM中用的变量及对象变量。 在右侧属性面板区域,单击,展开全局上下文。 图5 展开全局上下文 单击“变量”后的图标4次,分别创建以下变量,单击变量后的,可以修改字段类型,创建完成后,如图6所示。 表3 BPM变量 变量名 字段类型 id 文本 status 文本 assignedFme 文本 transInfo 任意 图6 创建变量 单击“对象变量”的,在弹窗中设置“名称”为“workOrderData”,“对象”设置为“HW__WorkOrder__ CS T”(工单对象),加粗斜体内容请以实际命名空间前缀为准,然后单击“保存”。 图7 新增对象变量 再次单击“对象变量”的,在弹窗中设置“名称”为“statusInfo”,“对象”设置为“HW__WorkOrder__CST”(工单对象),然后单击“保存”。 拖拽并配置“客服人员”泳道。 从左侧“活动”图元区域,拖拽一个“数据映射”图元到“客服人员”泳道中。 选中“Data Mapper”图元,然后在右侧导航菜单上单击,进入数据映射配置,再单击,展开全局上下文。 图8 拖拽并设置“数据映射”图元 分别从全局上下文的“对象变量”、“系统变量”中拖拽参数到数据映射配置下: 拖拽对象变量“workOrderData”下的“HW__instanceId__CST”字段到“变量”下,“操作符”为“=”,拖拽“系统变量”下的“{!$Flow.RootID}”作为“值”。 图9 拖拽赋值变量 从左侧“活动”图元区域,拖拽一个“调用脚本”图元到“客服人员”泳道中,并设置“标签”为“创建工单”、“名称”为“createWorkOrder”。 图10 设置创建工单图元 选中“创建工单”图元,单击,再单击“全局上下文”,配置“创建工单”图元绑定的脚本以及输入输出参数。 在“脚本配置”下选择“生成工单”脚本“HW__createWorkOrder”。 从全局上下文中拖拽对象变量“workOrderData”到“输入参数”的“源”输入框中,作为输入参数的值。 设置“输出参数”为“id”,并拖拽变量“id”作为“目标”输入框中的值。 图11 配置“创建工单”图元 从“Start”图元中拖拽一条连线到“Data Mapper”图元,然后从“Data Mapper”图元拖拽一条连线到“创建工单”图元,默认“连线类型”为“下一步”。 图12 拖拽连线 拖拽并配置“派单员”泳道。 从左侧“活动”图元区域,依次拖拽一个“用户任务”、“调用脚本”图标到“派单员”泳道中。 设置“用户任务”图元的“标签”为“派单员派单”、“名称”为“dispatchWorkOrderList”。 设置“调用脚本”图元的“标签”为“派单”、“名称”为“dispatch”。 选中“派单员派单”图元,单击,设置“任务标题”、“任务描述”为“派单员派单”,“渲染类型”为“标准页面”,“页面”设置为“HW__dispatchWorkOrder”。 图13 用户任务配置 选中“派单”图元,单击,再单击“全局上下文”,配置“派单”图元绑定的脚本以及输入输出参数。 在“脚本配置”下选择“生成工单”脚本“HW__dispatchWorkOrder”。 从全局上下文中,拖拽变量“transInfo”到“输入参数”的“源”输入框中,作为输入参数的值。 在“输出参数”下,单击“新增行”,设置“输入参数”为“id”、“assignedFme”,并从全局上下文中,拖拽变量“id”、“assignedFme”作为“目标”输入框中的值。 图14 配置“派单”图元 从“派单员派单”图元中拖拽一条连线到“派单”图元,然后再从“创建工单”图元中拖拽一条连线到“派单员派单”图元,默认“连线类型”均为“下一步”。 图15 拖拽连线 拖拽并配置“维修人员”泳道。 从左侧“活动”图标区域,拖拽2个“用户任务”、2个“调用脚本”、1个“排他网关”以及“终止”图元到“维修人员”泳道中,然后调整图元顺序。 图16 拖拽并调整图元顺序 从左到右,分别设置2个“用户任务”、2个“调用脚本”图元的基本属性,具体如表4所示,设置完成后如图17所示。 表4 图元基本属性设置 图元(从左向右) 标签 名称 用户任务1 维修人员接单 takeWorkOrder 调用脚本1 接单 takeWorkOrder1 用户任务2 维修人员关单 dealWorkOrder 调用脚本2 关闭工单 closeWorkOrder 终止 End end 图17 图元基本属性设置 配置“维修人员接单”图元。 选中“维修人员接单”图元,单击,并展开全局上下文,配置“维修人员接单”图元,详细配置如表5所示。 图18 用户任务配置 表5 用户任务配置 参数项 值 任务标题 维修人员接单 任务描述 维修人员任务列表 渲染类型 标准页面 页面 HW__workOrderListM 接收人下“类型” 名称和表达式 参与者下“类型” 表达式 参与者下“取值” “变量”下的“assignedFme” 说明: 请直接从全局上下文拖拽“assignedFme”到“取值”下,请勿手动输入,手动输入的值系统可能不识别。 配置“接单”图元。 选中“接单”图元,单击,再单击“全局上下文”,并展开全局上下文,配置“维修人员接单”图元,详细配置如表5所示。 请直接从全局上下文拖拽“statusInfo”、“id”、“status”到输入输出参数对应“源”或“目标”下,请勿手动输入,手动输入的值系统可能不识别。 图19 配置“接单”图元 表6 接单图元配置 参数项 值 脚本 HW__modifyOrderStatus 输入参数“statusInfo” 对象变量下“statusInfo” 输出参数“id” 变量下“id” 输出参数“status” 变量下“status” 配置“维修人员关单”图元。 选中“维修人员关单”图元,单击,设置“任务标题”为“维修人员关单”,“任务描述”为“维修人员任务列表”,“渲染类型”为“标准页面”,“页面”设置为“HW__workOrderListM”,并设置“当前泳道中的上一个任务被分配的人员”,如图20所示。 图20 配置“维修人员关单”图元 配置“关闭工单”图元。 选中“关闭工单”图元,单击,再单击“全局上下文”,并展开全局上下文,配置“关闭工单”图元,详细配置如表5所示。 请直接从全局上下文拖拽“statusInfo”、“id”、“status”到输入输出参数对应“源”或“目标”下,请勿手动输入,手动输入的值系统可能不识别。 图21 拖拽关闭工单输入输出值 表7 接单图元配置 参数项 值 脚本 HW__modifyOrderStatus 输入参数“statusInfo” 对象变量下“statusInfo” 输出参数“id” 变量下“id” 输出参数“status” 变量下“status” 拖拽图元直接的关系连线,具体如图22所示。 图22 添加图元之间连线 配置“排他网关”图元连线属性。 选中“派单员派单”与“排他网关”之间的连线,单击鼠标右键,选择“配置”,设置“标签”为“拒单”,再单击“新增行”,拖拽变量“status”到“资源”下,设置“比较符”为“==”,“值”为“"拒单"”。 图23 选中排他网关图元连线 图24 配置“拒单”连线 选择“排他网关”图元与“维修人员关单”图元之间的连线,参考上一步,设置连线,设置“标签”为“接单”,再单击“新增行”,拖拽变量“status”到“资源”下,设置“比较符”为“==”,“值”为“"接单"”。 图25 配置“接单”连线 单击页面上方的,再单击,启用BPM。
  • 记录创建 “记录创建”图元用于新增平台对象的实例记录,类似于数据库中的INSERT INTO命令。系统提供了以下两种模式,新增对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,将该对象变量或对象变量数组拖拽到“变量”输入框中,使用该对象变量或对象变量数组的值,创建实例记录。 图5 对象模式创建 条件模式:需要先指定对象并为对象的字段赋值,来创建记录。如下图所示,为“Account”对象新增实例记录,在变量“id”中保存新建的记录ID。 图6 条件模式创建
  • 记录删除 “记录删除”图元能够删除平台对象的实例记录,类似于数据库中的DELETE命令。系统提供了以下两种模式,删除对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,并将该对象变量或对象变量数组拖拽到“变量”输入框中,使用该对象变量或对象变量数组的记录ID,删除对应的对象记录。 图11 对象模式 条件模式:需要指定对象并在条件中,设置指定对象部分字段的值,根据条件删除符合条件的对象记录。 图12 条件模式
  • 邮件 当流程到达“邮件”任务时,系统自动发送邮件,完成后继续执行后续路线。 使用邮件图元,需要提前配置租户的默认邮件服务器,具体操作请参考服务编排、BPM、脚本中发送邮件功能不可用。 图19 调用邮件页面 邮件配置:支持“直接编辑”手动设置邮件信息或“基于模板”选择邮件模板。 模板:当“邮件配置”设置为“直接编辑”时,需要配置邮件标题。 内容:当“邮件配置”设置为“直接编辑”时,需要配置邮件内容。 主题:当“邮件配置”设置为“基于模板”时,需要选择邮件模板。 地址:设置接收人的邮箱地址。 文本:直接输入邮箱地址,多个地址请用分号分隔,或者从全局上下文拖拽变量代表一个接收人的邮箱地址。 集合:可以从全局上下文拖拽集合变量,集合变量即数组型变量,表示多个接收人的邮箱地址。在定义变量时,勾选“是否为数组”,则该变量被定义为集合变量。 图20 集合 抄送:抄送人的邮箱地址。 密送:密送人的邮箱地址。 是否同步发送:是否开启同步发送功能。
  • 记录更新 “记录更新”图元用于更新平台对象的实例记录,类似于数据库中的UPDATE命令。系统提供了以下两种模式,更新对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,并将该对象变量或对象变量数组拖拽到“变量”输入框中,即可根据对象变量中的记录ID,将对象变量更新到数据库中,更新的值来源于对象变量中的值。如下图所示,根据对象变量数组“account”中的记录ID,将对象变量中的值更新到数据库中。 图9 对象模式 条件模式:需要指定对象并在条件中设置指定对象部分字段的值,在赋值中设置需要更新的目标字段及更新值,最后根据条件查找符合条件的对象记录并将赋值中的值更新到数据库中。 图10 条件模式
  • 调用脚本 当流程到达“调用脚本”任务时,系统自动执行脚本,完成后继续执行后续路线。 使用该图元时,需要选择具体调用的脚本,配置输入输出参数。 图13 调用脚本配置页面 流程编排中只允许调用当前应用工程下的资源(例如脚本、服务编排),调用脚本中可供选择的脚本和该流程编排都处于同一应用下。 例如,流程编排A中需要调用脚本B,请确保A和B处于同一应用中。若需要调用的资源不在同一应用中,则在流程编排A所在的应用中新建脚本B,或选择“使用已有脚本”导入脚本B。再在流程编排A中,使用“调用脚本”图元调用该脚本。 图14 使用已有脚本新增脚本
  • 记录查询 “记录查询”图元用于根据条件查询平台对象的实例记录,类似于数据库中的SELECT命令。系统提供了以下两种模式,查询对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,将该对象变量或对象变量数组拖拽到“变量”输入框中,并设置条件以及选择排序方式,即可实现根据条件和排序方式,将查询结果保存在对象变量中。如下图所示,根据条件查询对象数据,并将查询结果保存在对象变量数组“account”中。 图7 对象模式查询 条件模式:需要指定对象并在条件中设置指定对象部分字段的值,根据条件查询符合条件的对象记录,并赋值到设置的变量上。 图8 条件模式查询 对象:查询的具体对象名。 剔重:若查询记录有重复值,是否需要删掉重复记录只保留一条记录。 条件:选中对象后,该条件区域“字段”列会出现该对象的字段。单击“新增行”,可设置查询数据的条件。 在“字段”中选择要进行判断的对象字段,在“比较符”中选择相应的比较符,“值”则可从全局上下文拖拽变量或者直接输入“{!变量名}”。 排序字段/顺序:使查询结果根据某个字段进行升序或者降序排序。 记录行的偏移量:分页,跳过前n条记录,从第n+1条记录开始。 记录行的最大数目:分页,每页最多显示的记录数。 记录的总行数存入变量:限定查询出来的总记录数,存入变量中。 (输出)源/目标:输出的结果。其中,“源”为需要查询的字段,查询结果需要保存到设置的变量中,“目标”为设置的变量。 无记录时配置空值:当根据条件查询无记录时,则变量为空值。