云服务器内容精选

  • 简介 工业数字模型驱动引擎-数据建模引擎(xDM Foundation,简称xDM-F)不仅为用户提供了丰富的标准API(如数据实体API、关系实体API、系统管理API),还提供了高代码的服务编排能力,适配Java和JavaScript类型服务编排。当iDME提供的标准API无法满足用户的业务需求时,用户可使用服务编排能力编排原子API形成一个跨实体(表)的组合API,提高应用开发的速度与质量。
  • 编排限制 表1 服务编排内容限制 编排类型 说明 Java类型 支持编排如下内容: xDM-F的内置模型 用户自定义的数据模型 Java集合类,例如Collection接口和Map接口 Java包装类,例如Integer类、Byte类、Float类和Double类 正则表达式,例如Pattern类和Matcher类 时间相关类,例如java.util包下的java.util.Date和java.util.Calendar类 JSON相关类,例如Jackson类库 Lombok项目 持久化功能相关类,例如GeneralCrudService JavaScript类型 不可转义:`、'、;和"。 不可转义,但可在SQL中转换:{。 例如,有一条如下所示的SQL语句: select 1 from tablename where name='{}' 可在SQL中进行如下转换: select 1 from tablename where name=chr(123)||'}' 可转义:(、)和|。 例如,(转义成\\(,)转义成\\),|转义成\\|。
  • 服务详情页介绍 在“聚合服务”页面,您可单击具体服务的“编码”链接,查看对应服务的详情,包括“服务定义”、“服务开发”、“服务测试”、“服务发布”、“数据集配置”、“修订记录”等。 表1 实体详情页签介绍 详情页签 说明 服务定义 展示当前服务的基本信息、图结构,入参、过滤条件以及出参等信息,其中纯脚本服务无“编辑图结构”和“设置过滤条件”。 基本信息:包括服务基本信息、服务权限信息、API调用方式、服务发布信息及版本信息等。 编辑图结构:服务涉及的模型以及关系组成的图结构。 设置入参:展示服务入参信息。入参指的是API接口中需要前台用户输入的参数。 设置过滤条件:展示已设置的服务入参的过滤条件。 设置出参:展示服务出参信息。出参指的是API接口中的返回参数。 服务开发 展示当前服务的功能脚本,支持快速调测服务。 服务测试 展示当前服务的测试用例,支持执行测试用例并查看结果。 查看测试用例详情:单击具体用例的“用例编码”超链接,查看用例信息详情。 查看测试用例执行结果:单击具体用例“操作”列处的,查看已执行过的测试用例结果。 服务发布 展示当前服务已配置服务发布所需的响应参数等。 数据集配置 展示当前服务数据集配置信息(详细可参见数据集配置)。 说明: 仅“服务定义”基本信息阶段中“支持服务运行结果保存为数据集”为“是”时,才显示该页签。 修订记录 展示当前服务的所有版本修订记录。修订记录不可创建和编辑,如果对应服务有新的修订记录则会自动更新到该页面。 查看详情:单击“修订号”超链接,弹出对应记录的详细信息。 版本对比:勾选2个不同的版本后,单击“图结构对比”,根据需要选择“全量比较”或“差异比较”页签查看。 父主题: 聚合服务编排
  • URI POST AstroZero域名/u-route/baas/v1.0/flow/{action}/{name_or_id} 表1 参数说明 参数 是否必选 描述 action 是 需要对服务编排执行的操作,各个操作取值及其含义如下: start:启动服务编排,系统标准启动操作。 run:开始执行服务编排,自定义启动操作。 next:执行服务编排的下一步。 back:执行服务编排的上一步。 finish:结束运行的服务编排,即正常完成服务编排。 terminate:终止运行的服务编排实例和相关资源。 del:删除服务编排实例和相关资源。 name_or_id 是 当action取值为start或run时,需为服务编排名称。其他操作需为服务编排的运行实例ID,可通过调用查看服务编排运行实例接口查看(响应消息中的“id”)。
  • 响应参数 表2 响应参数 参数 参数类型 描述 resCode String 返回码,如果返回“0”代表请求成功,其他错误码说明请参考错误码。 resMsg String 返回消息,如果成功状态,通常会返回“Success”,其他情况会返回具体的错误信息。 result Object 在成功请求时,会有内容返回。内部包含interviewId和outputs两个字段,result字段的说明请参见表3。 表3 result字段说明 参数 参数类型 描述 interviewId String 服务编排的运行实例ID。流程启动成功后,可以从返回结果中获取到运行实例ID。 outputs Any 结果,服务编排的执行输出,由服务编排输出决定,可为任意取值。
  • 请求示例 开始运行服务编排,例如调用start命令执行了服务编排“testFlowXyz”,传入参数为自定义的参数。 POST https://AstroZero域名/u-route/baas/v1.0/flow/start/testFlowXyz { "paramA": "valueA", "paramB": { "subParamBA": [ "A", "B" ], "subParamBB": "BB" } }
  • 如何创建服务编排 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 单击编排后的“+”,设置参数,单击“添加”。 图2 创建服务编排 创建一个新的服务编排:从零开始,创建一个新的服务编排。 使用已有的服务编排:基于同一租户或基线里已有的服务编排,来创建一个服务编排,方便用户快速继承已有服务编排的配置,增加效率。 类型:服务编排的类型。 Autolaunched Flow:自启动Flow,在接口调用后会立即执行服务编排模型定义的逻辑。 Event Trigger:事件触发的服务编排,在事件触发时才会开始执行服务编排模型定义的逻辑。当选择该类型时,您需要配置具体的事件以及条件规则。 标签:新建服务编排的标签名,用于在界面展示。 名称:服务编排在系统中的唯一标识,创建后不支持修改。系统会自动在名称前添加“{命名空间}__”,当其他功能调用服务编排时,调用的是服务编排的名称,而不是标签。 描述:新建服务编排的描述信息,通常设置为服务编排的功能。
  • 初识服务编排编辑器 服务编排编辑器页面由上方按钮区域、左侧图元面板区域、中间画布区域和右侧参数配置区域四部分组成。 图3 服务编排编辑器页面 表1 区域说明 区域 区域说明 按钮区域 功能按钮区域,包括启用(或者禁用)、保存、另存为新版本或者新服务编排、执行服务编排、操作回退、撤销回退等,支持快捷键操作,即可脱离鼠标直接用键盘操作。 服务编排启用后,单击页面右上角的,可查看该组件的调用关系图。 图元面板区域 图元面板区域呈现服务编排编辑器的图元算子。服务编排编辑器以图元算子为基础,可直接将图元算子拖入画布区域进行逻辑编排。图元算子包括如下五类: 基本:基本类型图元,能够实现在服务编排中进行脚本或者服务编排的调用,增/改/删/查对象记录,以及发送邮件、发送事件的功能。 逻辑:逻辑判断图元,能够实现在服务编排中进行变量赋值Assignment、循环Loop、跳出循环Break、决策Decision、等待Wait的功能。 BO:商业对象图元,即将封装好的BO能力作为服务编排中的一个节点,实现特定的业务功能图元。 Native服务:原生服务图元,用于调用原生服务提供的接口。 连接器:与第三方系统对接的图元,例如将短信发送、支付等第三方连接器作为当前服务编排中的一个节点图元。 画布区域 服务编排设计操作区域,在该区域可对服务编排进行具体流程设计、图元放置。 配置区域 整个服务编排或图元的属性设置区域。选择画布区域服务编排中具体图元时,右侧配置区域为该图元的属性设置区域。选择服务编排中空白区域或者开始图元时,右侧配置区域为该服务编排的设置区域。 :服务编排基本信息配置菜单。 :显示服务编排类型、是否启用。 :整个服务编排的入参、出参,可从“全局上下文”中,选择变量拖拽到服务编排的入参、出参中。 :服务编排使用的私有结构体。 :全局上下文变量,主要用于创建服务编排中需要使用的变量、公式以及结构体变量等。
  • 创建您的第一个服务编排 此处以创建一个根据传入的用户名,配置欢迎信息的简单业务场景为例,向您介绍如何创建一个服务编排。 参考如何创建服务编排中操作,创建名称和标签为“HelloFlow”的服务编排。 创建变量。 在服务编排设计器中,单击,进入全局上下文页面。 单击“变量”后的,创建表2中的变量。 图4 创建变量 表2 变量说明 变量名 类型 变量说明 userName 文本 传入的用户名 message 文本 欢迎信息 在全局上下文中,除了创建基本类型的变量,还可以创建“常量”、“公式”、“对象变量”、“系统变量”和“全局常量”,详情请参见变量及输入输出参数配置。 单击,配置服务编排的输入输出参数。 图5 配置输入输出参数 将“逻辑”中的“赋值”图元,拖拽到画布中。 赋值图元可以实现对全局上下文中变量等参数进行赋值,其他图元的详情介绍,请参见图元配置。 图6 拖拽赋值图元到画布 配置图元。 选择赋值图元,单击。 在“赋值”页面中,单击“新增行”,参照下图将创建的变量拖拽到相应的位置。 将“"Hello,"”赋值给message变量,并将userName变量拼接到message变量中,赋值语句将从上往下依次执行。 图7 配置赋值图元 连接图元指定逻辑关系,即从开始图元连向赋值图元,表示服务编排开始执行后,执行赋值图元的赋值语句。 图8 连接图元 单击页面上方的,保存服务编排。 单击,进入服务编排调试页面。 在输入参数中,输入如下内容,并单击“运行”。 { "userName": "AstroZero" } 运行结果如下,输出“Hello,AstroZero”。 图9 运行结果 单击页面上方的,启用服务编排。 调试已创建的服务编排。 在新版应用设计器左侧导航栏中,选择“集成”。 单击开放接口后的,新建一个helloFlow开放接口,单击“保存”。 图10 新建开放接口helloFlow 在新版应用设计器左侧导航栏中,选择“集成”。 单击开放接口后的,选择“查看”。 图11 查看API 在预览页面,单击“测试一下”,输入示例模型,单击“运行”。 图12 测试接口 图13 查看API测试结果
  • 返回结果 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无 表4 返回结果 GetResult.body类型 说明 表5 参数解释: 响应结果,详见表5 表5 RestoreFailedWorkflowExecutionResponse 参数名称 参数类型 描述 executionUrn str 参数解释: 运行实例的URN 默认取值: 无 restoredAt str 参数解释: 运行实例的恢复启动时间 默认取值: 无 executionName str 参数解释: 运行实例的名字 默认取值: 无
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“集成”。 在开放接口后,单击,进入新建开放接口页面。 设置开放接口参数。 图1 开放接口配置页面 表1 新建开放接口参数说明 参数 参数说明 标签 新建接口的标签。 操作名称 新建接口的操作名称。 版本 URL对应的版本号。 URL 新URL地址,其中“/service”为固定值,其次是“/App名称/版本号”,剩下部分进行自定义。 自定义的URL需要符合一定规则,规则如下: 必须以单个“/”开头。 可以配置多级路径,两个或者多个“/”之间必须有内容。 内容类型 请求中的body类型。 application/json multipart/form-data binary-data “multipart/form-data”和“binary-data”用于文件上传接口,选择该内容类型,只能调用POST类型的脚本。 分类 新建接口所属的分类。 描述 新建接口的描述信息,建议设置为API的作用。 允许匿名访问 是否可匿名访问运行环境中,该API接口。 勾选表示允许匿名访问,通过运行环境子域名访问此接口时,如果无有效的Token认证信息,则以匿名用户身份继续访问此接口,且不需要做CSRF校验。匿名用户的权限为“Anonymous User Profile”,请确保该权限具备访问该接口的业务权限凭证或者相关资源权限。如当该接口有配置业务权限凭证时,给“Anonymous User Profile”权限添加相应业务权限凭证,即可通过运行环境子域名匿名访问该接口。 说明如下: 需要支持匿名访问自定义接口的账号,必须要设置运行环境子域名。 带有合法认证信息来访问允许匿名访问的自定义接口时,优先以合法认证的身份权限来访问。 匿名用户身份访问自定义接口,不需要做CSRF校验。 不论以什么方式来访问, 认证身份后做的权限校验保持一致。如果配置了业务权限凭证,还会查看用户权限,是否配置了相应的业务权限凭证。 例如:登录业务应用接口“login”的URL为“/service/命名空间__MyApp/1.0.0/login”,运行环境子域名为“test.example.com”,期望可匿名访问该自定义接口,则配置接口时请勾选“允许匿名访问”,且“Anonymous User Profile”权限配置了该接口的业务权限凭证,则匿名用户通过“https://test.example.com/service/命名空间__MyApp/1.0.0/login”,即可访问该接口。 类型 系统支持以下三种类型。 服务编排:表示该定义URL调用的接口类型是服务编排。 脚本:表示该定义URL调用的接口类型是脚本。 对象:表示该定义URL是操作对象数据,包括对象数据的增删改查。 本示例选择服务编排。 自定义响应 是否需要格式化,调用该URL后返回的响应消息。如果勾选,表示对响应消息进行格式化,删除resCode、resMsg、result外层信息,只透传返回的消息。 例如,不勾选“自定义响应”,返回如下响应消息: { "resCode": "0", "resMsg": "成功", "result": [ { "equipments": [ { "createdBy": "aaa", "createdBy.__objectType": "User" }, { "createdBy": "aaa", "createdBy.__objectType": "User" } ], "total": "2" } ] } 勾选“自定义响应”后,只返回如下响应消息: { "equipments": [ { "createdBy": "aaa", "createdBy.__objectType": "User" }, { "createdBy": "aaa", "createdBy.__objectType": "User" } ], "total": "2" } 资源 调用的服务编排、脚本或操作的对象名称。 对象操作 请选择具体的操作。当“类型”选择为“对象”时,该参数才会显示。 Insert Record:新增对象数据。 Update or Insert Record:更新或者新增对象数据。 Update By ID:按记录ID更新对象数据。 Delete By ID:按记录ID删除对象数据。 Query By ID:按记录ID查询对象数据。 Update By Condition:按条件更新对象数据。 Delete By Condition:按条件删除对象数据。 Query By Condition:按条件查询对象数据。 方法 映射后调用的方法名,如GET(查询)、PUT(增加)、POST(修改)和DELETE(删除)等。 输入参数/输出参数 展示服务编排的入参、出参,同时支持修改未受保护资源的参数描述。由于开发人员在开发服务编排过程中,可能未设置或未精确添加参数的描述信息,导出自定义接口的yaml描述文档时对参数的描述就会缺失或模糊。在开放接口二次封装服务编排时,可对参数描述进行编辑补充。 当“类型”选择为“服务编排”时,该参数才会显示。 设置完成后,单击“保存”。 保存后,进入接口详情页。在接口详情页的“基本信息”区域,勾选“是否已废弃”后,可配置是否推荐使用该接口。若不推荐使用,勾选“是否已废弃”,勾选后,在后续使用到该接口时,会显示该接口“已废弃”的提示,但接口仍可被调用。 接口创建完成后,支持在线进行测试。 在新版应用开发设计器左侧的导航栏中,选择“集成”。 在开放接口中,单击对应接口后的,选择“查看”,进入接口预览页面。 在接口预览页面,单击URL后的。 单击“测试一下”,如果有输入参数,设置输入参数后,单击“执行”。 返回成功响应,表示接口调用成功 。
  • 处理图元的异常 支持异常处理的服务编排图元包括子服务编排图元、脚本图元、记录创建图元、记录删除图元、记录查询图元、记录删除图元、连接器图元和BO图元。当服务编排中使用这些图元时,对可能引入错误的每个图元都需要做异常处理判断。 在定义服务编排时,如图1所示,从图元中拖出一条异常处理的连线,连线类型选择“出错时”。 当流程走到对象记录查询图元出现异常时,就会走连线类型为“出错时”的分支,执行图元“Assignment1” 。 图1 处理图元异常 (可选)如果需要关注出错后的具体错误码和错误信息,则执行该步骤。 如图2所示,配置图元“Assignment1”,通过系统变量 “$Flow.FaultCode” 和 “$Flow.FaultMessage”获取这些图元出错后的错误码和错误信息,这些错误信息是系统返回的。 图2 输出错误信息
  • 流程结束时返回错误 如图3所示,将赋值图元作为流程结束的节点,通过系统变量 “$Flow.ResCode” 和 “$Flow.ResMsg”自定义流程出错后的错误码和错误信息。 服务编排中,关于错误码的系统变量有两类,区别如下: “$Flow.FaultCode” 和 “$Flow.FaultMessage”为系统返回的错误码和错误信息。 “$Flow.ResCode” 和 “$Flow.ResMsg”为自定义输出的错误码和错误信息。 图3 流程结束时返回错误
  • 注入符号限制 Java类型:无限制。 JavaScript类型: 不可转义:`、'、;和"。 不可转义,但可在SQL中转换:{。 例如,有一条如下所示的SQL语句: select 1 from tablename where name='{}' 可在SQL中进行如下转换: select 1 from tablename where name=chr(123)||'}' 可转义:(、)和|。 例如,(转义成\\(,)转义成\\),|转义成\\|。
  • 操作步骤 参考如何登录经典应用设计器中操作,登录经典版应用设计器。 将鼠标放在某个文件夹上,单击加号,选择“BPM”,去创建一个BPM。 图1 创建一个BPM 在BPM开发设计页面,选中空白区域,在右侧配置界面选择。 在“基本信息”页面,可以设置BPM的流程是否可以撤销,以及通过哪个元素后不允许撤销。 图2 BPM基本信息配置 设置后,在运行态可查看到“撤销”按钮,终止的流程该按钮置灰。 图3 运行态效果 单击,在运行态配置页面的“实例显示名”中,可配置BPM运行后,BPM实例在运行态的显示名。 在运行态配置页面的“BPM布局”区域,单击实例详情后的,可编辑BPM运行态布局。 图4 编辑BPM运行态布局 在编辑布局页面,支持修改“实例基本信息”、“当前任务”、“流程历史”的运行态显示标题,还可以编辑“流程历史”中需要显示的列。 单击编辑器上方的,保存BPM。 运行BPM后,在经典版应用设计器左侧,单击,可预览该应用。 在应用预览界面,单击“历史”,在历史任务中单击该实例后的“查看”,可查看到该BPM的运行态布局,查看布局是否符合预期。 图5 预览应用 图6 历史任务 图7 BPM运行态布局