更新时间:2023-03-03 GMT+08:00
分享

工程命名和目录结构

什么是应用工程

应用工程是指使用AstroZero开发的App和BO,应用工程规范包括App、BO的命名规范、目录结构规范,工程配置规范和工程服务规范。

  • App是一个可复用的独立业务应用,如设备维修管理系统应用。

    App的交付件包括:

    • 逻辑接口Interface:对外暴露的接口服务,Restful API接口可以直接被前台或第三方系统调用。
    • 事件Event:对外暴露、供外部订阅的事件。
    • 菜单Menu:面向租户业务使用人员,提供配置操作能力。
  • BO是一个可复用的领域服务,是最小粒度的复用单元。例如,为了使业务应用开发人员高效的实现与物联设备的交互,对物联设备进行业务抽象,封装为设备BO。
    • BO是资产封装的规范,可以基于平台元数据能力实现,也可以用其他方式实现。
    • BO是有边界的,BO与BO之间不能共享数据。
    • BO对外开放数据视图、接口服务、配置机制和事件等来进行交互,内部实现对外不可见。
    • BO的数据视图,以聚合根的形式开放供外部查询。BO可以同时开放多个聚合根。
    • BO与BO之间允许有接口调用的引用关系,但设计时应尽量避免BO与BO之间的直接交互,并完全禁止双向依赖。
    • BO中可以包含UI内容,如Layout、Widget,但仅作为参考实现。
    • BO应尽量利用配置能力,来适配不同的业务场景。配置无法满足时,才考虑对BO做Addon扩展。扩展不能影响BO的向前兼容性。
    • BO被打包在App或Addon中,租户通过安装App或Addon,来获取BO。
    • 本文中字符数,均以英文字符作为计数单位,一个汉字算3个字符。
    • 开发态的名称定义使用英文,展现给租户使用的配置参数显示则使用中文。

    BO的交付件包括:

    • 接口Interface:BO对外暴露的接口服务,一类是可以直接被前台或第三方系统调用的Restful API接口,一类是只能在开发平台上通过编排来调用的SDK API。
    • 事件Event:对外暴露、供外部订阅的事件。
    • 配置Configuration:面向开发人员或IT管理人员的,提供的配置能力。其中,配置菜单是BO提供的配置界面,选项列表是BO内部使用的字典项,系统参数是BO内部需要读取的控制参数。

工程命名规范

APP和BO采用统一的命名规范,如表1所示。

表1 命名规范

参数

命名要求

标签

  • 最多输入80个字符。
  • 输入有意义的英文,采用大驼峰式命名,单词间以单个空格分割,不要含有制表符或者特殊字符。
  • 相关联的工程可以采用相同的前缀进行标识。
  • 工程命名可以参考业务架构的2层视图。

名称

  • 最多输入64个字符。
  • 必须以字母开头,且只能包含字母、数字和下划线。

平台会自动将租户的命名空间添加为应用的名称前缀。

描述

最多输入255个字符,介绍当前工程的主要功能。

工程目录结构

  • APP目录总体结构
    • Logic:用于存放后台逻辑。
    • Model:用于存放数据模型(即数据对象)。
    • Page:用于存放前端页面。
    • Internal dependencies:内部依赖文件。
    图1 APP工程目录示例
  • BO目录总体结构
    • Model:存放数据模型,其下包含聚合根Aggregrator和对象Object两个子目录。
    • Process:流程级API,可单向依赖其它资产。
    • Operation:操作级API,提供完整的业务操作。
    • Action:原子级的API,可重用逻辑块。
    • Internal:内部实现。
    • Page:页面,按照具体的业务功能分目录聚合。
    • Event:BO对外抛出的事件。
    • DataAccess:数据接入。
    图2 BO工程目录示例
  • 目录树命名

    APP、BO中目录树的所有目录都采用全英文大驼峰命名,不要存在空格或者特殊字符。每个目录下的资产,按照功能建立子目录以方便区分、管理和查找。

  • 对象脚本页面命名
    • Logic下的脚本和服务编排命名:脚本采用小驼峰命名,例如createDeviceInstance。服务编排采用驼峰命名,首字母小写,不要携带下划线。
    • Model下的Object命名:采用全英文的大驼峰命名。
    • Page下的页面文件命名:大驼峰英文字母组成,使用连字符“-”来提高可读性,而不是使用下划线“_”。
  • 调用约束
    • BO内:Process –> Operation –> Action –> Internal,下层不允许调用上层逻辑。
    • BO间:只有Process API允许调用其他BO的API。BO间的调用关系,只允许单向调用,不允许循环调用。
    • APP:只能调用其他APP或者BO提供的API。
分享:

    相关文档

    相关产品