华为云用户手册

  • 现行实例规格说明 DDS集群实例的CPU规格分为通用型和增强Ⅱ型,详见表1。 表1 CPU规格类型 规格 说明 适用场景 通用型 与同一物理机上的其他通用型规格实例共享CPU资源,通过资源复用换取CPU使用率最大化,性价比较高,适用于对性能稳定性要求较低的应用场景。 侧重对成本、性价比要求较高的场景。 增强Ⅱ型 CPU性能强劲,并搭载全新网络加速引擎,以及DPDK(Data Plane Development Kit)快速报文处理机制,提供更高的网络性能以及算力,满足不同场景需求。 对数据库算力与网络有更高性能要求的网站和Web应用场景。 表2 config节点的规格 CPU类型 规格类型 vCPU(个) 内存(GB) 规格ID 缺省最大连接数配置 连接数取值范围 x86 增强Ⅱ型 2 4 dds.mongodb.c6.large.2.config 2000 200-2000 2 16 dds.mongodb.c6.large.8.config 2000 200-2000 4 32 dds.mongodb.c6.xlarge.8.config 4000 200-4000 8 64 dds.mongodb.c6.2xlarge.8.config 16000 200-16000 鲲鹏 - 2 4 dds.mongodb.large.arm2.config 2000 200-2000 4 8 dds.mongodb.xlarge.arm2.config 4000 200-4000 8 16 dds.mongodb.2xlarge.arm2.config 16000 200-16000 表3 dds mongos和shard节点的规格 CPU类型 规格类型 组件 vCPU(个) 内存(GB) 规格ID 缺省最大连接数配置 连接数取值范围 x86 通用型 dds mongos 1 4 dds.mongodb.s6.medium.4.mongos 1000 200-1000 2 4 dds.mongodb.s6.large.2.mongos 2000 200-2000 2 8 dds.mongodb.s6.large.4.mongos 2000 200-2000 4 8 dds.mongodb.s6.xlarge.2.mongos 4000 200-4000 4 16 dds.mongodb.s6.xlarge.4.mongos 4000 200-4000 8 16 dds.mongodb.s6.2xlarge.2.mongos 16000 200-16000 8 32 dds.mongodb.s6.2xlarge.4.mongos 16000 200-16000 shard 1 4 dds.mongodb.s6.medium.4.shard 1000 200-1000 2 4 dds.mongodb.s6.large.2.shard 2000 200-2000 2 8 dds.mongodb.s6.large.4.shard 2000 200-2000 4 8 dds.mongodb.s6.xlarge.2.shard 4000 200-4000 4 16 dds.mongodb.s6.xlarge.4.shard 4000 200-4000 8 16 dds.mongodb.s6.2xlarge.2.shard 16000 200-16000 8 32 dds.mongodb.s6.2xlarge.4.shard 16000 200-16000 增强Ⅱ型 dds mongos 1 8 dds.mongodb.c6.medium.8.mongos 1000 200-1000 2 8 dds.mongodb.c6.large.4.mongos 2000 200-2000 2 16 dds.mongodb.c6.large.8.mongos 2000 200-2000 4 16 dds.mongodb.c6.xlarge.4.mongos 4000 200-4000 4 32 dds.mongodb.c6.xlarge.8.mongos 4000 200-4000 8 32 dds.mongodb.c6.2xlarge.4.mongos 16000 200-16000 8 64 dds.mongodb.c6.2xlarge.8.mongos 16000 200-16000 16 64 dds.mongodb.c6.4xlarge.4.mongos 16000 200-16000 16 128 dds.mongodb.c6.4xlarge.8.mongos 16000 200-16000 32 128 dds.mongodb.c6.8xlarge.4.mongos 16000 200-16000 32 256 dds.mongodb.c6.8xlarge.8.mongos 16000 200-16000 64 256 dds.mongodb.c6.16xlarge.4.mongos 16000 200-16000 64 512 dds.mongodb.c6.16xlarge.8.mongos 16000 200-16000 shard 1 8 dds.mongodb.c6.medium.8.shard 1000 200-1000 2 8 dds.mongodb.c6.large.4.shard 2000 200-2000 2 16 dds.mongodb.c6.large.8.shard 2000 200-2000 4 16 dds.mongodb.c6.xlarge.4.shard 4000 200-4000 4 32 dds.mongodb.c6.xlarge.8.shard 4000 200-4000 8 32 dds.mongodb.c6.2xlarge.4.shard 16000 200-16000 8 64 dds.mongodb.c6.2xlarge.8.shard 16000 200-16000 16 64 dds.mongodb.c6.4xlarge.4.shard 16000 200-16000 16 128 dds.mongodb.c6.4xlarge.8.shard 16000 200-16000 32 128 dds.mongodb.c6.8xlarge.4.shard 16000 200-16000 32 256 dds.mongodb.c6.8xlarge.8.shard 16000 200-16000 64 256 dds.mongodb.c6.16xlarge.4.shard 16000 200-16000 64 512 dds.mongodb.c6.16xlarge.8.shard 16000 200-16000 鲲鹏 - dds mongos 2 4 dds.mongodb.large.arm2.mongos 2000 200-2000 - 2 8 dds.mongodb.large.arm4.mongos 2000 200-2000 - 4 8 dds.mongodb.xlarge.arm2.mongos 4000 200-4000 - 4 16 dds.mongodb.xlarge.arm4.mongos 4000 200-4000 - 8 16 dds.mongodb.2xlarge.arm2.mongos 16000 200-16000 - 8 32 dds.mongodb.2xlarge.arm4.mongos 16000 200-16000 - 16 32 dds.mongodb.4xlarge.arm2.mongos 16000 200-16000 - 16 64 dds.mongodb.4xlarge.arm4.mongos 16000 200-16000 - shard 2 4 dds.mongodb.large.arm2.shard 2000 200-2000 - 2 8 dds.mongodb.large.arm4.shard 2000 200-2000 - 4 8 dds.mongodb.xlarge.arm2.shard 4000 200-4000 - 4 16 dds.mongodb.xlarge.arm4.shard 4000 200-4000 - 8 16 dds.mongodb.2xlarge.arm2.shard 16000 200-16000 - 8 32 dds.mongodb.2xlarge.arm4.shard 16000 200-16000 - 16 32 dds.mongodb.4xlarge.arm2.shard 16000 200-16000 - 16 64 dds.mongodb.4xlarge.arm4.shard 16000 200-16000
  • 连接数据库 文档数据库服务常用的连接方式如下表。 表1 连接方式 连接方式 IP地址 使用场景 说明 内网连接(推荐) 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于同一区域、可用区、虚拟私有云子网内,建议单独使用内网IP通过弹性云服务器连接文档数据库实例。 文档数据库服务和弹性云服务器在不同的安全组默认不能访问,需要在文档数据库服务所属安全组添加一条“入”的访问规则。 文档数据库服务默认端口:8635,需要手动修改才能访问其它端口。 安全性高,可实现DDS的较好性能。 通过内网连接集群实例 通过内网连接副本集实例 通过内网连接单节点实例 公网连接 弹性公网IP 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于不同区域时,建议单独使用弹性公网IP通过弹性云服务器连接文档数据库实例。 当应用部署在其他云服务的系统上时,建议单独使用弹性公网IP通过弹性云服务器连接文档数据库实例。 降低安全性。 通过公网连接集群实例 通过公网连接副本集实例 通过公网连接单节点实例 应用程序连接 内网IP地址 通过各类应用程序连接数据库。 通过Java连接数据库 通过Python连接数据库 父主题: 数据库使用
  • 短信群发助手中,为何无法选择短信签名和模板? 使用群发助手提交发送任务时,请按先后顺序依次选择“短信应用” 、 “短信签名”、“短信模板”。 国内短信应用、签名、模板之间的关联关系,详见短信资源介绍。若下拉选项为空,请按下表处理。 参数 问题现象 可能原因 处理建议 短信应用 下拉选项为空,显示“暂无数据” 该华为云账号下还未添加短信应用。 请先创建短信应用。 短信签名 未选择“短信应用”。 已选择的“短信应用”下无可用的短信签名。 请检查“短信应用”参数,并确认选择正确。 请检查该应用下是否有可用的非验证码类短信签名。若没有,请先申请短信签名。 短信模板 未选择“短信应用”。 (仅国内短信)未选择“短信签名”。 (仅国内短信)已选择的“短信签名”下无可用的短信模板。 请检查“短信应用”参数,并确认选择正确。 (仅国内短信)请检查“短信签名”参数,并确认选择正确。 (仅国内短信)请检查该签名下是否有可用的短信模板。若没有,请先申请短信模板。 父主题: 故障排除
  • 其他问题 短信封禁规则是什么? 下行短信ID和上行短信ID是否一致? 上行短信和下行短信分别是什么?如何关联? 短信服务资源能跨账号转移吗? 能否将一个账号开通短信服务,给另一个账号下的云服务(例如云速建站)使用? 能否将第三方云平台已备案的短信模板和签名迁移到华为云? 如何使用测试签名和模板? 测试签名和模板的使用有效期是多久? 如何查询用户回复的短信/上行短信? 业务部署在其他云平台,能否使用华为云短信服务? 欠费后短信业务被停用,怎么重新开通? 使用群发助手,号码导入有格式限制吗? 调用接口发送短信时,填写的手机号码有格式要求吗? 消息&短信服务器部署在什么环境? 如何上传第三方授权委托书? 为什么购买短信套餐包前需要先申请短信签名和短信模板?
  • 故障排除 开通短信服务异常,如何处理? 签名审核驳回原因及处理建议是什么? 添加签名时,如何处理上传营业执照报错? 为什么之前申请的应用、签名和模板没有了? 模板审核驳回原因及处理建议是什么? 模板信息中,拆分条数为何显示为多条(>1)? 为何短信应用显示为暂停状态?如何恢复? 如何处理调用短信API超时? 调用短信API,出现SSL连接异常类报错,如何处理? 短信API测试过程中,因达到发送频率限制,测试手机号不能接收短信,该怎么办? 接口调用成功,但手机未收到短信是什么原因? 短信控制台访问异常如何处理? 控制台报“查询催审配置出现错误”,如何处理? 控制台报“查询租户基本信息出现错误”,如何处理? 短信服务,给子账号添加 IAM 权限为何不生效? 为什么短信发送失败? 为什么个别号码收不到短信? 为什么短信一直处于“发送中”?或过了很久才收到? 为什么接收到的短信中链接显示为纯文本? 为什么我只向X个号码发送了短信,但控制台显示发送了2X条? 群发助手提交号码文件提示“号码条数不满足1-50000”如何处理? 短信群发助手中,为何无法选择短信签名和模板? 发送的短信状态显示为拒收(REJECTD)是什么原因? 发送的短信被手机安全管家拦截为垃圾短信,如何处理? 手机回复“R”被加入了退订黑名单?如何恢复? 为什么用户接收到的短信显示乱码? 短信发送失败,报E200028,应该如何处理? 状态码MBBLACK,应该怎么处理?
  • 短信发送问题 如何群发短信? 如何判断短信发送成功? 如何提高短信发送成功率? 支持撤销短信发送吗? 短信发送有时间段限制吗? 短信接收用户看到的号码是什么? 短信通道号的作用是什么? 发送短信时,重复号码是否合并处理? 短信群发助手中,如何批量导出发送失败的号码? 群发短信时,导致欠费,发送的短信会不会失败? 能否查看发送成功或失败的短信内容? 能否使用短信发送动态短链接? 如何查看短信发送记录和短信发送详情? 能否导出短信发送详情? 发送短信如何换行? 账户内余额为零,也没购买短信套餐包,为何能成功发送短信? 能否限制某个应用或某个签名发短信的额度? 怎么取消(调整)短信发送频率限制? 如何查看短信发送失败的原因?
  • 套餐资费问题 短信发送失败是否扣费? 消息&短信服务需要预充值多少? 短信套餐包支持退订吗? 短信套餐包剩余资源支持退款吗? 能否修改短信套餐包业务类型? 如何查看短信套餐包剩余额度? 短信套餐包是否支持跨账号使用? 短信套餐包是否支持跨区域使用? 短信套餐包有效时长是多久?是否支持修改? 短信套餐包是否可以续费以及重复购买? 短信是否支持免费试用或提供免费测试额度? 账户欠费是否会导致短信服务资源被释放? 如何查看短信消费费用? 短信套餐包是否支持设置额度预警? 在华为云购买的短信套餐包能不能在第三方云使用? 如何为消息短信服务如何充值,支持什么方式支付? 购买了短信套餐包后,为什么仍按需计费? 中国广电如何计费? 群发助手如何收费?
  • 二次开发问题 如何获取短信平台的应用接入密钥? 如何获取短信平台的HTTPS调测证书? 如何获取发送短信所需的通道号? 短信业务API调用是否对PHP、Java等工具有版本要求? 使用接口发送短信,设置验证码为6位,为什么有时收到5位验证码? 状态报告接收地址是什么?如何填写? 消息&短信服务支持私有化部署吗? 短信接口支持内网调用吗(例如E CS 服务器)? 为何接收号码不正确也能请求成功? 短信API请求地址必须是 域名 吗?可以提供固定IP吗? 消息&短信服务提供SDK吗? 消息&短信服务开通区域和服务器所在区域不同,是否影响使用?
  • 签名问题 签名规范包含什么内容 签名审核需要多长时间? 如何修改短信签名? 如何删除短信签名? 短信服务是否支持签名相同,短信类型不相同? 一个用户可以申请多个短信签名么? 一个短信签名可以对应多个短信模板吗? 同一和不同应用下能否添加重复的短信签名? 如何激活签名(短信签名为什么会出现处于待激活状态)? APP或电商平台店铺还在开发中,无法提供链接地址,如何申请签名? 添加签名时,签名归属企业与实名认证企业不一致,如何处理? 没有营业执照可以申请短信签名吗? 签名名称可以放置在短信文本文末吗? 申请签名时授权委托书内容可以调整吗? 申请签名时可以选择多个签名来源吗?
  • 产品规格 如何开通消息&短信服务? 哪些国家和地区支持开通国内短信服务? 短信服务支持在华为云的哪些区域开通? 一条短信最多能发多少个字? 是否支持发送彩信,图片或视频? 支持哪些语言的短信? 消息&短信服务支持哪些协议? 短信服务支持并发的短信数量是每秒多少条? 消息&短信服务的到达率和到达时延是多少? 消息&短信服务支持哪些号段? 推广/营销短信是否支持发送金融、房地产、教育、游戏相关内容? 消息&短信服务的SLA是什么? 支持消息&短信服务的站点和区域有哪些? 消息&短信后端服务是否是多AZ容灾部署的? 消息&短信服务支持认证显示公司名称和logo吗? 消息&短信服务是SaaS服务吗? 消息&短信服务是全局级服务还是项目级服务? 消息&短信服务和IoT云通信是同一个产品吗? 停用消息&短信服务,还会产生费用吗? 消息&短信服务支持短信退订回复吗? 消息&短信服务支持哪些手机号段的发送?
  • 模板问题 模板规范和变量规范包含哪些内容? 模板审核需要多长时间? 如何修改短信模板? 如何删除短信模板? 如何使用短信通用模板(通用签名)? 如何查看短信模板内容及相关信息(模板ID、所属应用等)? 如何设置短信模板内容的文本格式(下划线、字体颜色)? 为何短信模板显示为“审核通过-去激活”状态?如何恢复? 短信模板是否支持携带链接? 短信模板中的变量如何填充? 短信服务添加短信模板的数量及使用次数有限制吗?
  • 操作步骤 当迁移验证进度为100%后,可查看到PROCEDURE的迁移情况。 返回“对象校正”页签,选择PROCEDURE,查看各具体Schema的迁移情况。这里以PROC_REQ197为例。 单击迁移成功对象后的“查看详情”,可查看具体信息与SQL代码。 通过DAS连接 GaussDB 的Auto-ugo-gaussdbv5-tar-1实例中的“ugo ”目标库。 DAS连接实例的方法请参考新增数据库登录。 可查看到名为“ugo_ete”的Schema。 单击进入“对象列表”,可查看到名为“fe0725_v5r2_670”的存储过程。
  • 权限准备 创建评估项目,需要对源库进行预检查,Oracle为源库时预检查项如表1所示。 表1 预检查项 预检查权限 检查含义 是否必须通过 DBMS_METADATA权限 检查用户是否具有从Oracle数据库字典中检索元数据的权限,该权限用来获取Schema对象的DDL。 赋予DBA权限即可,赋权语句如下: 创建用户。 CREATE USER user IDENTIFIED BY password; 授予用户登录权限。 GRANT CONNECT TO user; 授予用户DBA权限。 GRANT DBA TO user; 必须 动态视图权限 检查用户对各种动态性能视图的访问权限,该权限用来获取数据库基础信息。 赋予DBA权限即可。 必须 schema对象数量检查 检查该用户是否有Schema对象需要评估。至少需要一个对象需要评估。 必须 DBA权限 检查用户是否有DBA(数据库管理员)的权限,才能进行后续操作。 非必须 若为“警告”,评估项目仍能创建成功,但可能由于权限不足导致部分对象无法采集。 目标数据库连接用户需要具有创建/删除/更改schema、表、程序、索引、用户、函数、视图等其他迁移对象的权限。 具体可查看权限检查报告。 用户需拥有创建UGO评估项目的对应权限。具体权限,可参见权限管理进行设置。
  • 场景描述 数据库和应用迁移 UGO(Database and Application Migration UGO,以下简称为UGO)支持将本地Oracle数据库的结构迁移至华为云云数据库 GaussDB实例。通过UGO评估任务与迁移任务,帮助用户提前识别迁移适配点,提升迁移效率,最大化降低用户的数据库迁移成本。 本实践案例主要介绍了通过UGO将本地Oracle-11g数据库结构迁移至华为云云数据库 GaussDB 分布式版-2.7 企业版的流程。当前仅支持使用公网网络进行连接。 图1 公网网络+SSL安全连接
  • Chart元素说明 ConfigMap 是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在工作负载中作为文件或环境变量使用。允许将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 Secret(密钥) 是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或环境变量使用。其配置页面上参数含义与ConfigMap大体相同,差异的参数说明如下: “密钥类型”取值为“Opaque”,表示一般密钥类型。 “密钥数据”的“值”必须使用Base64编码。对字符串进行Base64加密,可以直接使用“echo -n 待编码内容 | base64”命令。 root@ubuntu:~# echo -n "待编码内容" | base64 无状态负载 等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。 有状态负载 等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod。和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。选择“有状态负载”时,必须要配置“实例间发现服务”。 实例间发现服务指的是Kubernetes的Headless Service,Headless Service用于控制Pod的网络域名,通过Pod的网络域名可以访问特定的Pod实例。例如,集群域名为cluster.local,有状态负载的名称为web,有3个Pod实例,则3个Pod的名称分别为web-0、web-1和web-2,Headless Service的名称为nginx,则3个Pod的域名分别是web-0.nginx.$(命名空间).svc.cluster.local、web-1.nginx.$(命名空间).svc.cluster.local、web-2.nginx.$(命名空间).svc.cluster.local,通过Pod域名访问到具体的Pod实例。
  • 在脚本中调用连接器 在脚本中,调用已创建的连接器,实现与Message& SMS 的对接。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图3 新建空白脚本 在脚本编辑器中,输入如下代码。 //导入该脚本所依赖的标准库文件。msgsms是系统预置的标准库。 import * as sms from 'msgsms'; @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(){ console.log('`````````````````````test new sms`````````````````````') let client = sms.newClient("MSGSMS_Test") let res = client.sendByName("Test1","130XXXXXXXX","[\"6612\"]") console.log(res) console.log('`````````````````````test new sms end`````````````````````') } } 其中,sms.newClient("MSGSMS_Test")中“MSGSMS_Test”为连接器的名称。client.sendByName("Test1","130XXXXXXXX","[\"6612\"]")中携带的是模板名称、接收者号码和模板参数。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部,单击测试窗口右上角的。 检查接收者是否收到短信,收到短信表示成功调用连接器。 单击编辑器页面上方的,启用脚本。
  • 扩展名 因为脚本实际上是存在数据库中的,所以脚本没有路径的概念,扩展名也没有特别的意义。 导入模块时,尽量采用不带扩展的方式。 import * as circle from './circle'; 平台只允许“.ts”扩展名文件存在,不允许包含“.js”后缀的模块,请尽量不要使用待扩展名的导入方式。如下方式等同上面的举例,但不推荐。 import * as circle from './circle.ts';
  • 标准库模块 低代码平台中有些模块会被编译成二进制,预先加载到内存中。例如,decimal、context都是系统预置的标准库模块。 在低代码平台中,会优先加载标准库模块, 例如: import * as http from 'http'; 始终返回内置的HTTP模块,即使有同名自定义模块。如果需要返回自定义的模块,请使用相对路径语法: import * as http from './http';
  • 循环依赖 当循环调用模块时,一个模块可能在未完成执行时被返回。因此,需要仔细的规划模块间调用,以允许循环模块依赖在应用程序内正常工作。 例如,脚本a: console.log('a 开始'); exports.done = false; import * as b from 'b'; console.log('在 a 中,b.done = ', b.done); exports.done = true; console.log('a 结束'); 脚本b: console.log('b 开始'); exports.done = false; import * as a from 'a'; console.log('在 b 中,a.done = ', a.done); exports.done = true; console.log('b 结束'); 脚本main: console.log('main 开始'); import * as a from 'a'; import * as b from 'b'; console.log('在 main 中,a.done = ', a.done ',b.done = ', b.done); 当main加载a时,a又加载b。 此时,b又会尝试去加载a。 为了防止无限的循环,会返回一个a的exports对象的未完成的副本给b模块。然后b完成加载,并将exports对象提供给a模块。当main加载这两个模块时,它们都已完成加载,因此该程序的输出会是: main 开始 a 开始 b 开始 在 b 中,a.done = false b 结束 在 a 中,b.done = true a 结束 在 main 中,a.done=true,b.done=true
  • 规则 该图元根据决策表的配置生成一定的规则,后续根据规则的输出连接网关路由到不同的其他图元节点,当流程到达“规则”任务时,系统根据该规则路由到不同的路线。 使用该图元时,需要选择具体使用的决策表,决策表的创建请参见如何创建决策表。 图16 调用规则配置页面 规则实现 实现类型:规则基于决策表生成,请选择决策表类型。 引用:决策表的输入参数名称。此处只能使用当前项目依赖BO中,公开的及全局的已启用的决策表。 输入参数 目标:决策表的输入参数名称,直接在下拉框中选择即可。 源:BPM中的变量,为目标赋值。可以直接填写,也可以拖入全局上下文变量,将BPM中的变量赋值给决策表中的输入参数。 输出参数 目标:决策表的输出参数名称,直接在下拉框中选择即可。 源:BPM中的变量,将决策表中的输出参数赋值给BPM中的变量。 例如,在问题单流程中,问题单的BPM设计流程如下,业务的流转通过规则图元(即“步骤选择”)驱动,不同的规则输出不同的步骤取值,根据步骤取值路由到不同的步骤中。 图17 问题单流程
  • 子流程 子流程任务是一个特殊的自动化容器任务,其内在包含了对子流程(Sub Process)的创建、启动和调度管理。 当流程到达子流程任务时,按照配置策略自动启动子流程实例,父流程的该分支中断,在这里等待子流程实例全部结束后继续执行后续路线。 子流程模型可以再包含调用子流程,成为每层嵌套的多级流程。 图22 子流程实例 调用活动和子流程图元都是BPM的内嵌子流程,区别是:调用活动则把子流程当做一个黑盒,通过参数传递进行调用;内嵌子流程则直接在当前流程中规划出一个子流程,子流程可共享父流程的变量。可用于流程步骤的划分、封装和复用。 内嵌子流程中,使用“终止”事件只终止当前内嵌子流程。
  • 记录删除 “记录删除”图元能够删除平台对象的实例记录,类似于数据库中的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条记录开始。 记录行的最大数目:分页,每页最多显示的记录数。 记录的总行数存入变量:限定查询出来的总记录数,存入变量中。 (输出)源/目标:输出的结果。其中,“源”为需要查询的字段,查询结果需要保存到设置的变量中,“目标”为设置的变量。 无记录时配置空值:当根据条件查询无记录时,则变量为空值。
  • 记录创建 “记录创建”图元用于新增平台对象的实例记录,类似于数据库中的INSERT INTO命令。系统提供了以下两种模式,新增对象实例记录: 对象模式:需要先单击,在“对象变量”中定义一个对象变量或者对象变量数组,将该对象变量或对象变量数组拖拽到“变量”输入框中,使用该对象变量或对象变量数组的值,创建实例记录。 图5 对象模式创建 条件模式:需要先指定对象并为对象的字段赋值,来创建记录。如下图所示,为“Account”对象新增实例记录,在变量“id”中保存新建的记录ID。 图6 条件模式创建
  • 用户任务 用户任务用来表示,业务流程中由用户参与完成的工作。当引擎处理到该节点时,给指定的用户(参与者)或者一组用户(如某泳道的工作队列)创建待处理的任务项,等待用户的处理。 在用户任务配置界面,配置任务接收人和活动界面。 图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)”。 目标期限:任务在目标期限内且即将过期时,满足触发条件后触发一个指定的动作。 截止限期:任务过期,满足触发条件后触发一个指定的动作。 紧急程度:定时器的紧急程度。 动作:时间逾期后执行的相应动作。单击“添加”新增动作。 触发条件:触发该动作的条件表达式。 动作类型:动作的类型。 通知经理:发邮件通知经理。当选择该类型时,需要配置“邮件模板”。 通知分配人:发邮件通知任务分配人。当选择该类型时,需要配置“邮件模板”。 调用服务编排:调用服务编排。当选择该类型时,需要配置具体的服务编排以及输入参数。 调用脚本:调用脚本。当选择该类型时,需要配置具体的脚本。 发送事件:发送某一事件。当选择该类型时,需要配置具体的事件。 转移:将该用户任务转移给其他用户或者工作队列的用户处理。当选择该类型时,需要配置“接收者类型”以及“接收者”。 设置状态:设置该用户任务的状态。当选择该类型时,需要配置具体的状态。 赋值:给用户的任务赋值。 完成任务:完成某一任务,超期会自动完成任务。
  • 操作场景 创建一个定时任务“OfferingOffline”,用于实现从2021-11-25开始,每天零点自动将过期商品下架。其中,将过期商品下架的功能由“OfferingOffline”脚本实现。 在创建定时任务之前,需要先开发实现定时任务功能的Script脚本,Script脚本的开发可参考开发脚本。 本节介绍的是在管理台创建定时任务;您还可以在App内选择底部“配置”菜单,在“定时任务”页签内配置,这样发布打包App时可将定时任务发布出去。
  • 跨AZ容灾部署架构 跨AZ容灾部署架构仅介绍4.8.0版本,5.x底层的架构不体现,只提供TPS。4.8.0版本中一个Broker由一个主节点和两个备节点组成,当您购买的Broker数为1时,实际创建3个Broker节点,购买2个Broker时(如图1所示)创建6个Broker节点,以此类推。NameServer为2个节点。 图1 选择代理数量 单可用区 实例选择单可用区部署时,实例下的所有组件均部署在相同的可用区内。单可用区部署会默认配置为反亲和部署。反亲和部署是出于高可用性考虑,将Broker主备节点分别创建在不同的物理机上。 多可用区 多可用区部署的前提需要满足该区域下有3个及3个以上的可用区选项,如图2所示。 图2 选择可用区 实例选择多可用区部署时,实例下的组件分别部署在三个不同的可用区内,可实现跨可用区容灾部署能力。 NameServer的2个节点分别部署在两个可用区中。 每个Broker节点中的主备节点随机均衡的部署在三个可用区中。 图3 多可用区部署
共100000条