云服务器内容精选

  • 记录删除 “记录删除”图元能够删除平台对象的实例记录,类似于数据库中的DELETE命令。系统提供了以下两种模式,删除对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,并将该对象变量或对象变量数组拖拽到“变量”输入框中,使用该对象变量或对象变量数组的记录ID,删除对应的对象记录。 图11 对象模式 条件模式:需要指定对象并在条件中,设置指定对象部分字段的值,根据条件删除符合条件的对象记录。 图12 条件模式
  • 邮件 当流程到达“邮件”任务时,系统自动发送邮件,完成后继续执行后续路线。 使用邮件图元,需要提前配置租户的默认邮件服务器,具体操作请参考服务编排、BPM、脚本中发送邮件功能不可用。 图19 调用邮件页面 邮件配置:支持“直接编辑”手动设置邮件信息或“基于模板”选择邮件模板。 模板:当“邮件配置”设置为“直接编辑”时,需要配置邮件标题。 内容:当“邮件配置”设置为“直接编辑”时,需要配置邮件内容。 主题:当“邮件配置”设置为“基于模板”时,需要选择邮件模板。 地址:设置接收人的邮箱地址。 文本:直接输入邮箱地址,多个地址请用分号分隔,或者从全局上下文拖拽变量代表一个接收人的邮箱地址。 集合:可以从全局上下文拖拽集合变量,集合变量即数组型变量,表示多个接收人的邮箱地址。在定义变量时,勾选“是否为数组”,则该变量被定义为集合变量。 图20 集合 抄送:抄送人的邮箱地址。 密送:密送人的邮箱地址。 是否同步发送:是否开启同步发送功能。
  • 记录更新 “记录更新”图元用于更新平台对象的实例记录,类似于数据库中的UPDATE命令。系统提供了以下两种模式,更新对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,并将该对象变量或对象变量数组拖拽到“变量”输入框中,即可根据对象变量中的记录ID,将对象变量更新到数据库中,更新的值来源于对象变量中的值。如下图所示,根据对象变量数组“account”中的记录ID,将对象变量中的值更新到数据库中。 图9 对象模式 条件模式:需要指定对象并在条件中设置指定对象部分字段的值,在赋值中设置需要更新的目标字段及更新值,最后根据条件查找符合条件的对象记录并将赋值中的值更新到数据库中。 图10 条件模式
  • 调用脚本 当流程到达“调用脚本”任务时,系统自动执行脚本,完成后继续执行后续路线。 使用该图元时,需要选择具体调用的脚本,配置输入输出参数。 图13 调用脚本配置页面 流程编排中只允许调用当前应用工程下的资源(例如脚本、服务编排),调用脚本中可供选择的脚本和该流程编排都处于同一应用下。 例如,流程编排A中需要调用脚本B,请确保A和B处于同一应用中。若需要调用的资源不在同一应用中,则在流程编排A所在的应用中新建脚本B,或选择“使用已有脚本”导入脚本B。再在流程编排A中,使用“调用脚本”图元调用该脚本。 图14 使用已有脚本新增脚本
  • 规则 该图元根据决策表的配置生成一定的规则,后续根据规则的输出连接网关路由到不同的其他图元节点,当流程到达“规则”任务时,系统根据该规则路由到不同的路线。 使用该图元时,需要选择具体使用的决策表,决策表的创建请参见如何创建决策表。 图16 调用规则配置页面 规则实现 实现类型:规则基于决策表生成,请选择决策表类型。 引用:决策表的输入参数名称。此处只能使用当前项目依赖BO中,公开的及全局的已启用的决策表。 输入参数 目标:决策表的输入参数名称,直接在下拉框中选择即可。 源:BPM中的变量,为目标赋值。可以直接填写,也可以拖入全局上下文变量,将BPM中的变量赋值给决策表中的输入参数。 输出参数 目标:决策表的输出参数名称,直接在下拉框中选择即可。 源:BPM中的变量,将决策表中的输出参数赋值给BPM中的变量。 例如,在问题单流程中,问题单的BPM设计流程如下,业务的流转通过规则图元(即“步骤选择”)驱动,不同的规则输出不同的步骤取值,根据步骤取值路由到不同的步骤中。 图17 问题单流程
  • 子流程 子流程任务是一个特殊的自动化容器任务,其内在包含了对子流程(Sub Process)的创建、启动和调度管理。 当流程到达子流程任务时,按照配置策略自动启动子流程实例,父流程的该分支中断,在这里等待子流程实例全部结束后继续执行后续路线。 子流程模型可以再包含调用子流程,成为每层嵌套的多级流程。 图22 子流程实例 调用活动和子流程图元都是BPM的内嵌子流程,区别是:调用活动则把子流程当做一个黑盒,通过参数传递进行调用;内嵌子流程则直接在当前流程中规划出一个子流程,子流程可共享父流程的变量。可用于流程步骤的划分、封装和复用。 内嵌子流程中,使用“终止”事件只终止当前内嵌子流程。
  • 记录查询 “记录查询”图元用于根据条件查询平台对象的实例记录,类似于数据库中的SELECT命令。系统提供了以下两种模式,查询对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,将该对象变量或对象变量数组拖拽到“变量”输入框中,并设置条件以及选择排序方式,即可实现根据条件和排序方式,将查询结果保存在对象变量中。如下图所示,根据条件查询对象数据,并将查询结果保存在对象变量数组“account”中。 图7 对象模式查询 条件模式:需要指定对象并在条件中设置指定对象部分字段的值,根据条件查询符合条件的对象记录,并赋值到设置的变量上。 图8 条件模式查询 对象:查询的具体对象名。 剔重:若查询记录有重复值,是否需要删掉重复记录只保留一条记录。 条件:选中对象后,该条件区域“字段”列会出现该对象的字段。单击“新增行”,可设置查询数据的条件。 在“字段”中选择要进行判断的对象字段,在“比较符”中选择相应的比较符,“值”则可从全局上下文拖拽变量或者直接输入“{!变量名}”。 排序字段/顺序:使查询结果根据某个字段进行升序或者降序排序。 记录行的偏移量:分页,跳过前n条记录,从第n+1条记录开始。 记录行的最大数目:分页,每页最多显示的记录数。 记录的总行数存入变量:限定查询出来的总记录数,存入变量中。 (输出)源/目标:输出的结果。其中,“源”为需要查询的字段,查询结果需要保存到设置的变量中,“目标”为设置的变量。 无记录时配置空值:当根据条件查询无记录时,则变量为空值。
  • 用户任务 用户任务用来表示,业务流程中由用户参与完成的工作。当引擎处理到该节点时,给指定的用户(参与者)或者一组用户(如某泳道的工作队列)创建待处理的任务项,等待用户的处理。 在用户任务配置界面,配置任务接收人和活动界面。 图1 用户任务配置页面 任务标题:显示在任务界面的标题。 任务描述:显示在任务界面的任务描述。 优先级:该任务的优先级。 渲染类型:用户处理的界面,可以是标准页面、标准表单或高级页面。当配置为标准表单时,需要配置用户可执行的动作(例如同意或拒绝)。 类型:待处理任务的用户类型。 当前泳道:可配置为“当前泳道角色的任意成员”或者“当前泳道中的上一个任务被分配的人员”。 流程发起人的主管:当配置为该类型时,需要配置“部门经理层级”。 名称和表达式:当配置为该类型时,需要配置“参与者”。 基于规则:当配置为该类型时,需要配置具体的“规则”。 参与者:当类型为“名称和表达式”时,该参数才会显示。参与者类型可以是“用户”、“组”或者“表达式”。当“参与者”配置为“表达式”时,实际是一个变量。在“取值”中,可设置变量的值,变量值支持以下几种: 用户的用户名或用户ID,其中用户名前需要加“user:”前缀。 业务用户的用户名或业务用户ID,其中业务用户名前需要加“puser:”前缀。 公共组名称或者公共组ID,其中公共组名称前需要加“group:”前缀。 角色名称或者角色ID,其中角色名称前需要加“role:”前缀。 例如,分配任务接受者为用户名为“PortalUser1”的业务用户、用户名为“User1”的用户、用户ID为“10XX000000XXXXXXX”的用户、公共组名称为“group1”和角色名称为“role1”的合集,则取值为“"puser:PortalUser1,user:User1,10XX000000XXXXXXX,group:group1,role:role1"”。多个取值之间用英文逗号“,”分隔,取值外加英文双引号。 规则:接收人满足的规则。类型为“基于规则”时,该参数才会显示。 审批类型:审批的类型。 若选择了“或签:任一个分配人均可审批”,则只需要接收人中的某一用户完成了审批,即可推动任务流程,走向下一个任务。 若选择了“会签:每个分配人都需要审批”,则需要接收人中的用户群体满足您设置的审批条件才可推动任务流程,走向下一个任务。 如果审批人中包含群组,则群组中任意一人审批即认为该群组已经审批。当审批类型为“会签:每个分配人都需要审批”时,该参数才会显示。 勾选,表示如果审批人中包含群组,则群组中任意一人第一个审批即认为该群组已经审批,不需要其他用户再进行审批,该群组只算一个有效审批人数。 不勾选,表示如果审批人中包含群组,则群组中每个人都需要审批,都计算在有效审批人数内。 投票结果门槛:该参数取值表示百分比,如果达到设置的百分比,审批结果中最高的得票结果将覆盖 “$BP.TaskOutcome”系统变量,即将执行最高得票的审批结果。 默认结果:审批百分比(已审批的人数/总的有效审批人数)未达到“投票结果门槛”百分比时,默认的审批结果。当审批类型为“会签:每个分配人都需要审批”时,该参数才会显示。 结果触发方式:当审批类型为“会签:每个分配人都需要审批”时,该参数才会显示。 当最小百分比满足时,立即触发投票结果。 等待所有投票完成,触发投票结果。 候选动作:设定一些候选的动作为默认审批结果。 当存在以下动作时立即终止任务:当存在设定的某个或者某些动作时,立即终止任务。 自动审批:该用户任务是否自动审批。 流程触发人自动通过:通过接收人“类型”和“参与者”已设置用户任务的接收人后,若勾选自动审批中“流程触发人自动通过”,接收人正好是流程触发人时,该用户任务会被自动审批。 已审批过该流程的审批人自动通过:通过接收人“类型”和“参与者”已设置用户任务的接收人后,若勾选自动审批中“已审批过该流程的审批人自动通过”,接收人在当前BPM实例中已审批过其他用户任务,则该用户任务会被自动审批。 当前自动审批功能,只支持接收人为某一用户,可使用表达式的形式指派某一具体用户,使用自动审批功能。 自动审批时默认选择的动作:勾选自动审批时,可设置自动审批默认选择的动作。 动作配置:为该用户任务配置前置或者后置动作。 图2 动作配置 前置动作:流程执行该用户任务前执行的动作。 触发条件:触发该动作的条件表达式。 动作类型:动作的类型。 通知经理:发邮件通知经理。当选择该类型时,需要配置“邮件模板”。 通知分配人:发邮件通知任务分配人。当选择该类型时,需要配置“邮件模板”。 调用服务编排:调用服务编排。当选择该类型时,需要配置具体的服务编排以及输入参数。 调用脚本:调用脚本。当选择该类型时,需要配置具体的脚本。 发送事件:发送某一事件。当选择该类型时,需要配置具体的事件。 转移:将该用户任务转移给其他用户或者工作队列的用户处理。当选择该类型时,需要配置“接收者类型”以及“接收者”。 设置状态:设置该用户任务的状态。当选择该类型时,需要配置具体的状态。 完成任务:完成某一任务,超期会自动完成任务。 后置动作:流程执行该用户任务后,执行的动作。请参考“前置动作”进行配置。 数据映射:对该用户任务的输入输出参数,进行数据映射。 图3 数据映射 SLA:为用户任务设置定时器,时间逾期可增加紧急程度并执行相应动作。 图4 启用SLA定期器 开始时间:定时器的开始时间。 任务创建后 由变量指定:通过指定时间变量,来确定开始时间。 由表达式指定:开始时间支持表达式,例如支持特定时间的相对时间,设置为“STRING2TIME('yyyy-MM-dd hh:mm:ss.S', {!variable1})”。动态指定时间的相对时间,设置为“TIMEADD({!$Flow.CurrentDateTime}, 100)”。 目标期限:任务在目标期限内且即将过期时,满足触发条件后触发一个指定的动作。 截止限期:任务过期,满足触发条件后触发一个指定的动作。 紧急程度:定时器的紧急程度。 动作:时间逾期后执行的相应动作。单击“添加”新增动作。 触发条件:触发该动作的条件表达式。 动作类型:动作的类型。 通知经理:发邮件通知经理。当选择该类型时,需要配置“邮件模板”。 通知分配人:发邮件通知任务分配人。当选择该类型时,需要配置“邮件模板”。 调用服务编排:调用服务编排。当选择该类型时,需要配置具体的服务编排以及输入参数。 调用脚本:调用脚本。当选择该类型时,需要配置具体的脚本。 发送事件:发送某一事件。当选择该类型时,需要配置具体的事件。 转移:将该用户任务转移给其他用户或者工作队列的用户处理。当选择该类型时,需要配置“接收者类型”以及“接收者”。 设置状态:设置该用户任务的状态。当选择该类型时,需要配置具体的状态。 赋值:给用户的任务赋值。 完成任务:完成某一任务,超期会自动完成任务。
  • 记录创建 “记录创建”图元用于新增平台对象的实例记录,类似于数据库中的INSERT INTO命令。系统提供了以下两种模式,新增对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,将该对象变量或对象变量数组拖拽到“变量”输入框中,使用该对象变量或对象变量数组的值,创建实例记录。 图5 对象模式创建 条件模式:需要先指定对象并为对象的字段赋值,来创建记录。如下图所示,为“Account”对象新增实例记录,在变量“id”中保存新建的记录ID。 图6 条件模式创建
  • 请求示例 对一个BPM实例修改或设置,设置其中两个开发者自定义的参数值,将变量cpuNumber的值改为1, custVar1的值改为value1。被操作的BPM实例ID是“002N000000Q3QW4IMAOO”。 PUT https://AstroZero 域名 /u-route/baas/bp/v2.0/runtime/instances/002N000000Q3QW4IMAOO/variables { "cpuNumber":1, "custVar1":"value1" }
  • URI PUT AstroZero域名/u-route/baas/bp/v2.0/runtime/instances/{instance_id}/variables 表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的设置区域。 当选择泳道左侧标签时,右侧配置区域为该泳道的属性设置区域。
  • 接口启动 通过调用BPM的Rest接口“http://AstroZero对外提供的默认域名/u-route/baas/bp/v2.0”,进行启动。 接口URI:POST AstroZero域名/u-route/baas/bp/v2.0/runtime/instances 表1 请求参数 参数 是否必选 参数类型 描述 name 是 String BPM的名称,在界面处创建BPM时配置的名称。 version 否 String BPM版本号,为可选参数,因为一个BPM可以存在多个版本。如不带版本号,表示运行当前启用的版本。 variables 否 Object BPM元数据中定义的变量,包括自定义变量和系统变量, key-value形式,key为变量名字,value为变量的值。如果需要在启动BPM前设置BPM的变量,可以填写该参数。如需启动时设置变量,可以在variables中设置系统变量$Flow.BusinessKey;如需设置工作流的title,可以设置系统变量$Flow.Title。 表2 响应参数 参数 参数类型 描述 resCode String 返回码,如果返回“0”代表请求成功。 resMsg String 返回消息,如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result Object 在成功请求时会有内容,返回启动BPM之后,BPM实例的运行信息。 例如,创建并启动了一个BPM,BPM名称为“createCloudOK_NEW”,版本号为“1.0.1”,带有4个启动参数。 请求示例 POST AstroZero域名/u-route/baas/bp/v2.0/runtime/instances { "name":"createCloudOK_NEW", "version":"1.0.1", "variables":{ "name":"sun", "memorySize":"15", "storageSize":"15", "expiryDate":"2018-12-12" } } 响应示例 { "resCode":"0", "resMsg":"Success", "result":{ "name":"bpName1", "version":"1.0.1", "id":"002N000000Sy2NphoRbU", "processDefID":"001L000000S8Yi3xG9Gi", "interviewLabel":"BP Label 1", "nextElem":"subProcess", "isTest":true, "state":"Dispatched", "bpStatus":"New", "urgency":0, "taskOutcome":"", "businessKey":"002N000000Sy2NphoRbU", "startTime":"2019-08-27 10:53:04", "endTime":"", "Ext1":"", "Ext2":"", "Ext3":"", "Ext4":"", "Ext5":"", "Ext6":"", "Ext7":0, "Ext8":0, "suspended":false, "isClosed":false } }
  • 脚本启动 在脚本代码中,导入BPM的脚本库,通过下面脚本代码方式启动。 import * as bp from "bp"; //......(其他代码) const client = bp.newInstanceClient(); client.start(BPM名称, BPM版本号, BPM中定义的变量); 脚本样例如下: import * as bp from 'bp'; let client = bp.newInstanceClient(); let res = client.start("test", "1.0.1", { "foo": 1, "bar": 3}); 输出样例如下: { "interviewId": "002N000000FdtN6xwgjI", "screen": { "allowBack": false, "allowFinish": true, "allowNext": true, "allowPause": false, "helpText": "", "label": "input phone number", "name": "inputphonenumber", "pausedText": "", "screenFields": [ { "dataType": "text", "defaultValue": "135xxxxxxxx", "fieldType": "InputField", "helpText": "", "isRequired": false, "label": "phone number", "name": "phoneNumber" } ] }