-
服务编排命名服务编排本身的名称,参照Java定义方法的命名规则:驼峰命名,首字母小写。不要携带下划线。动宾结构。例如:notifyOrderCompletion。(错误样例:OrderCompletionNotification)尽量不用缩写,除非是专有名词。例如:invokeCRM。(错误样例:paymentCbk)应简单明了,表示业务意义,而不是内部实现。例如:createPayment(错误样例:InsertAndUpdatePayData)变量命名在服务编排流程中,除了系统的输入变量和输出变量,在服务编排流程使用的内部变量:输入变量和输出变量:命名遵循接口设计文档的要求。内部变量:元素命名遵循驼峰命名原则。变量为单数时,命名包含对象名称(如Level1Catalog、Level2Catalog);变量为复数时命名包含集合名称(如:Level1CatalogList,或者Level2CatalogArray)。数组型变量的下标命名要符合规范,当使用I、J、K等字母来命名时,需要明确变量含义,勿重复使用。图元命名服务编排的图元的名称,采用动名短语形式,每个单词首字母大写,单词之间有空格。名称一般不要超过五个单词。短语尽可能简明,描述该图元的主要作用。例如:Valid Input、Call Device Service。连接线命名在服务编排的图元中,除了Decision连接线外,其他图元的连接线采用系统的固定命名。Decision连接线名称使用英文,采用单词首字母大写,一般不要超过三个单词,采用动名短语,尽可能简明、准确地描述该条件的判断逻辑。
-
选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。
-
不允许在应用项目的Script中调用BO的script例如, 设备管理应用的Script不可调用设备BO内的任何Script。不允许跨BO调用script例如,人员BO的Script不允许调用设备BO内的任何Script。
-
输入校验不能依赖客户端校验,必须使用服务端代码对输入数据进行最终校验。对于在客户端已经做了输入校验,在服务器端再次以相同的规则进行校验时,一旦数据不合法,必须使会话失效,并记录告警日志。必须假定所有用户产生的输入都是不可信的,并对它们进行合法性校验和值域校验,一旦数据不合法,应该告知用户输入非法并建议用户纠正输入。如果输入为数字参数则必须进行数字型判断。如果输入只允许包含某些特定的字符或字符的组合,则使用白名单(推荐使用正则表达式)进行输入校验。如果输入为字符串参数则必须进行字符型合法性判断。如果明确输入数据的长度限制,必须校验输入数据的长度。如果输入数据为数值且明确范围,则必须检验数据的范围。禁止通过字符串串联直接使用用户输入构造可执行SQL语句,降低SQL注入攻击的风险。用于重定向的输入参数不能包含回车和换行字符,以防止HTTP响应拆分攻击。说明:注意,“回车”字符有多种表示方式(CR = %0d = \r ),“换行”字符有多种表示方式(LF = %0a= \n)。上传下载必须在服务器端采用白名单方式对上传或下载的文件类型、大小进行严格的限制。禁止以用户提交的数据作为读/写/上传/下载文件的路径或文件名,以防止目录跨越和不安全直接对象引用攻击。禁止将敏感文件(如日志文件、配置文件、数据库文件等)存放在Web内容目录下。Web内容目录指的是:通过Web可以直接浏览、访问的目录,存放在Web内容目录下的文件容易被攻击者直接下载。会话及权限管理对于每一个授权访问的接口内都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作。授权和用户角色数据必须存放在服务器端,不能存放在客户端,鉴权处理也必须在服务器端完成。敏感数据保护敏感数据包括但不限于:口令、密钥、证书、会话标识、License、隐私数据(如短消息的内容)、授权凭据、个人数据(如姓名、住址、电话等)等,在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据。禁止在代码和日志中存储敏感数据。禁止密钥或账号的口令以明文形式存储在数据库或文件中。禁止使用自己开发的加密算法,必须使用公开、安全的标准加密算法。
-
每句话后面加分号,脚本写完右键选择“Format Document”统一格式。string类型赋值统一使用双引号“”,获取字段统一使用单引号’’。相关代码写在一起,不相关逻辑最好以空行隔开。总是使用`{}`把循环体和条件语句括起来。开始的`{`总是在同一行。小括号里开始不要有空白逗号;冒号、分号后要有一个空格。例如:for (var i = 0, n = str.length; i < 10; i++) { } if (x < 10) { }function f(x: number, y: string): void { }每个变量声明语句只声明一个变量例如,使用var x = 1; var y = 2; 而不是var x = 1, y = 2;else要在结束的`}`后另起一行。一个函数仅完成一件功能,即使是简单功能也应该编写单独的方法实现。单个方法的方法体不要太长,建议控制在150行以内,保证代码可读性,也方便维护、测试。
-
本节包含字段、对象、结构体等的定义规则。每个字段的定义,均需要定义type、label、description、required、isCollection。有默认值的非必填。当字段为集合类型时候,需要定义成[]。【示例】:@action.object时,需要在脚本中详细定义清楚Object。不要引用其他脚本的Object。如果是嵌套结构体则从下到上粒度依次变小。【示例】不需要多定义Output对象,可以直接在方法使用定义的对象出参。【不推荐】:但是如果出参对象包含从外部引入的对象,则还是要按该方式定义。【推荐】除非业务有特殊要求,增修改脚本不返回结果码和结果信息。
-
总体原则无用的代码不能以注释形式存在。能用代码说明的尽量不要添加注释,脚本注释尽可能简洁。建议注释统一用英文。出入参不必写注释说明。注释方式在函数方法和结构体的元数据描述上面添加注释。方法内关键业务语句前必须添加注释。方法内的单行注释以“//”开头,应放在相关代码的上方或右方,不可放于下方;若放于上方,注释需与前面的代码间用空行隔开。注释与代码的比例没有量化标准;在删掉所有的代码内容、仅保留代码层级结构和注释,如果通过注释,可以很容易理解方法内都做了哪些事情(类似于伪代码),则认为注释比例合理。
-
本节包含脚本中函数、结构体、参数等的命名要求。所有的名称定义要能体现其作用,避免使用缩写(专有名词除外)。Script采用小驼峰命名,例如createDeviceInstance。结构体(struct)采用大驼峰命名,例如QueryPaymentResult。结构体内的字段采用小驼峰命名,例如customerName 。类、枚举值和接口采用大驼峰命名。函数采用小驼峰命名。属性或变量采用小驼峰命名。变量为单数时,命名包含对象名称,如:level1Catalog、level2Catalog。变量为复数时,命名包含集合名称,如:attributeRelationRuleList。
-
选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。
-
Rest APIREST中定义工程对外提供的服务。HTTP动词:常用的HTTP动词如下(括号里是对应的SQL命令):GET(SELECT):从服务器取出一项或多项资源。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):客户端提供改变后的完整资源,在服务器更新资源。PATCH(UPDATE):客户端提供改变的属性,在服务器更新资源。DELETE(DELETE):从服务器删除资源。资源路径:URL中不能有动词在Restful架构中,每个网址代表的是一种资源,所以网址中不能有动词,只能有名词,动词由HTTP的动作来表示。URL结尾不应该包含斜杠“/”正斜杠(/)不会增加语义值,且可能导致混淆。正斜杠分隔符“/”必须用来指示层级关系路径中的正斜杠“/“字符用于指示资源之间的层次关系。应该使用连字符“-”来提高URL的可读性,而不是使用下划线“_”一些文本查看器为了区分强调URL,会在URL下加上下划线。这样下划线”_”字符可能被文本查看器中默认的下划线部分地遮蔽或完全隐藏。为避免这种混淆,请使用连字符而不是下划线。URL路径中首选小写字母URL是对大小写敏感的,所以为了避免歧义,尽量用小写字符。补充说明:主机名(Host)和scheme对大小写是不敏感的。应该将API的版本号放入URL另一种做法是,将版本号放在HTTPS头信息中,但不如放入URL方便和直观。URL路径名词均为复数为了保证URL格式的一致性,建议使用复数形式。响应状态码200 | OK :用于一般性的成功返回。201 | Created [POST/PUT/PATCH]:用户新建或修改数据成功。202 | Accepted:用于Controller控制类资源异步处理的返回,仅表示请求已经收到。对于耗时比较久的处理,一般用异步处理来完成。204 | No Content:此状态可能会出现在PUT、POST、DELETE的请求中,一般表示资源存在,但消息体中不会返回任何资源相关的状态或信息。301 | Moved Permanently:资源的URI被转移,需要使用新的URI访问。302 | Found:不推荐使用,此代码在HTTP1.1协议中被303/307替代。目前对302的使用和最初HTTP1.0定义的语意是有出入的,应该只有在GET/HEAD方法下,客户端才能根据Location执行自动跳转,而目前的客户端基本上是不会判断原请求方法的,无条件的执行临时重定向。303 | See Other: 返回一个资源地址URI的引用,但不强制要求客户端获取该地址的状态(访问该地址)。304 | Not Modified:有一些类似于204状态,服务器端的资源与客户端最近访问的资源版本一致,并无修改,不返回资源消息体。可以用来降低服务端的压力。307 | Temporary Redirect: 目前URI不能提供当前请求的服务,临时性重定向到另外一个URI。在HTTP1.1中307是用来替代早期HTTP1.0中使用不当的302。400 | Bad Request:用于客户端一般性错误返回,在其它4xx错误以外的错误,也可以使用400,具体错误信息可以放在body中。401 | Unauthorized: 在访问一个需要验证的资源时,验证错误。403 | Forbidden:一般用于非验证性资源访问被禁止,例如对于某些客户端只开放部分API的访问权限,而另外一些API可能无法访问时,可以给予403状态。404 | Not Found:找不到URI对应的资源。405 | Method Not Allowed:HTTP的方法不支持,例如某些只读资源,可能不支持POST/DELETE。但405的响应header中必须声明该URI所支持的方法。406 | Not Acceptable:客户端所请求的资源数据格式类型不被支持,例如客户端请求数据格式为application/xml,但服务器端只支持application/json。409 | Conflict: 资源状态冲突,例如客户端尝试删除一个非空的Store资源。412 | Precondition Failed:用于有条件的操作不被满足时。415 | Unsupported Media Type:客户所支持的数据类型,服务端无法满足。500 | Internal Server Error:服务器端的接口错误,此错误于客户端无关。SDKSDK表示工程对应用编排提供的API,SDK没有暴露REST接口。BO之间调用,只能使用SDK。
-
选项列表如果对象的字段允许在多个已定义的值中选择一个,使用选项列表Picklist。选项列表的定义示例如图1所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图1 选项列表定义示例显示名称:BO的选项列表需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+选项列表”的固定方式拼接而成。使用中文字符,最长不超过32个字符,选项列表定义:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如DeviceStatus。标签:最多输入255个字符;应该输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。描述:最多输入255个字符;介绍当前PickList的使用场景。选项列表的值定义:PickList取值选项不允许重复;每个取值最多输入64个字符;如果取值是字符类型,采用大驼峰形式命名,不要含有空格或者制表符等占位符,例如Active。系统参数对于业务逻辑中存在可变性的参数(例如对接第三方接口的IP地址),无论是在页面中还是服务编排、Script中,都建议使用系统参数,而不能声明为内部变量。系统参数的定义示例如图2所示。在基线包中导入的Picklist,默认为基线资产,不允许在界面上修改和删除。支持在界面上新增、编辑和删除非基线的PickList。图2 系统参数定义示例显示名称:BO的系统参数需要定义显示名称,用于显示在BO配置菜单中,应避免与其他可选配置项以及菜单名重复,建议以“工程名+系统参数”的固定方式拼接而成。使用中文字符,最长不超过32个字符。系统参数:名称:最多输入64个字符;必须以字母开头且只能包含字母、数字和下划线;采用大驼峰式命名,例如ThirdPartyAddress。值:文本类型的参数,取值最多输入255个字符;对于敏感信息(例如第三方系统用户名、密码),需要加密保存;数字类型参数,取值允许输入数字、负号、小数点。描述:最多输入255个字符,介绍当前参数的用途。App导航菜单App菜单需要按照功能聚集,并按照功能关系形成菜单层级。App的菜单定义示例如图3所示,运行显示效果如图4所示。图3 App导航菜单定义示例图4 App导航菜单运行显示的示例每个App均需要设置默认主页;菜单层级最大支持三级,层次过深会导致菜单栏占用过多页面空间,且不利于菜单名称展示(英文菜单尤其明显)。菜单配置约束:标签:标签应直观体现菜单功能,起到功能导航作用;最多输入60个字符,采用中文菜单时,不超过10个汉字;不能包含空格、制表符以及特殊字符。图标:菜单图标不能重复。描述:最多输入255个字符,介绍当前菜单的具体功能。BO配置导航BO的配置导航菜单需要按照功能聚集,并按照功能关系形成菜单层级。BO的菜单定义示例如图5所示。图5 BO配置导航的定义示例BO配置导航的要求与App菜单一致。运营配置运营配置用于租户配置BO的可变项:显示名称:BO的运营配置定义显示名称,用于在“应用管理 > BO配置”菜单下显示的BO名称。应避免与其他可选配置项以及菜单名重复,建议此名称和工程名保持一致以提高区分度。使用中文字符,不要含有制表符或者特殊字符,最长不超过32个字符。布局:只有把配置项从“可选配置”中拖动到“已选配置”后,才可以在BO配置菜单中展现。
-
工程命名规范APP和BO采用统一的命名规范,如表1所示。表1 命名规范参数命名要求标签最多输入80个字符。输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。相关联的工程可以采用相同的前缀进行标识。工程命名可以参考业务架构的2层视图。名称最多输入64个字符。必须以字母开头且只能包含字母、数字和下划线。平台会自动将租户的命名空间添加为应用的名称前缀。描述最多输入255个字符,介绍当前工程的主要功能。工程目录结构APP目录总体结构如图1所示。APP依赖核心BO资产进行逻辑编排。每个APP都是自治的,不能存在APP之间的依赖(Addon应用除外)或者相互间的服务调用。APP目录结构相比BO更简单,对外提供服务的服务编排放在Process目录,不对外的放在Internal目录。图1 APP工程目录示例BO目录总体结构如图2所示。图2 BO工程目录示例Model:存放数据模型,其下包含聚合根Aggregrator和对象Object两个子目录。Process:流程级API,可单向依赖其它资产。Operation:操作级API,提供完整的业务操作。Action:原子级的API,可重用逻辑块。Internal:内部实现。Page:页面,按照具体的业务功能分目录聚合。Event:BO对外抛出的事件。DataAccess:数据接入。目录树命名:APP\BO中目录树中的所有目录都采用全英文大驼峰命名,不要存在空格或者特殊字符。每个目录下的资产按照功能建立子目录以方便区分、管理、查找。对象脚本页面命名:Logic下的Script和服务编排命名:Script采用小驼峰命名,例如createDeviceInstance;服务编排采用驼峰命名,首字母小写,不要携带下划线。Model下的Object命名:采用全英文的大驼峰命名。Page下的页面文件命名:大驼峰英文字母组成,使用连字符“-”来提高可读性,而不是使用下划线“_”。调用约束:BO内:Process–》Operation–》Action–》Internal,下层不允许调用上层逻辑。BO间:只有Process API允许调用其他BO的API;BO间的调用关系,只允许单向调用,不允许循环调用。APP:只能调用其他APP或者BO提供的API。
-
资产API符合RESTful API的设计理论。请使用前仔细阅读以下API规格介绍,如无特殊说明,本文中所有资产中包含的API均遵守以下约定。由于AppCube平台的限制,单次查询传入的limit需要小于等于5000;当业务需要的查询数量大于5000时,请分批多次调用该接口。REST API介绍REST从资源的角度来观察整个网络,提供创建、查询、更新、删除等方法访问服务的资源。REST API请求/响应可以分为如下部分:请求URI请求消息头请求消息体响应消息头响应消息体请求URI请求URI由如下部分组成:{URI-scheme}://{Endpoint}/{resource-path}?{query-string}尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。表1 请求URI说明参数描述URI-scheme表示用于传输请求的协议。Endpoint指定承载REST服务端点的服务器域名。resource-path资源路径,也即API访问路径。从具体接口的URI模块获取,例如“/service/v1.0/buddleOfferings.get”。query-string可选参数,例如API版本或资源选择标准。请求方法HTTP方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。表2 请求方法说明方法说明GET请求服务器返回指定资源。PUT请求服务器更新指定资源。POST请求服务器新增资源或执行特殊操作。DELETE请求服务器删除指定资源,如删除对象等。请求消息头可选的附加请求头字段,如指定的URI和HTTP方法所要求的字段。详细的公共请求消息头字段请参见表3。表3 请求消息头说明名称描述是否必选示例Content-Type发送的实体的MIME类型。推荐用户默认使用application/json,如果API是对象、镜像上传等接口,媒体类型可按照流类型的不同进行确定。是业务接口取值:application/json获取access-token接口取值:application/x-www-form-urlencodedContent-Length请求body长度,单位为Byte。否3495access-token当用户通过用户密码或者AK、SK在系统鉴权成功后,后台会生成一个token。下次接口请求时,在请求消息头中带上这个access-token,表示这个用户已经被鉴权过。获取token请参考获取access-token接口。否00000000***a8fcfd450请求消息体该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。响应消息头响应消息头包含如下两部分:一个HTTP状态代码,从2xx成功代码到4xx或5xx错误代码,或者可以返回服务定义的状态码。附加响应头字段,如Content-Type响应消息头。详细的公共响应消息头字段请参考表4 响应消息头。表4 响应消息头名称描述示例Content-Length响应消息体的字节长度,单位为Byte。--Date系统响应的GMT时间。Wed,27 Dec 2016 06:49:46 GMTContent-Type响应消息体的MIME类型。application/json响应消息体该部分可选。响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中Content-Type对应,传递除响应消息头之外的内容。发送请求您可以使用多种方式进行资产接口调试:cURLcURL是一个命令行工具,用来执行各种URL操作和信息传输。cURL充当的是HTTP客户端,可以发送HTTP请求给服务端,并接收响应消息。编码通过编码调用接口,组装请求消息,并发送处理请求消息。REST客户端可以使用浏览器插件,发送处理请求消息。例如Postman。字符和字节的换算方法接口中参数的长度说明,一般都是以字节为单位。对于AppCube平台,字符与字节的换算关系如下:1个英文字符占1个字节1个中文字符占3个字节
-
一个BO相当于一个完整场景的服务,BO是对系统特性(只限后台逻辑,包括Object、Flow、Aggregator、Business Process、Script)的分类管理。用户可以通过订购和配置,使用BO资产特定的业务功能。BO资产框架图1 BO资产构成Data View:BO的数据视图。Interface:BO对外暴露的接口服务(API)。Event:BO对外暴露的事件。Configuration:BO提供给使用者的配置能力。BO资产清单园区BO资产由以下BO组成:表1 BO资产说明序号资产名称资产描述分类实现模式1设备BO为上层应用提供对设备的统一语义。对设备自身能力进行抽象封装,屏蔽设备对上层业务的差异性,屏蔽设备子系统的连接和集成,不包含对设备的运营运维管理能力。核心服务元数据2告警BO配合告警中心的基线应用,对园区的所有告警提供统一语义。从各个子系统和上层应用获取告警数据,统一模型统一展现,以保证使用告警的业务特性能保持稳定性,以及基于告警的统计分析应用的稳定性。核心服务元数据3空间BO为上层应用提供对空间的统一语义。针对各类园区场景提供空间位置的抽象,通过配置来定义空间层级,提供对空间结构的管理接口及空间位置的查询接口,以使能上层应用能灵活方便的使用空间资源。核心服务元数据4人员BO为上层应用提供对人员的统一语义。主要对自然人的匹配、位置、鉴权进行抽象封装,提供人员匹配、卡证匹配、黑白名单等能力,屏蔽对匹配算法及子系统的差异性。不包含对不同角色的人员的管理,如业主、员工、访客等。不包含对系统用户的管理。核心服务元数据5工单BO为上层应用提供对工单的统一语义。针对各类园区场景提供工单流转的能力,协同不同子系统、以及不同角色的用户一起来完成长流程任务,例如告警处理工单、设施维修工单、物业服务工单等。提供了配置工单模板、工单流程等能力,使能上层应用快速实现流程类特性。核心服务元数据6组织BO为上层应用提供对组织的统一语义。通过配置来定义组织层级,提供对组织机构的管理接口,以使能上层应用基于统一的组织数据来构建管理类特性。通常和员工服务资产配合一起使用。核心服务元数据7身份BO仅针对涉及业务终端用户的业务场景如客户、业主、访客、操作员等,提供身份安全能力上的抽象和封装。包括注册、登录、身份管理等接口服务能力以及角色和业务权限。目前AppCube平台提供的是系统用户(如开发者、运维人员)的统一管理,而身份BO资产提供的是终端用户的统一管理。核心服务元数据8日志BO为基线应用提供统一的审计日志的管理能力。仅针对配置修改类审计日志,不针对调试日志。从各个应用或服务资产中收集日志信息,配合日志管理的基线应用,来提供给运营人员统一的日志管理能力。是业务动作的记录,不是设备或IT系统的记录。核心服务JAVA微服务9模板BO提供统一的模板填充、渲染、下载、打印等能力,以使能上层应用快速构建起基于模板的特性,例如短信邮件通知模板、票据打印模板、告警事件的描述模板、设备画像的图形模板等。核心服务JAVA微服务10视频分析BO视频分析BO提供了视频分析业务逻辑的能力,通过调用接口,能够快速实现场景化定制。孪生服务元数据11视频代理BO对不同厂家的视频子系统的接口做标准化,对上层应用提供统一稳定的视频检测相关接口。孪生服务元数据12GIS服务BO提供对GIS子系统的租户管理、地图管理、位置服务接口的封装和标准化接口。孪生服务元数据13条码服务BO为上层应用提供统一的条码语义。主要是对条形码、二维码等码进行抽象封装,提供条码的新增/刷新/查询条码内容等能力,屏蔽不同码的差异性。核心服务元数据14AI服务BO为AI的应用提供统一的参数管理页面,同时提供应用参数,应用列表和版本信息获取等接口。核心服务元数据15权限BO提供了对园区权限的建模、管理等能力,业务应用调用权限BO提供的接口能力来操控所有权限。核心服务元数据16批量处理BO提供了通用批量文件导入、批量数据导出接口,各业务可以直接使用。核心服务元数据
-
APP资产清单园区通用APP资产由以下APP组成:表1 APP资产说明资产名称资产描述统一门户APP提供APP的统一入口,同时提供菜单编辑。针对展示内容,提供组件资产、菜单及信息等的增加、删除、更新及查询接口。系统管理APP提供用户管理,权限管理和大屏管理的能力。针对展示内容,提供操作员密码、操作员及相关权限等的增加、删除、更新及查询接口。APP版本查询订购园区解决方案后,登录智慧园区运营中心,单击右上角登录用户账号下的菜单项目“关于”,即可查看已安装应用的版本号,如图1所示。图1 APP版本查询页面
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签