华为云用户手册

  • 步骤4:业务设计 步骤1:基本配置、步骤2:框架配置和步骤3:生成策略中参数,只需要用户根据自身业务直接在界面进行勾选配置。而业务设计需要用户根据实际的需求,进行业务模型的设计和配置。 例如,创建一个简单的订单系统,订单系统中包括用户(User)、订单(Order)和订单详情(OrderDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。同时一个用户可以关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,例如手机、耳机等,商品可以记录数量。实现上述业务逻辑,需要进行如下设计: 在业务设计页面,拖拽所需的对象到设计区,并修改对象名称。 AstroPro提供了BO、Abstract BO和Value Object三种类型的对象,请根据业务需求进行选择。 BO:业务对象,业务对象映射到服务中的一个实体,对应数据库中的一张表。 Abstract BO:抽象对象,不能实例化,没有对应的数据库表,需要和业务对象有个继承的操作。例如,业务对象A继承一个抽象对象B,则B中的字段都会被A继承过来。 Value Object:值对象,不能单独存在,需要和业务对象建立聚合的关系。 本示例中,拖拽三个BO对象到设计区,选中对应的BO,修改对象名称为User、Order和OrderDetail。 图1 拖拽三个BO到设计区 设置对象属性。 本示例中,因为一个用户需要关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,商品可以记录数量。所以需要为“User”添加“name(用户名)”字段,用于记录用户信息。为“Order”添加“orderNo(订单编号)”字段,用于记录订单的编号。为“OrderDetail”添加“product(商品)”、“amount(数量,integer类型)”字段,分别用于记录商品的详情和商品的数量。 图2 为User对象添加name 图3 为Order添加orderNo 图4 OrderDetail添加product和amount 建立对象之间的关系。 AstroPro提供了一对多、多对多、聚合、树递归和继承五大关系,请根据自身业务需求进行选择。各对象间关系详细介绍,请参见对象间关系。 本示例中的订单系统,当用户存在时,订单才会存在,订单存在时,订单详情才会存在,此时需要为三个对象之间建立聚合关系。聚合关系中,次要方必须依赖首要方,任何对于次要方的操作首先要经过首要方才能继续往下操作。在User和Order的聚合关系中,User为首要方,Order为次要方,即用户存在时,订单才会存在。在Order和OrderDetail的聚合关系中,Order为首要方,OrderDetail为次要方,即订单存在时,订单详情才会存在。 图5 设置对象间关系 设置完成后,单击“下一步”,进行服务依赖设置。 父主题: 编辑服务
  • 步骤1:基本配置 基本信息中配置的内容会呈现在代码中,需用户根据实际情况进行勾选配置。 在服务列表中,单击新增一个服务中已创建服务后的“编辑”。 在基本配置中,按需进行设置。 图1 基本配置 基本配置:若本地已有配置好的服务元数据,可通过单击“导入元数据”,直接导入。 微服务名称:自动关联新增一个服务中创建的服务名称。 Group ID:服务所属项目中的组ID,会自动关联新建项目中Group的值。在Maven项目中用作工程组的标识,Group ID在一个组织或项目中通常是唯一的。 Package:设置生成代码的顶层包名,会自动关联新建项目中Package的值。 Artifact ID:在Maven项目中用作工程的标识,通常是工程的名称。 版本:在Maven项目中用作工程的版本号。 框架:选择微服务使用的开发框架,支持DEVSPORE(JDK 8 + SpringBoot 2)和DEVSPORE(JDK 17 + SpringBoot 3)。 DEVSPORE(JDK 8 + SpringBoot 2):生成JDK8+SpringBoot2的代码框架。 DEVSPORE(JDK 17 + SpringBoot 3):生成JDK17+SpringBoot3的代码框架。 在详细配置中,配置服务的详细信息。 图2 详细配置 服务类型:当前仅支持创建原子服务。原子服务是指对外提供业务对象管理API,有独立数据存储(一般为独立数据库)的服务。原子服务之间可以相互调用。 服务组:选择服务所属的分组。如何创建服务组,请参见新建服务组。 服务单元化策略:服务在子域内的单元化策略。服务单元化策略必须在一个子域内定义,不能跨子域。 SINGLE:即单库,无论子域是否进行单元化部署,该服务只在一个单元(一般以region为单元)内部署。 ROOTED:根服务,包含根业务对象的服务,每个子域最多有一个根服务。 SHARDING:分片服务,必须按照根服务的根业务对象的维度对数据进行分片,和根服务使用同样的数据单元化策略。只有子域中包含根服务的时候,才允许有分片服务;一个子域可以包含的分片服务数量为0..n。分片服务有两种方式和根服务建立关系:可以通过建立根维度映射表,其它sharding表外键引用它的方式。也可以直接为每个表加一个根维度表id字段。 API版本:服务的API版本,默认为新增一个服务时配置的版本,如果需要升级API的版本,请参见升级API版本。 是否启用扩展拦截:通过引入devspore-horizon插件,用户自定义继承抽象类Approve和添加配置,在请求进入和返回时增强处理。您可调用DevSpore预置的插件,也可以使用自己开发的插件,自定义插件可参考devspore-horizon介绍。 启用扩展拦截时,自动在pom文件中引入devspore-horizon插件,并在所有service实现类的方法上添加“@Extension”注解。同时在plugin目录下,生成“DefaultRequestPlugin.java”示例文件。 使用插件时,用户需要在配置文件中添加devspore.horizon.processors,即配置自己编写的扩展插件注入到spirng中的名称,多个插件之间使用英文逗号隔开,扩展插件需要继承com.huawei.devspore.horizon.approver.Approve抽象类,并重写其中的doApprove方法。 注意:启用扩展拦截仅专业版及以上套餐支持,如果您需要使用此功能,请升级Astro Pro实例版本。 客户端配置。 客户端配置仅专业版及以上套餐支持,如果您需要使用此功能,请升级Astro Pro实例版本。 是否生成客户端:是否生成客户端的代码。开启后,会生成服务的客户端代码,如图3。 图3 生成客户端的代码 客户端类型:目前仅支持“OPEN_FEIGN” 设置完成后,单击“下一步”,进入框架配置页面。 父主题: 编辑服务
  • 关系属性设置 在业务设计页面,拖入一个BO业务对象和一个Abstract BO对象(命名为Role、Abstract),单击“relations”中的“继承”,为对象建立继承关系。选中已创建的关系,在右侧页面即可设置关系属性,如图3所示。 图3 继承关系 关系名称:设置继承关系的名称。 关系类型:根据创建的继承关系自动生成。 关系首要方:根据创建的继承关系自动生成。 关系次要方:根据创建的继承关系自动生成。
  • 关系属性设置 在业务设计页面,拖入两个BO业务对象(命名为Bo3、Bo4),单击“relations”中的“多对多”,为对象建立多对多关系。选中已创建的关系,在右侧页面即可设置关系属性,如图2所示。 图2 多对多关系 关系名称:设置多对多关系的名称。 关系类型:根据创建的多对多关系自动生成。 关系首要方:根据创建的多对多关系自动生成。 关系次要方:根据创建的多对多关系自动生成。 表名:设置关系表的名称,请按需自定义。在多对多关系中,会建立关系表用来保存首要方和次要方id的关系。 DTO暴露方式 - NESTED:是否设置DTO的NESTED(嵌套)能力。默认为不设置。 不设置:不生成NESTED。 只生成DTO:只生成NESTED对象的类。 生成DTO读API:只会生成一个get接口。 生成DTO读写API:除了生成一个get接口,还会生成一个插入接口。 DTO暴露方式 - CARTESIAN:设置DTO的CARTESIAN(笛卡尔积)能力。 不设置:不生成CARTESIAN。 只生成DTO:只生成CARTESIAN对象的类。 生成DTO读API:只会生成一个get接口。 关系操作:对象关系可执行哪些操作,如新增、删除、查询、批量新增、批量删除和批量查询。 每个Bo3关联最大Bo4数:一个首要方和次要方建立关联的数量上限。 每个Bo4关联最大Bo3数:一个次要方和首要方建立关联的数量上限。 每个Bo3关联最大Bo4维度上限预警值:首要方一条数据最多关联次要方多少条数据报出告警。 每个Bo4最大关联Bo3维度上限预警值:次要方一条数据最多关联首要方多少条数据报出告警 字段:多对多的关系是通过一个关系表来表示的。单击“字段”,可为关系表添加字段。
  • 步骤三:新建一个页面 单击“页面管理”的新增页面按钮。 设置页面基本属性。 选择页面类型:可选“静态页面”或“公共页面”。 页面名称:只允许包含英文字母,且以大写开头驼峰格式,如DemoPage。 选择文件夹:下拉框中选择文件夹名称。 路由:输入路由信息,只允许包含英文字母、数字、下划线、中划线和正斜杠组成, 且以英文字母开头。 图4 创建页面 单击“保存”。 在弹框中输入历史备份信息,单击“确定”。
  • 关系标签 一对多关系 在MANY一方的关系字段上添加标注:COMMENT 'relation("关联表名","关联表字段","ONE2MANY")'。 DDL示例: CREATE TABLE `t_workspace2` ( `id` varchar(200) NOT NULL, `new_name3` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("UUID")';CREATE TABLE `t_workspace3` ( `id` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, `workspace2_id` varchar(200) NOT NULL COMMENT 'searchable;relation("t_workspace2","id","ONE2MANY")', PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("UUID")'; 标签使用效果: 多对多关系 在多对多关系表的关系字段上添加标注:COMMENT = 'relation("关联表名","关联表字段","MANY2MANY")'。 此处关系的首要方关联字段写在关系的次要方关联字段前面,即workspace4_id字段在workspace5_id前面。示例中首要方:t_workspace4,次要方:t_workspace5。 DDL示例: CREATE TABLE `t_workspace4` ( `id` varchar(200) NOT NULL, `new_name3` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("UUID")';CREATE TABLE `t_workspace5` ( `id` varchar(200) NOT NULL, `new_name3` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, `new_name5` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("UUID")';CREATE TABLE `t_rel_workspace4_workspace5` ( `new_name3` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, `workspace4_id` varchar(200) NOT NULL COMMENT 'relation("t_workspace4","id","MANY2MANY")', `workspace5_id` varchar(200) NOT NULL COMMENT 'relation("t_workspace5","id","MANY2MANY")', CONSTRAINT pk_t_rel_workspace4_workspace5 PRIMARY KEY (`workspace4_id`, `workspace5_id`)) COMMENT = 'relWorkspace4Workspace5'; 标签使用效果: 聚合关系 在聚合关系的主表的关系字段上添加标注:COMMENT 'relation("关联表名","关联表字段","AGGREGATE")'。 DDL示例: CREATE TABLE `t_spec_group` ( `id` varchar(40) NOT NULL COMMENT 'id', `city_id` varchar(40) NOT NULL COMMENT 'relation("t_city","id","AGGREGATE")', `name` varchar(200) NULL, PRIMARY KEY (`id`)) COMMENT = 'specGroup';CREATE TABLE `t_city` ( `id` varchar(40) NOT NULL COMMENT 'id', `city` varchar(200) NULL, `dateType` date NOT NULL COMMENT 'dateType', PRIMARY KEY (`id`)) COMMENT = 'city'; 标签使用效果: 树递归关系 在树递归关系BO表中的"parent_id"上添加标注:COMMENT 'relation("关联表名","关联表字段","RECURSIVE")'。 DDL示例: CREATE TABLE `t_workspace6` ( `parent_id` bigint(40) NULL COMMENT 'parent_id;relation("t_workspace6","id","RECURSIVE")', `id` bigint(40) NOT NULL, `new_name4` varchar(200) NOT NULL, `new_name5` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("SNOWFLAKE")'; 标签使用效果:
  • 注意事项 SwaggerCodeGen会将n、FALSE、 No和off转换成boolean类型的false,将Y、true、Yes和ON转换成boolean类型的true,所以在java代码编译时会报错。因此“是否生成客户端”开关打开时,表中定义上述字段时可使用“别名标签”给字段设置别名。 关系表标识:含有"_rel_"的表名,大小写不敏感。例如:t_rel_workspace4_workspace5。
  • 主键标签 在comment中使用函数形式表示主键类型。可选值为:UUID、SNOWFLAKE、AUTO_INCREASE_INT32、AUTO_INCREASE_INT64、USER_DEFINE。 参数说明: 标签名称:valueObject。 数据类型:boolean类型。 默认值:false。 标签规则 UUID时主键应是字符类型。 AUTO_INCREASE_INT32的主键应是int类型。 AUTO_INCREASE_INT64的主键应是bigint类型。 SNOWFLAKE时主键应是数值(int/long)类型。 非USER_DEFINE的主键时,主键名不是“id”。 USER_DEFINE的主键时,未指定主键字段。 同时非USER_DEFINE时,可以不指定主键(即ddl中可以没有primary key的声明语句)。 当未指定标签时,指定主键情况下主键类型默认为USER_DEFINE; 未指定主键默认为UUID。 标签示例: CREATE TABLE `t_workspace4` ( `id` varchar(200) NOT NULL, `new_name3` varchar(200) NOT NULL, `new_name4` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("UUID")'; 标签使用效果:
  • 值对象标签 在comment中使用函数形式表示Value Object类型BO,标识作用于值对象表的number字段。 参数说明: 标签名称:valueObject。 数据类型:boolean类型。 默认值:false。 标签示例: CREATE TABLE `t_workspace9` ( `id` varchar(40) NOT NULL COMMENT 'id', `name` varchar(200) NOT NULL COMMENT 'name', PRIMARY KEY (`id`)) COMMENT = 't_workspace9';CREATE TABLE `t_object1` ( `workspace9_id` varchar(0) NOT NULL COMMENT 'relation("t_workspace9","id","AGGREGATE")', `number` int NOT NULL COMMENT 'valueObject') COMMENT = 'object1'; 标签使用效果:
  • 别名标签 在comment中使用函数形式标识字段或表的别名,标识作用于表中字段或表名。 参数说明: 标签名称:alias。 数据类型:string类型。 默认值:空(原字段名或表名)。 标签示例: CREATE TABLE `t_workspace9` ( `id` varchar(40) NOT NULL COMMENT 'id', `name` varchar(200) NOT NULL COMMENT 'alias("rename");searchable', PRIMARY KEY (`id`)) COMMENT = 'alias("workspace10")'; 标签使用效果: 表名别名效果: 字段别名效果:
  • 字段允许搜索标签 在comment中使用函数形式表示字段允许搜索,标识作用于表中需设置为searchable的字段。 参数说明: 标签名称:searchable。 数据类型:boolean类型。 默认值:false。 标签示例: CREATE TABLE `t_workspace9` ( `id` varchar(40) NOT NULL COMMENT 'id', `name` varchar(200) NOT NULL COMMENT 'name;searchable', PRIMARY KEY (`id`)) COMMENT = 'workspace9'; 与其他标签同时使用";"分隔使用示例: CREATE TABLE `t_object1` ( `workspace9_id` varchar(0) NOT NULL COMMENT 'relation("t_workspace9","id","AGGREGATE");searchable', `number` int NOT NULL COMMENT 'valueObject') COMMENT = 'object1'; 标签使用效果:
  • 字段数据类型标签 在comment中使用函数形式标识字段的数据类型,标识作用于表中字段,可使标识字段数据类型在模型中修改为标识类型。 参数说明: 标签名称:type。 数据类型:string类型。 默认值:空(原字段数据库类型对应的java类型)。 标签示例: CREATE TABLE `t_workspace9` ( `id` varchar(40) NOT NULL COMMENT 'id', `name` varchar(200) NOT NULL COMMENT 'type("integer")', PRIMARY KEY (`id`)) COMMENT = 't_workspace9'; 标签使用效果:
  • 左侧插件栏 :物料插件,提供设计所需组件,拖拽组件至画布中进行页面设计,具体操作请参考使用组件。 :大纲树插件,可查看页面大纲树。 :页面管理工具插件,可以新增文件夹,可以新增文件夹,以及对页面或者文件的增删改操作。 :数据源管理插件,可用于来配合画布上的组件渲染,具体操作请参考使用数据源。 :资源管理插件,将一些可复用的公共函数编写到工具类中,也可以将一些npm包引用到工具类中,供后续调用,具体操作请参考使用工具类方法。 :国际化插件,可添加国际化词条,实现中英文切换。 :JS方法插件,您可以通过使用JS面板编写自己的代码,从而实现较为复杂的业务场景。 :状态管理插件,可添加页面变量和添加全局变量,供页面及应用使用。 单击插件按钮后会向右展开对应插件设置面板。例如,单击,将展开物料资产包。 图2 展开物料资产包
  • 顶部工具栏 设计器顶部的工具栏从左到右包括: :撤销上一步的操作。 :恢复上次撤销的内容。 :保存当前页面数据。 :发布页面模板。 :清空当前画布内容。 :刷新当前页面数据,如果页面未保存,页面配置将恢复到上一次保存的状态。 :单击后可展开左侧插件栏的设置插件,设置当前页面属性。 :单击可进行画布中英文切换。 :多终端工具切换,可切换画布宽度。 :页面预览,打开新Tab预览当前页面。 下载源码:将当前页面数据转换并下载代码到本地。
  • 资源目录说明 代码结构说明中的“{biz}”,为在AstroPro的业务设计中定义的对象,如BO、Abstract BO等。 resources|-- mapper # 开源组件mybatis的mapper.xml文件存放目录 |-- base # 该目录下的文件禁止用户改动 {biz}BaseMapper.xml {biz}Mapper.xml # 只在初次代码生成,用户可在此文件中实现自定义的方法|-- openapi # swagger.yaml存放目录 swagger.yaml # swagger.yaml文件 application.yml # SpringBoot全局配置文件 banner.txt # 应用程序的banner文件 log4j2.xml # log4j2日志配置文件 metadata.json # 元数据配置文件
  • resources目录结构说明 代码结构说明中的“{biz}”,为在AstroPro的业务设计中定义的对象,如BO、Abstract BO等。 resources|-- mapper # 开源组件mybatis的mapper.xml文件存放目录 |-- base # 该目录下的文件禁止用户改动 {biz}BaseMapper.xml {biz}Mapper.xml # 只在初次代码生成,用户可在此文件中实现自定义的方法|-- openapi # swagger.yaml存放目录 swagger.yaml # swagger.yaml文件 application.yml # SpringBoot全局配置文件 banner.txt # 应用程序的banner文件 log4j2.xml # log4j2日志配置文件 metadata.json # 元数据配置文件
  • 代码结构说明 代码结构说明中的“{biz}”,为在AstroPro的业务设计中定义的对象,如BO、Abstract BO等。 com.astropro|-- api # API层代码,定义向外部服务暴露的接口(必填项) {biz}Api.java {biz}Controller.java|-- service # 承接API直接调用,基本的业务判断逻辑和分发。service层目录,包含接口层和实现层 (必须) |-- impl # service实现代码(必填项) |-- {biz}Service.java I{biz}Service.java # service接口层代码。|-- domain # 领域层,包含基本的业务和业务聚合(必填项) {biz}Domain.java|-- repository # 数据操作聚合层。包含基类和继承类 (必填项) |-- base # 数据操作聚合层基类代码(必填项) {biz}BaseRepository.java {biz}Repository.java # 数据操作聚合层继承类代码。用户可在此类中覆写基类中的方法或者增加自定义的方法|-- mapper # 数据原子操作层。mapper层目录,包含基本接口和继承接口(必填项) |-- base # mapper层基本接口代码(必填项) {biz}BaseMapper.java {biz}Mapper.java # mapper层继承接口代码。用户可在此类中覆写基本接口中的方法或者增加自定义的方法|-- model |-- entity # 实体类(必填项) |-- enums # 枚举类(可选项) |-- qo # 查询对象(可选项) |-- criteria # mybatis查询条件对象(可选项)|-- dto # 数据传输对象,do组合对象(可选项) |-- nested # 根据业务对象的关系自动关联生成,嵌套复杂对象(可选项) |-- cartesian # 根据业务对象的关系自动关联生成,正交的笛卡尔积对象(可选项) |-- {customDto}.java # 用户预先定义好的数据传输对象(可选项)|-- config # 配置类(必填项)|-- utils # 工具类(必填项)|-- exception # 异常类(必填项)|-- integration # 集成第三方服务,隔离外部系统的影响,起防腐作用(可选项)|-- event # 事件层(可选项) |-- publish # 发布事件的Package,存放事件发布的工具类 与 发布的事件对象,屏蔽技术组件对应用业务的侵入 |-- subscribe # 订阅事件的Package,存放listener与消费的事件对象,listener只做数据的监听与数据格式的转换
  • 代码结构说明 代码结构说明中的“{biz}”,为在AstroPro的业务设计中定义的对象,如BO、Abstract BO等。 com.astropro|-- api # API层代码,定义向外部服务暴露的接口(必填项) {biz}Api.java # swagger注解 {biz}Controller.java # 输入参数非业务校验|-- app # 应用层(必填项) |-- service # 应用服务层(必填项) I{biz}AppService.java # 应用服务接口定义(禁止改动) |-- impl {biz}Service.java # 返回值转换为dto |-- dto # 数据传输对象,用于接口层返回(必填项) {biz}Dto.java # 与BO一一对应 {customDto}.java # 自定义dto(禁止改动) |-- converter # bean转换器,用于BO和DTO转换 {biz}Converter.java # 与BO是一一对应关系 |-- consumer # 消费者(可选项) I{biz}Consumer.java {biz2}Handler.java |-- producer # 生产者(可选项) I{biz}Producer.java |-- scheduler # 定时任务(可选项)|-- domain # 领域层,包含基本的业务和业务聚合(必填项) |-- service I{biz}RepositoryService.java # 领域服务接口定义(devspore生成的持久化服务,禁止修改) I{biz}GatewayService.java # 网关服务接口 |-- impl {biz}DomainService.java # 自定义的领域服务实现 |-- entity # 该聚合下所有的实体、值对象 {biz}.java |-- model # qo、nested、cartesian |-- enums # 枚举类 |-- event # 领域事件实体定义 {xxx}Event.java|-- infra # 基础设施层 |-- repository # 数据操作聚合层,包含基类和继承类(必填项) |-- base # 数据操作聚合层基类代码(必填项) {biz}BaseRepository.java {biz}Repository.java # 数据操作聚合层继承类代码,并实现对应的domainService |-- mapper # 数据原子操作层。mapper层目录,包含基本接口和继承接口(必填项) |-- criteria # mybatis查询对象 |-- base # mapper层基本接口代码(必填项) {biz}BaseMapper.java {biz}Mapper.java # mapper层继承接口代码。用户可在此类中覆写基本接口中的方法或者增加自定义的方法 |-- integration # 防腐层,集成第三方服务(跨进程的外部服务),隔离外部系统的影响(可选项) GatewayService.java # 与领域服务层的I{biz}GatewayService.java一一对应 |-- mq # mq的具体实现,如kafka、rocketmq|-- common # 通用包 |-- config # 配置类(必填项) |-- utils # 工具类(必填项) |-- exception # 异常类(必填项) |-- filter # 过滤器(可选项) |-- interceptor
  • 关系属性设置 在业务设计页面,拖入两个BO业务对象(命名为Bo1、Bo2)单击“relations”中的“聚合”,为对象建立聚合关系。选中已创建的关系,在右侧页面即可设置关系属性,如图2所示。 图2 聚合 关系名称:设置聚合关系的名称。 关系类型:根据创建的聚合关系自动生成。 关系首要方:根据创建的聚合关系自动生成。 关系次要方:根据创建的聚合关系自动生成。 DTO暴露方式 - NESTED:是否设置DTO的NESTED(嵌套)能力。默认为生成DTO读写API。 不设置:不生成NESTED。 只生成DTO:只生成NESTED对象的类。 生成DTO读API:只会生成一个get接口。 生成DTO读写API:除了生成一个get接口,还会生成一个插入接口。 DTO暴露方式 - CARTESIAN:设置DTO的CARTESIAN(笛卡尔积)能力。 不设置:不生成CARTESIAN。 只生成DTO:只生成CARTESIAN对象的类。 生成DTO读API:只会生成一个get接口。 每个Bo1关联最大Bo2数:一个首要方和次要方建立关联的数量上限。 每个Bo1最大关联Bo2数:一个次要方和首要方建立关联的数量上限。 每个Bo1关联最大Bo2维度上限预警值:首要方一条数据最多关联次要方多少条数据报出告警。
  • 业务场景及设计流程说明 在AstroPro中,用户通过业务建模,可生成高可用、高可靠、以及安全稳定的企业级IT应用框架。本入门通过创建一个简单的订单系统,帮助您快速上手AstroPro。 本入门为创建一个简单的订单系统,订单系统中包括用户(User)、订单(Order)和订单详情(OrderDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。同时一个用户可以关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,例如手机、耳机等,商品可以记录数量。在AstroPro中,构建上述一个订单系统的流程,如图图1所示。 图1 开发订单系统流程图
  • 定义脱敏规则 在业务设计页面,单击“脱敏规则”。 图1 选择脱敏规则 单击“新增”,添加一个脱敏规则。 例如,将移动电话的第2位到第5位数字进行脱敏处理。 图2 自定义脱敏规则 在对象的字段中,使用脱敏规则。 从“business”中,拖拽“BO”对象至画布空白区域。 选中BO对象,在对象属性中,单击“字段”。 单击“新增”,添加一个phone字段,并将脱敏规则设置为2中定义的内容。 设置后,返回的值将进行脱敏处理,如1****123456。 图3 引用脱敏规则
  • 项目级角色 除了工作空间级角色外,AstroPro还为每个项目预置了项目管理员、架构师和开发者三种类型的角色。 项目管理员 可以增删改査项目下的所有资源。 可以为项目下的所有角色分配用户(仅限于同账号下的用户,如图1中的 IAM 用户1、IAM用户2)。 架构师 可以新建服务。 可以删除自己创建的服务,不能删除其他人创建的服务。 可以对项目下的所有服务进行编辑。 开发者 可以查看项目下的所有资源。 可以重新编译有权限项目下的服务并下载代码。
  • 工作空间管理员 账号登录AstroPro后会自动开通工作空间,每个账号只能开通一个工作空间,开通工作空间的账号默认为此空间的工作空间管理员。工作空间管理员对本工作空间下的所有资源具有增删改查权限,可以为本账号下用户分配项目下的角色。每个工作空间至少拥有一个工作空间管理员。 账号是指当您首次使用华为云时注册的账号,该账号是您的华为云资源归属、资源使用计费的主体,对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。账号统一接收所有IAM用户进行资源操作时产生的费用账单。在一个账号下,您可以创建多个用户,账号和用户的关系如图1所示。如果您没有华为账号,可参考 注册华为账号 并开通华为云中操作注册。如何在账号中添加用户,请参见创建IAM用户。 账号下的用户,如果没有分配任何AstroPro中的角色,则只能查看工作空间下的所有资源,不具备其他权限。 例如,给“IAM用户1”赋予工作空间管理员权限,给“IAM用户2”赋予项目A中的项目管理员权限,则“IAM用户1”可以增删改查本工作空间下的所有资源,“IAM用户2”仅可对工作空间中的项目A执行增删改査等操作,而“IAM用户3”未赋予任何角色,则只能查看本工作空间下的资源。
  • AstroPro角色说明 不同的角色,操作权限有所不同,AstroPro常用操作与角色之间的关系如表1所示,您可以按需申请您的角色权限。 如果您申请的新权限低于您当前的权限级别,系统将只保留一个角色权限,即新申请的权限会覆盖现有的权限。因此,在您决定更换权限之前,建议您仔细了解并比较您当前的权限设置与新申请权限之间的具体差异。 表1 AstroPro常用操作与角色之间的关系 操作 工作空间管理员 项目管理员 架构师 开发者 其他(未授权) 新增项目 √ x x x x 编辑项目 √ x x x x 删除项目 √ x x x x 新增服务组 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 编辑服务组 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除服务组 √(工作空间中所有项目) √(工作空间中指定项目内) √(只允许删除自己创建的服务组) x x 新增服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 编辑服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 新增服务版本 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 复制服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(只允许删除自己创建的服务) x x 新增服务依赖 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除服务依赖 √(工作空间中所有项目) √(工作空间中指定项目内) √(仅自己创建的服务依赖) x x 重新生成代码并下载 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) √(工作空间中指定项目内) x 查看服务详情 √ √ √ √ √ 查看变更记录 √ √ √ √ √ 申请角色 √ √ √ √ √ 撤回申请 √(仅撤回自己的申请) √(仅撤回自己的申请) √(仅撤回自己的申请) √(仅撤回自己的申请) √(仅撤回自己的申请) 审批角色 √(工作空间中所有项目) √(工作空间中指定项目内) x x x 删除角色 √(工作空间中所有项目) √(工作空间中指定项目内) x x x 创建前台应用 √ √ √ √ x 开发前台应用 √ √ √ √ x 删除前台应用 √ √ √ √ x 下载前端业务代码 √ √ √ √ √ 查看前台应用 √ √ √ √ √ 发布页面模板 √ √ √ √ x 删除页面模板 √ √ √ √ x 新增架构模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 修改架构模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 删除架构模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(只允许删除自己创建的模板) x x 查看架构模板 √ √ √ √ √ 新增业务对象模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 修改业务对象模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 删除业务对象模板 √(工作空间级及所有项目) √(工作空间中指定项目) √(只允许删除自己创建的模板) x x 查看业务对象模板 √ √ √ √ √ 新增业务模块 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 修改业务模块 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 删除业务模块 √(工作空间级及所有项目) √(工作空间中指定项目) √(只允许删除自己创建的模块) x x 查看业务模块 √ √ √ √ √ 新增自定义字段 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 修改自定义字段 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 删除自定义字段 √(工作空间级及所有项目) √(工作空间中指定项目) √(只允许删除自己创建的自定义字段) x x 查看自定义字段 √ √ √ √ √ 新增流控策略 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 修改流控策略 √(工作空间级及所有项目) √(工作空间中指定项目) √(工作空间中指定项目) x x 删除流控策略 √(工作空间级及所有项目) √(工作空间中指定项目) √(只允许删除自己创建的流控策略) x x 查看流控策略 √ √ √ √ √ 新增应用 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 修改应用 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 同步应用 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除应用 √(工作空间中所有项目) √(工作空间中指定项目内) √(只允许删除自己创建的应用) x x 查看应用 √ √ √ √ √ 新增子域 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 修改子域 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除子域 √(工作空间中所有项目) √(工作空间中指定项目内) √(只允许删除自己创建的子域) x x 查看子域 √ √ √ √ √ 新增应用服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 修改应用服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 删除应用服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(只允许删除自己创建的子域) x x 关联服务 √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 查看应用服务 √ √ √ √ √ 编辑服务SLA √(工作空间中所有项目) √(工作空间中指定项目内) √(工作空间中指定项目内) x x 查看服务SLA √ √ √ √ √ 导入物料包 √ √ √ √ x 更新物料包 √ √ √ √ x 下载物料包 √ √ √ √ x 查看物料包 √ √ √ √ √
  • 约束与限制 IAM用户(如IAM用户1)必须已添加到用户组admin或group。加入用户组后,用户才会具备用户组的权限。若不加入用户组,登录AstroPro服务时,会提示您没有当前服务的访问权限。 admin:缺省用户组,具有所有云服务资源的操作权限。将用户加入该用户组后,用户可以操作并使用所有云服务资源。如果您创建的IAM用户是管理员,才需要将其加入默认用户组“admin”中。 group:自定义的用户组,如何创建一个用户组,请参见创建用户组并授权。自定义用户组时,必须为用户组添加“Astro Pro FullAccess”和“Astro Pro InstanceManagement”系统策略,如图2。 图1 通过用户组为用户授权 图2 自定义用户组必须具备权限
  • 升级实例版本 Astro企业应用当前提供了基础版、专业版和企业版三种规格套餐。不同套餐支持的特性差异,请参见产品规格差异。如果您购买的实例无法满足您当前管理需求,则可升级实例版本。 当前仅支持从低规格套餐升级到高规格套餐,不支持降级。规格变更后,不支持回退。 在已购买的实例中,单击“操作”,选择“升级版本”。 图1 选择升级版本 在升级规格页面,选择目标规格,单击“去支付”。 若您购买的是基础版实例,可直接升级到专业版或企业版。若您购买的是专业版实例,仅支持升级到企业版。 图2 选择规格 进入支付页面,选择支付方式,确认付款,支付订单后即可完成规格升级。 父主题: 新手指引
  • DDL文件设计 根据业务模型,完成DDL文件设计,DDL标签使用可参考DDL标签使用指南。 示例: CREATE TABLE `t_value_object` ( `workspace1_id` varchar(200) NOT NULL COMMENT 'relation("t_workspace1","id","AGGREGATE")', `number` int NOT NULL COMMENT 'valueObject', `new_name3` varchar(200) NOT NULL COMMENT 'searchable', `new_name4` varchar(200) NOT NULL COMMENT 'searchable', CONSTRAINT pk_t_value_object PRIMARY KEY (`workspace1_id`, `number`)) COMMENT = 'primaryKeyType("NONE")';CREATE TABLE `renameWorkspace` ( `key1` varchar(200) NOT NULL COMMENT 'alias("newName2")', `key2` varchar(200) NOT NULL COMMENT 'alias("newName3")', `renameField` boolean NOT NULL COMMENT 'alias("newName4")', `new_name5` int NOT NULL, `new_name6` bigint(40) NOT NULL, `new_name7` decimal(40, 0) NOT NULL, `new_name8` float(40, 0) NOT NULL, `new_name9` double(40, 0) NOT NULL, `new_name10` date NOT NULL, `new_name11` timestamp NOT NULL, CONSTRAINT pk_renameworkspace PRIMARY KEY (`key1`, `key2`)) COMMENT = 'alias("renameWeaweae");primaryKeyType("COMPOSITE")';CREATE TABLE `t_workspace6` ( `parent_id` bigint(40) NULL COMMENT 'parent_id;relation("t_workspace6","id","RECURSIVE")', `id` bigint(40) NOT NULL, `new_name4` varchar(200) NOT NULL, `new_name5` varchar(200) NOT NULL, PRIMARY KEY (`id`)) COMMENT = 'primaryKeyType("SNOWFLAKE")';
  • 操作步骤 下载重置密码的脚本,并上传至临时云服务器。 单击下载重置密码脚本,在本地通过WinSCP等连接工具,将获取的changepasswd.sh脚本上传到临时云服务器。 WinSCP下载地址:https://winscp.net/。 关闭原云服务器,卸载其系统盘,并将系统盘挂载到临时云服务器。 原云服务器关机,进入详情页,并选择“云硬盘”页签。 原云服务器关机时,请勿执行强制关机操作,否则可能引起重置密码操作失败。 单击系统盘所在行的“卸载”,卸载该系统盘。 展开临时云服务器的详情页,并选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择2.b中卸载的系统盘,将其挂载到临时云服务器上。 远程登录临时云服务器,并重置密码。 在临时云服务器的“操作”列下,单击“远程登录”。 执行以下命令,查看原云服务器上卸载的系统盘在临时云服务器上的目录。 fdisk -l 在脚本所在目录执行以下命令,运行重置密码脚本。 chmod +x changepasswd.sh ./changepasswd.sh 运行重置密码脚本时,如果系统提示没有lv相关的命令(如no lvs commmand),则需要在临时云服务器安装lvm(Logical Volume Manager)工具,推荐使用lvm2,您可以执行命令yum install lvm2进行安装。 如果原云服务器和临时云服务器的操作系统均为centos7,运行脚本过程中可能会出现挂载失败。请将脚本中的内容“mount $dev $mountPath”修改为“mount -o nouuid $dev $mountPath”,避免脚本运行失败。 根据系统提示输入新设置的密码和3.b中获取到的目录信息。 系统显示如下回显信息时,说明密码设置成功。 set password success. 如果是非root用户,请执行如下操作打开root登录权限。 vi /etc/ssh/sshd_config 修改如下配置项: 把PasswordAuthentication no 改为 PasswordAuthentication yes 或去掉PasswordAuthentication yes 前面的#注释掉。 把PermitRootLogin no 改为 PermitRootLogin yes 或去掉PermitRootLogin yes 前面的#注释掉。 修改AllowUsers的值为AllowUsers root 在文件中查找AllowUsers,如果没有请在文件末尾补充AllowUsers root。 关闭临时云服务器,卸载原云服务器的系统盘,并将其重新挂载回原云服务器后执行重启操作。 临时云服务器关机,并进入详情页,选择“云硬盘”页签。 单击“卸载”,卸载2中临时挂载的数据盘。 展开原Linux云服务器的详情页,选择“云硬盘”页签。 单击“挂载磁盘”,在“挂载磁盘”对话框中,选择5.b中卸载的数据盘,并设置挂载点为“/dev/sda”。 重启原云服务器。
  • Windows操作系统 远程登录Windows操作系统的HE CS 一般需要做好如下准备工作,具体准备工作请根据Windows云服务器登录方式概述参见对应的登录方式。 获取云服务器登录密码。 使用公共镜像、市场镜像创建的云服务器,默认已经安装一键式重置密码插件。 确保云服务器绑定弹性公网IP(仅VNC方式不要求)。 HECS购买时默认绑定弹性公网IP。 确保云服务器已开启远程桌面协议(MSTSC方式、通过RDP文件登录等方式要求)。 云耀云服务器默认已开启远程桌面协议。 安全组入方向开放3389端口(仅VNC方式不要求)。
  • 使用BDF查询磁盘挂载点 执行以下命令,使用BDF查看对应的设备名称。 ll /sys/bus/pci/devices/BDF磁盘标识/virtio*/block 例如:控制台上VBD盘对应的BDF磁盘标识为“0000:02:02.0”,执行以下命令查询设备名称。 ll /sys/bus/pci/devices/0000:02:02.0/virtio*/block 回显信息如下所示: [root@ecs-ab63 ~]# ll /sys/bus/pci/devices/0000:02:02.0/virtio*/blocktotal 0drwxr-xr-x 8 root root 0 Dec 30 15:56 vdb 系统回显即为磁盘设备名称(即“/dev/vdb”)。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全