华为云用户手册

  • 权重合并和转换介绍 模型训练完成后,训练的产物包括模型的权重、优化器状态、loss等信息。这些内容可用于断点续训、模型评测或推理任务等。 在进行模型评测或推理任务前,需要将训练后生成的多个权重文件合并,并转换成Huggingface格式的权重文件。 权重文件的合并转换操作都要求在训练的环境中进行。 预训练或SFT全参微调产生的权重文件的合并与转换操作,请参考多卡权重合并进行操作。 LoRA微调训练产生的权重文件的合并与转换操作,请参考LoRA权重合并进行操作。 父主题: 推理前的权重合并转换
  • CUDA Compatibility如何使用? 当CUDA 10.2与低版本GPU驱动(440.33以下)配合使用时,可能会出现兼容问题,此时需要使用CUDA Compatibility。在创建训练页面添加以下环境变量: export LD_LIBRARY_PATH=/usr/local/cuda/compat 训练时默认不需要加此环境变量,仅当发现驱动版本不够时才使用此方法。 父主题: CUDA和CUDNN
  • 自定义数据 用户也可以自行准备训练数据。数据要求如下: 使用标准的.json格式的数据,通过设置--json-key来指定需要参与训练的列。 请注意huggingface中的数据集具有如下this格式。可以使用–json-key标志更改数据集文本字段的名称,默认为text。在维基百科数据集中,它有四列,分别是id、url、title和text。可以指定–json-key 标志来选择用于训练的列。 { 'id': '1', 'url': 'https://simple.wikipedia.org/wiki/April', 'title': 'April', 'text': 'April is the fourth month...' } 将下载的原始数据存放在/home/ma-user/ws/datasets/data目录下。具体步骤如下: 进入到/home/ma-user/ws/目录下。 创建目录“datasets/data”,并将原始数据放置在此处。 mkdir -p datasets/data 数据存放参考目录结构如下: ${workdir}(例如/home/ma-user/ws ) ├── datasets ├── data #原始数据集 ├── train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练原始数据集 ├── alpaca_data.json #微调原始数据集
  • Alpaca数据 本教程使用到的训练数据集是Alpaca数据集。Alpaca是由OpenAI的text-davinci-003引擎生成的包含52k条指令和演示的数据集。这些指令数据可以用来对语言模型进行指令调优,使语言模型更好地遵循指令。 预训练数据集下载:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet,数据大小:24M左右。 SFT全参微调、LoRA微调训练数据集下载: http://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json,数据大小:22M左右。
  • 预训练权重合并及转换 由于预训练或SFT全参微调时产出的权重文件(TP和PP文件)个数比较多,推理前需要把多个权重文件合并为一个文件,并转换为HuggingFace格式。Llama2-13B一般使用单卡推理。 基于预训练或SFT全参微调完成的模型,进行推理部署时,权重合并和转换操作建议参考本章节。 脚本convert_weights_to_huggingface.py包含了权重文件合并和转换操作,具体的脚本内容和参数解释如下。 该脚本的执行需要在/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/代码目录下进行。 python scripts/tools/ckpt_convert/llama/convert_weights_to_huggingface.py \ --input-model-dir ${ASCNEDSPEED_CKPT_PATH} \ --output-model-dir ${MERGE_CKPT_PATH} \ --src-tensor-model-parallel-size ${TENSOR-MODEL-PARALLEL-SIZE} \ --src-pipeline-model-parallel-size ${PIPELINE-MODEL-PARALLEL-SIZE} \ --type ${TYPE} \ --org-huggingface-dir ${HUGGINFGFACE_DIR} \ --merge-mlp 参数说明: ${ASCNEDSPEED_CKPT_PATH}:训练生成的AscendSpeed格式权重目录,多机多卡场景下需要把多个节点上的权重文件都放到任意一个节点的这个目录下;需要指定到含有mp_rank_xxxxxxx的目录,一般为iter_xxxxx或release。 ${MERGE_CKPT_PATH}:合并后的权重路径。 ${TENSOR-MODEL-PARALLEL-SIZE}:原始模型的TP配置大小,取值来自训练中的配置,此处需要手动输入。 ${PIPELINE-MODEL-PARALLEL-SIZE}:原始模型的PP配置大小,取值来自训练中的配置,此处需要手动输入。 ${TYPE}:原始模型参数大小,支持参数配置: 7B、13B、70B,按实际模型要求设置。 ${HUGGINFGFACE_DIR}:可选,开源HuggingFace权重目录,用于将开源权重内的配置文件,复制到转换后权重的输出目录中。 下面提供一个convert_weights_to_huggingface.py脚本的实际样例,供参考。 python scripts/tools/ckpt_convert/llama/convert_weights_to_huggingface.py \ --input-model-dir /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ckpt/ckpt-llama2-13b-sft/iter_xxxxxxx \ --output-model-dir /home/ma-user/ws/weight/ckpt-llama2-13b-sft-hf \ --src-tensor-model-parallel-size 8 \ --src-pipeline-model-parallel-size 1 \ --type 13B \ --org-huggingface-dir /home/ma-user/ws/tokenizers/llama2-13b-hf \ --merge-mlp 父主题: 推理前的权重合并转换
  • LoRA微调权重转换 LoRA微调训练前,需要先把训练权重文件转换为AscendSpeed格式。 基于预训练或SFT全参微调生成的权重文件已经是AscendSpeed格式,进行LoRA微调训练时,不需要再单独做权重转换,可以跳过此章节。 基于原始HuggingFace权重进行LoRA微调训练时,需要将Huggingface格式权重转换为AscendSpeed格式。 LoRA微调训练和SFT全参微调使用的是同一个HuggingFace权重文件,转换为AscendSpeed格式后的结果也是通用的。如果在SFT全参微调任务中已经完成了HuggingFace权重转换操作,此处无需重复操作,可以直接使用SFT全参微调中的权重转换结果。如果前面没有执行HuggingFace权重转换任务,可以参考SFT全参微调权重转换章节完成。 父主题: LoRA微调训练
  • Step2 创建数据集并上传至OBS 进入网站http://www.cs.toronto.edu/~kriz/cifar.html,下载“CIFAR-10 binary version (suitable for C programs)”,解压后将数据上传至OBS桶的“obs://test-modelarts/mindspore-gpu/cifar-10-batches-bin/”文件夹下。OBS桶中数据集如下所示: 图1 数据集
  • 为什么选择应用平台? 应用平台(AppStage)本质上是华为内部优秀实践的外溢,以终端祥云平台为基础,同时融合了企业内部IT治理、华为云工程能力等优秀实践。内置高可靠、安全、韧性等基础架构属性,通过标准化的服务供用户调用,解决重复造轮子。同时,构建统一的应用全生命周期管理平台,降低云上SaaS应用开发、部署、运维和运营的难度,提升效率,助力应用和开发者上云。 在华为内部,终端祥云平台经过7年多的全云原生化架构改造,不仅实现了业务100%上云,而且: 基于华为云“全球存算网”构建的业务,可以通过华为云将业务送达全球客户与开发者。 降低AI原生应用开发门槛、提升开发效率。帮助企业实现降本增效、改进决策方式、提升客户体验、创新增长模式等经营目标,完成从传统应用到智能应用的竞争力转型。 服务了全球十亿级的并发用户,实现了全球不同区域的数据安全与隐私合规的遵从。 云原生架构实现了99.995%的多Region容灾及业务高可用能力,构建了全流程的DevOps工具链与开发平台。 实现了应用开发的敏捷化、发布的灰度化、以及运营的互联网模式化。 面向消费者业务,以丰富的10+中台能力,支撑全球500+万全球开发者,经过众多开发者验证的优秀实践。 自动化、数据化、智慧化运维平台,逐步实现无人值守运维。 业务实践证明,应用平台在业务云化、应用云原生化、服务自运维方面是公司的最佳实践,经过百万开发者、十亿并发用户的验证!
  • 产品架构 应用平台(AppStage)总体架构如图1所示。 图1 产品架构 应用平台(AppStage)聚合华为内部消费者业务,企业IT和华为云优秀实践打造的统一平台。 业务控制台:统管系统级功能的配置和维护,如组织信息、应用基础信息(产品、服务、微服务)、公告等。同时提供了AI原生应用引擎、开发中心、运维中心、运营中心的快捷登录入口。 AI原生应用引擎:一站式的企业专属原生智能应用开发平台,提供企业专属大模型开发和应用开发的整套工具链,包括数据准备、模型选择/调优、知识工程、模型编排、应用部署、应用集成等能力。 开发中心:开发中心提供软件开发端到端的所有服务。 运维中心:以运维作业视角设计端到端作业流。 应用运行时引擎:提供NUWA微服务框架,兼容开源SpringCloud微服务。 运营中心:面向运营人员提供运营管理服务,提供应用数据接入、数据模型构建、指标开发、指标管理、指标开放的应用数据运营分析。 统一组织账号管理:组织成员账号(OrgID)是面向企业提供组织管理、企业成员账号管理以及SaaS应用授权管理能力的云服务,将Huawei ID账号体系延伸到企业用户,统一华为云面向生态SaaS服务的组织、账号,同时面向生态伙伴推出SaaS服务账号集成规范。应用平台集成OrgID面向企业提供组织管理、企业成员账号管理以及SaaS应用授权管理能力。
  • 产品功能 应用平台由以下几个主要服务及其功能构成: 开发中心 开发中心为软件开发提供端到端的常用功能:从需求管理到部署服务,开箱即用,实现敏捷交付、提供各种模板和实践。基于项目维度提供从需求、设计、开发、测试、发布、变更、部署全场景一站式研发门户,支撑开发所有角色统一在一站式门户协同工作,提升用户体验及研发效率。 运维中心 基于租户业务应用场景打造,应用平台致力于为租户提供服务。应用平台以运维作业视角设计端到端作业流程,构建自动化、数据化、智能化的运维平台,逐步实现无人值守运维。 运行时引擎 提供NUWA微服务框架,兼容开源SpringCloud微服务,预集成构建云服务业务分布式架构所需的各个组件(微服务框架、数据库、通用中间件、安全中间件、公共服务等)及DFX能力,业务开发人员专心撰写业务代码,屏蔽全球多个站点环境的复杂差异,开箱即用,缩短开发时间,提升交付效率。 运营中心 面向运营人员提供运营管理服务,提供应用数据接入、数据模型构建、指标开发、指标管理、指标开放的应用数据运营分析底座,支撑各类数据指标及模板快速构建和生成,支撑应用用户运营和持续增长。 AI原生应用引擎 面向企业客户的研发/技术人员,提供企业专属大模型开发和应用开发的整套工具链,包括数据准备、模型选择/调优、知识工程、模型编排、应用部署、应用集成等能力,降低智能应用开发门槛,提升开发效率。
  • 什么是应用平台? 应用平台(AppStage)是基于平台工程(Platform Engineering)理念打造的下一代应用全生命周期管理和AI原生应用生命周期管理平台,帮助客户快速高效地实现传统应用及AI原生应用全生命周期管理,为应用构建、运维和运营等生命周期管理活动提供自助式服务能力,目标是通过标准化和自动化的服务来提升用户体验 ,促使客户可以专注于交付应用逻辑和云上业务创新。 应用平台(AppStage)将平台能力产品化,采用产品管理思维来设计和维护对用户友好而且满足不同用户和角色的期望和需求。通过一套平台实现如下能力: 提供自助式云原生工具和技术的平台,开发人员可以使用这些工具和技术来构建、测试、部署、监控或执行与应用程序开发和交付有关的几乎任何事情,同时尽可能减少开销,提升用户的体验和效率。 提供AI原生应用开发引擎,包括RAG、Agent等应用框架,零码态和全码态的开发形态,降低AI原生应用开发门槛、提升开发效率。支持客户打通自己的业务能力API,将大模型的能力结合进入自己的业务链路。 提供支撑AI原生应用运行的整套模型工具链,包括数据管理、模型接入、模型调优、知识工程等能力,帮助客户选好、管好、用好大模型,从而提升大模型应用效果。 统一主数据平台和概念模型, 管理应用生命周期中组织、产品、服务/微服务与项目等信息。建立贯穿产品设计,DEV,OPS全周期产品信息管理能力,供接入云原生的各系统消费。包含新建、迁移纳管、属性维护、变更通知,保证数据的一致性和稳定性。实现统一的架构治理。 通过工具的集成,构建应用全生命周期自动化流程,打破工具间的信息孤岛,实现不同角色和团队间协作,持续改进和自动化,提升效率和应用的服务水平。 在用户使用应用平台过程中逐步将知识体系固化到平台中,从而使得工程方式标准化、流程化和规模化并持续改善,用户可以对流程、模板进行定制和扩展,并通过与工具库的集成来高效、稳定、全面地实践。实现知识不断迭代积累,从而发挥规模化效应,应对未知挑战,提升价值转化速率。
  • 解决方法 登录https://developer.vmware.com/home,下载VMware加密套件并完成安装。 执行以下命令,将eBackup安装包进行转换。 ovftool.exe --shaAlgorithm=SHA1 /path/to/the/original/ebackup_xxxx.ovf /path/to/the/new/ova/ebackup-SHA1.ovf 更多详情请参见:https://kb.vmware.com/s/article/2151537。 转换完成后再次执行eBackup安装操作。
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图2 排查思路 表1 排查思路 可能原因 处理措施 某个参数填写错误。 在eBackup创建存储单元界面,逐个检查参数是否填写正确。如有不正确,需要修改为正确的参数。其中AK/SK不能填写子账号的AK/SK,需要填写主账号的AK/SK。 eBackup的时间与实际时间偏差较大,导致响应失败。 解决方法请参考eBackup的时间与实际时间偏差较大。 eBackup与云备份服务存在网络通信问题。 解决方法请参考eBackup与云备份服务存在网络通信问题。 eBackup与 对象存储服务 存在网络通信问题。 请错峰备份或提交工单进行技术咨询。 VMware虚拟机的VDDK版本不正确。 需要使用6.0.3版本的VDDK。用户可以访问VMware官方网站https://code.vmware.com/web/sdk/6.0/vddk下载VMware-vix-disklib-6.0.3-4888596.x86_64.tar.gz的VDDK。
  • 存储容量已经超过最大容量 当存储库存储容量超过上限后,系统将不会继续执行备份。当存储库存储容量不足时,您可以采取以下措施: 前往云备份控制台,找到目标存储库,手动删除不需要的备份。 如果还需要保留产生的备份,可以选择扩容存储库,具体操作请参见扩容存储库。 如果存储库绑定了备份策略,可以选择停止备份策略或从策略中解绑存储库,具体操作请参见停止备份策略和从策略中解绑存储库。停止后,自动备份将停止,存储库存储容量将不再变化。也可以修改备份策略或者修改存储库绑定的资源。
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 排查思路 表1 排查思路 可能原因 处理措施 存储库存储容量已经超过最大容量。 解决方法请参考存储容量已经超过最大容量。 账户余额不足欠费后,备份存储库处于冻结状态。 请立即缴清欠款。 执行备份的资源正在执行其他操作。 解决方法请参考执行备份的资源正在执行其他操作。 系统繁忙,任务积压。 请错峰备份或提交工单寻求技术支持。
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 排查思路 表1 排查思路 可能原因 处理措施 eBackup虚拟机上传网速过低,导致以默认配置上传数据时OBS响应超时 eBackup虚拟机上传网速过低(50MB/s以下),导致以默认配置上传数据时OBS响应超时,备份上传失败。原因提示为:Write data to backup storage failed. 解决方法请参考eBackup虚拟机上传网速过低。 eBackup访问虚拟机时,配置的 域名 无法解析,导致创建快照失败 在eBackup的host文件中配置能够解析虚拟机vCenter的域名。
  • eBackup虚拟机上传网速过低 以hcp用户登录eBackup虚拟机后台,并切换到root账号。 执行以下命令,编辑hcpconf.ini文件。 vim /opt/huawei-data-protection/ebackup/microservice/ebk_vmware/conf/hcpconf.ini 将参数“ProductStorageMemoryPoolBlockNum”和“CommonTaskUsingMaxThread4Backup”的值均修改为“2”。 输入:wq!保存以上修改并退出编辑模式。 进入cd /opt/huawei-data-protection/ebackup/microservice/ebk_vmware/script。 执行sh ebackup_stop.sh,如图2所示。 图2 执行sh ebackup_stop.sh 执行sh ebackup_start.sh,如图3所示。 图3 执行sh ebackup_start.sh 重新下发VMware备份任务,并检查故障是否消除。如仍无法解决,请联系技术支持。
  • 排查思路 以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 表1 排查思路 可能原因 处理措施 备份状态为“正在创建”或者“正在恢复”,导致无法删除。 等待备份完成操作后,再执行删除操作。 云服务器备份已用于创建过镜像,备份的删除按钮为灰色,无法删除备份。 需要先将对应的镜像删除,再进行删除备份。具体操作请参考删除镜像。 系统异常,导致备份删除失败。 尝试重新删除备份,如仍无法删除,请提交工单寻求技术支持。 权限不足 在 IAM 中查看账号是否有删除权限。
  • 资源和成本规划 在实际业务使用时GeminiDB、 GaussDB (for MySQL)服务会产生费用,该解决方案预估的费用,仅供参考,实际收费请参考各个云服务的计费详情。 表1 资源和成本规划(按需计费) 华为云服务 配置示例 每月预估花费 GeminiDB服务 按需计费:5.39元/小时。更多计费详情请参见价格详情。 区域:华北-北京四 节点规格:geminidb.redis.large.4 CPU (2 vCPUs) 节点数量:3 存储容量:40GB 5.39 * 24 * 30 = 3,880.8 元 GaussDB(for MySQL)服务 按需计费:4.74元/小时。更多计费详情请参见价格详情。 区域:华北-北京四 节点规格:独享版,4 vCPUs | 16 GB 只读节点数量:1 4.74 * 24 * 30 = 3,412.8 元 合计 7293.6 元 表2 资源和成本规划(包年包月) 华为云服务 配置示例 每月预估花费 GeminiDB服务 区域:华北-北京四 节点规格:geminidb.redis.large.4 CPU (2 vCPUs) 节点数量:3 存储容量:40GB 1953.4 元 GaussDB(for MySQL)服务 区域:华北-北京四 节点规格:独享版,4 vCPUs | 16 GB 只读节点数量:1 2374 元 合计 4327.4 元
  • (可选)创建rf_admin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图1 控制台管理界面 图2 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图3 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中右上角的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,选择“普通账号”,委托的账号,输入“op_svc_IAC”,单击“下一步”。 图4 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果。 图5 选择策略 选择“所有资源”,并单击下一步完成配置。 图6 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图7 委托列表
  • 名词解释 基本概念、云服务简介、专有名词解释: GaussDB(for MySQL):是华为自研的最新一代高性能企业级分布式关系型数据库,完全兼容MySQL。基于华为最新一代DFV分布式存储,采用计算存储分离架构,最高支持128TB的海量存储,可实现超百万级QPS吞吐,支持跨AZ部署,既拥有商业数据库的性能和可靠性,又具备开源数据库的灵活性。 GeminiDB:采用云原生分布式架构,完全兼容Redis®协议,支持丰富数据类型。 提供数据实时持久化、多副本强一致保障,以及实时监控、弹性伸缩、自动备份等一站式服务。
  • 操作场景 该章节指导用户开启Guardian组件存算分离操作。开启后Guardian可以在存算分离场景下为HDFS、Hive、Spark、Loader、HetuEngine等服务提供访问OBS的临时认证凭据。 配置Guardian服务对接OBS主要操作如下: 创建OBS并行文件系统 创建云服务委托并绑定集群 创建普通账号委托 配置云服务委托 为Guardian组件配置访问OBS权限 开启Hive表的级联授权功能 配置回收站清理策略
  • 操作场景 在 MRS 管理控制台,按照集群维度,在集群信息页面的告警页签中能够提供选择是否使能通知服务,只有对应集群开关开启以后,才能实现以下场景的功能: 在用户订阅了通知服务之后,当集群出现扩容成功/失败、缩容成功/失败、删除成功/失败、弹性升缩成功/失败的场景下,由MRS管理面通过邮件或短信方式通知对应用户。 管理面检查大数据集群的告警信息,如果大数据集群的告警信息影响到服务的使用,其告警级别达到致命时,则发送信息通知给对应租户。 在用户集群的E CS 机器被删除、关机、修改规格、重启、更新OS的行为,会导致大数据集群异常,当检测到用户的虚拟机出现以上状态的时候,发送通知给对应用户。
  • 操作场景 某个Core或Task节点出现问题时,可能导致整个集群状态显示为“异常”。MRS集群支持将数据存储在不同Core节点,用户可以在MRS指定角色实例退服,使退服的角色实例不再提供服务。在排除故障后,可以将已退服的角色实例入服。 支持退服、入服的角色实例包括: HDFS的DataNode角色实例 Yarn的NodeManager角色实例 HBase的RegionServer角色实例 ClickHouse的ClickHouseServer角色实例 MRS 3.1.2及之后版本支持ClickHouseServer角色实例退服。 限制: 当DataNode数量少于或等于HDFS的副本数时,不能执行退服操作。例如HDFS副本数为3时,则系统中少于4个DataNode,将无法执行退服,MRS在执行退服操作时会等待30分钟后报错并退出执行。 已经退服的角色实例,必须执行入服操作启动该实例,才能重新使用。
  • 问题排查步骤 登录ClickHouse客户端,需要排查是否存在异常的Merge。 select database, table, elapsed, progress, merge_type from system.merges; 业务上建议insert频率不要太快,不要小批量数据的插入,适当增大每次插入的时间间隔。 数据表分区分配不合理,导致产生太多的区分,需要重新划分分区。 如果没有触发Merge,或者Merge较慢,需要调整参数加快Merge。 加速Merge,需要调整如下参数,请参考加速Merge操作: 配置项 参考值 max_threads CPU核数*2 background_pool_size CPU核数 merge_max_block_size 8192的整数倍,根据CPU内存资源大小调整 cleanup_delay_period 适当小于默认值 30
  • 场景描述 通过使用AstroZero的零代码应用模板,快速创建零代码应用,带您了解在AstroZero中开发一个零代码应用的大致流程,并认识相关概念。本入门以AstroZero零代码中预置的“培训报名”模板为例进行介绍,该模板提供如下功能: 外部用户即匿名用户微信扫码,填报活动报名信息,支持查看自己填写的报名信息。 内部用户可在手机端微信扫码或者 WeLink 扫码填报信息,支持在PC端新窗口打开或使用链接在浏览器访问填报页,支持查看自己填写的报名信息。 培训活动管理员基于用户的填报信息,获取培训报名人员信息,以及用户希望了解的培训内容。
  • 步骤6:编译发布应用 在应用开发完成后,应用需要编译、打包和发布,既可以发布到当前租户的运行环境,也可以共享给其他租户,在其他租户的开发环境或运行环境下安装。 AstroZero支持多种发布方式,本示例中使用的是将应用发布到“我的仓库”进行发布,后续将会通过“我的仓库”再部署到运行环境。 应用包编译类型 在AstroZero经典版应用设计器中,支持编译资产包和源码包两种类型的应用包。如何在AstroZero新版设计器中,编译发布应用包,请参见如何一键部署应用。 源码包:包中的所有组件都不受保护和限制。在其他环境安装后可编辑包中组件,即在原有基础上可进行再开发。如果后续其他用户在开发环境安装后,会显示在开发环境首页的“项目”页签下。 编译类型为“源码包”时,只有发布到“我的仓库”一种发布方式。 资产包:支持设置包中的组件是否受保护。打包时不做编译设置,默认打出的包都是资产包,包中组件都为只读保护模式,将包安装到其他环境时,只能运行和预览,不可编辑包中组件。如果后续其他用户在其他开发环境安装资产包后,应用会显示在开发环境首页的“库”页签下。 发布方式 AstroZero应用(资产包)发布方式,如图47所示。本示例中使用的是将应用发布到“我的仓库”,后续将会通过“我的仓库”再部署到运行环境。 图47 应用发布方式 登录AstroZero经典版开发环境,在首页,单击“我的应用”下的“HelloWorld”,进入应用。 在应用开发页面左侧,单击,选择“设置”。 在包类型中,选择“资产包”,单击“保存”。 图48 设置包类型 在应用开发页面左侧,单击,选择“编译”,进行编译。 编译前,还可以单击进行一些自定义的编译设置,详细设置请参考编译设置。 编译完成后,单击左下角,选择“我的仓库”,将应用程序安装包发布到我的仓库。 填写版本信息,单击“发布”。 图49 填写版本信息 发布成功后,页面显示“程序包已经被成功上传到我的仓库。”。 【思考】应用发布之后的包可以下载吗?其他租户可以看到吗? 在应用的“包管理”页面,可以查看已发布的应用包,也可以单击下载,如图50。不同租户之间,“我的仓库”里面的应用是不可见的。 图50 查看发布到“我的仓库”下的应用包
  • 步骤5:开发应用-预览验证 在页面开发时,单击,可进入开发环境的预览页面,跟实际效果稍有差距。本节将介绍如何在应用的预览环境中,预览应用效果。这里预览效果跟实际在运行环境中基本一致。在应用配置下,还可以更改应用框架的样式和颜色。 进入“HelloWorld”应用经典设计器。 将页面挂载到导航条上,作为应用菜单。 如果没有将页面挂载到导航条上,预览应用时,是无法找到应用的相关页面和对象等信息的。 在应用左侧导航下方,单击“配置”。 图42 配置 在“导航条”页签,单击“菜单树”右侧的“+”,选择“添加页签”。 图43 导航条添加页签 在导航条上的页面较多时,您可以添加目录。添加目录可以更方便区分页面类型,方便导航使用。目录添加之后,会在应用导航中直接显示,目录下可以添加页签。另外,应用配置中还可以设置应用选项列表,系统参数等信息,您可以在设置应用中查看。 在“添加页签”页面中,设置表6信息,单击“保存”。 表6 页签信息 参数名 参数说明 本示例需要填写的值 页面类型 当前要添加的页面类型。 主页页签:用于展示个人任务相关的信息。 对象页签:关联一个对象的布局,将展示指定对象的某个布局页面。 标准页面页签:用于关联并展示一个标准页面。 高级页面页签:用于关联并展示一个高级页面。 BPM页签:用于关联并展示一个BPM。 Web页签:用于关联一个URL,将展示URL对应的网页或页面。 状态机页签:用于关联并展示一个状态机。 报表页签:用于关联并展示一个报表。 标准页面页签 显示区域 导航页签的显示区域。 主页菜单:按照布局样式进行显示,例如显示顶栏区域或者右上角。 自定义菜单栏:选择该方式后,在应用的运行态Portal中,单击右上角用户名,会在下拉选项中显示导航页签。 主页菜单 打开方式 导航页签的打开方法。 当前窗口:选择该导航页签后,在当前窗口打开页面。 新窗口:选择该导航页签后,在新窗口打开页面。 当前窗口 标签 显示在应用导航的名称。 HelloWorld 名称 用于唯一标识页签的名称。 helloPage 图标 导航页签的展示图标。 这里可以不设置,如果有,可以选择一个图标直接上传。 页面 需要添加的页面 helloPage(CNAME__helloPage)。 描述 当前页面的描述信息,用于了解当前页面的主要内容。 不设置。 图44 我的应用 在“导航条”页面,删除菜单树下的Home页签。 在应用左侧导航下,单击,进入应用预览页面。 图45 查看应用 单击右侧“HelloWorld”,在右侧页面中,输入词条名和词条描述,单击“新增”,查看表格中新增的词条记录。 图46 新增词条 (可选)如果词条未能创建成功,按键盘“F12”,调测页面调试窗,重新输入词条,进行页面调试。
  • 步骤3:开发应用-创建服务编排 【思考】什么是服务编排? 服务编排功能是AstroZero的核心功能之一,即是在可视化、模板化的服务编排页面,通过拖拽图元,并配置图元,再拖拽相关参数,就可以实现特定的业务逻辑的一种开发方式。 服务编排类似于编程中一段有流程、条件处理、判断逻辑的程序。这段程序有输入参数和输出参数,可以独立成为一个对外调用的方法。同时,在服务编排内部,也可以调用其他的方法。 本示例中,创建服务编排目的是操作一个存放词条的自定义对象,实现将服务编排中获得的入参信息,分别以“词条名”、“词条描述”字段写入到词条对象helloObject中。如果您还没有创建,请查阅创建存放词条的自定义对象章节,进行创建。 在规划存放服务编排的目录“Logic”下,创建服务编排。 将光标放在“Logic”目录上,单击右侧“+”。在弹出的菜单中,选择“服务编排”。 图13 创建服务编排 在对话框中,输入服务编排的“名称”为“helloFlow”,单击“标签”的输入框后,系统将自动生成名称为“helloFlow”,再单击“添加”。 图14 添加服务编排 表4 服务编排基本信息 参数名 参数说明 本示例需要填写的值 创建一个新的服务编排 创建一个新的服务编排流程。 保持默认,选中“创建一个新的服务编排”。 使用已有的服务编排 基于已有的服务编排创建。方便用户快速继承已有服务编排的配置,提高效率。 不设置。 标签 服务编排用于展示的名称,创建后可修改。 helloFlow 名称 服务编排在系统内的唯一标识,创建后不可修改。 系统会自动在该名称前添加命名空间__。当其他功能调用服务编排时,调用的是服务编排的“名称”,而不是标签。 helloFlow 说明: 实际创建的服务编排名为:CNAME__helloFlow 类型 服务编排的类型。 Autolaunched Flow:自启动服务编排,在接口调用后会立即执行服务编排模型定义的逻辑。 Event Trigger:事件触发的服务编排,在事件触发时才会开始执行服务编排模型定义的逻辑。选择该类型时,需要配置具体的事件以及条件规则。 保持默认类型:Autolaunched Flow 定义变量,作为后续获取前端页面的输入值,同时也是操作词条对象helloObject的字段。 单击,展开“全局上下文”,再单击“变量”后的“+”,修改“variable0”为“name”;再次单击“+”,创建变量“detail”。这里创建的“name”、“detail”分别对应词条对象helloObject中的“词条名”、“词条描述”字段。 “全局上下文”是定义服务编排中使用到的变量列表区域,服务编排中支持定义变量、变量集、常量、结构体等参数,具体变量创建方式及变量说明请参见配置服务编排变量以及输入输出参数。 图15 新增变量 在服务编排中,添加并配置“记录创建”图元。 “记录创建”图元是通过关联当前应用(HelloWorld)中已存在的一个对象(词条对象helloObject),然后通过设置对应的操作字段(name、CNAME__detail__CST),实现向这个对象中增加记录的功能。AstroZero预置了多种逻辑图元,详细图元分类及功能介绍,请参见图元介绍。 在左侧图元列表中,单击“基本”,拖拽“记录创建”图元到画布中,“标签”修改为“创建记录”,“名称”保持默认。 图16 拖拽创建记录 单击,配置“记录创建”图元。 先单击“对象”下拉框,选中词条对象“CNAME__helloObject__CST”。对象设置后,“赋值”下自动显示对象下可以被赋值的字段(name、CNAME__detail__CST);再单击“全局上下文”,然后从全局上下文中,分别拖拽变量“name”、“detail”到对应“源”输入框中。关联之后,变量从前端获取到值后,将会传给对象中的字段。 图17 拖拽需要修改对象字段 定义输入参数,并保存服务编排。 这里的入参、出参指的是整个服务编排的入参、出参,具体参数需要从“全局上下文”列表中拖拽。 在画布上,把鼠标放在起点图元上,从“+”拖动鼠标,在起点图元和“创建记录”图元间增加连线。 图18 连接图元 鼠标在画布空白处点一下,单击右侧,设置服务编排的输入参数。 图19 拖拽服务编排的输入参数“name”、“detail” 单击服务编排界面上方的,保存服务编排。 测试服务编排能否正常执行。 单击服务编排编辑器上方的,进入执行服务编排页面。 在输入参数中,输入测试数据,单击“运行”。 { "name": "helloWorld", "detail": "helloWorld 是我的第一个应用" } 执行成功,界面上会返回设备对象中的全部信息,样例如下: { "interviewId": "002N000000edyfrHJiLV", "outputs": {} } 启用服务编排:测试成功,单击服务编排编辑器上方的,启用服务编排。 如果服务编排创建完成后,未启用默认是属于编辑状态,不能被页面调用。 图20 服务编排启用后高亮状态
  • 步骤2:开发应用-创建对象 【思考】什么是对象? 对象是AstroZero的核心功能之一,对象相当于传统数据库里的一张表,用于持久化业务数据。AstroZero中有内置的标准对象,也有租户开发者创建的自定义对象。 租户角色的开发者,创建一个自定义对象后,可在前端页面使用页面模型绑定此对象,并使用表格组件,直接展现对象数据。也可以使用脚本、自定义JS代码、服务编排等,对对象中的信息进行增删改查(AstroZero中常用的使用方式)。 根据HelloWorld应用设计的功能,首先您需要先创建一个存放词条的对象helloObject,用于保存词条名、词条描述、创建日期信息。对象helloObject中使用到的字段,如表2所示。 表2 自定义对象helloObject字段详情 字段标签 字段名称 数据类型 是否唯一 是否必填 建议长度 词条名 name(预置的标准字段) 说明: 自定义对象具体预置了哪些标准字段,请在了解自定义对象中系统预置的标准字段查看。 Name 是 是 - 创建时间 createdDate(预置的标准字段,不需要修改) 日期/时间 - 是 - 词条描述 detail 文本 否 是 255 在“HelloWorld”应用中,在规划存放对象的目录下,创建对象。 将光标放在“Model”目录上,单击,选择“对象”。 本示例中,使用默认“Model”目录存放对象,因此需要在“Model”目录下进行创建对象操作。对象添加完成后,系统默认会将对象放在“Model”目录下,您也可以根据个人喜好选择其他目录创建。 图7 创建对象 输入对象的“标签”为“helloObject”,单击“名称”的输入框后,系统将自动生成名称为“helloObject”,再单击“添加”。 图8 添加对象 对象创建完成后,自动进入对象详情页面。 【技巧】如果输入“标签”的值,首字符为英文字母,单击“名称”的输入框,系统会自动生成与“标签”对应的“名称”,也可以根据需要修改这个自动生成的“名称”。 表3 创建对象的相关信息 参数名 参数说明 本示例需要填写的值 创建新对象 添加对象的方式。 保持默认,选中“创建新对象”。 标签 对象展示的名称,为了区分不同对象的描述信息,创建后可修改。 helloObject 名称 对象在系统内的唯一标识。 对象创建后,系统会自动在“名称”增加租户命名空间前缀,以及增加“__CST”后缀,“__CST”是AstroZero中对象的后缀标识。 对象创建完后,“名称”不可以修改。 helloObject 说明: 对象创建后,系统自动为对象名称添加前后缀,实际创建的对象名为CNAME__helloObject__CST。 查看并修改对象的标准字段。 查看标准字段,了解自定义对象中系统预置的标准字段。 自定义的对象创建后,系统将自动创建一些标准字段,供您使用。您可以在“自定义对象”的详情页面中,单击“标准字段”页签,查看自定义对象的标准字段。标准字段如图9所示,其中“name”和“createdDate”两个字段,在后续开发中将会用到。 图9 标准字段 修改标准字段“name”。 单击“name”字段右侧的,如图9所示,进入字段编辑页面。在“name”字段编辑页面中,修改“标签”为“词条名”,并勾选“是否唯一”,“是否必填”,然后单击“保存”,如图10所示。 图10 修改name字段 【思考】为什么要修改“name”字段,其他标准字段可以修改吗? 因为“name”的默认属性,没有完全符合HelloWorld应用对“词条名”的要求,例如“标签”,“是否唯一”这些字段属性,因此需要自定义修改一下,修改后“name”作为存放“词条名”的字段。 标准字段中目前只有“name”字段支持修改,而“createdDate”字段直接使用,不能修改。 创建一个自定义字段“词条描述”,作为应用中存放词条描述信息的字段。 在“自定义字段”页签,单击“新建”,进入创建字段页面,设置字段类型为“文本”,单击“下一步”。 图11 新建自定义字段 自定义字段可以手动创建,也可以批量导入自定义字段,具体操作请参见如何使用对象的字段模板批量创建自定义字段章节。 输入新字段详细信息,单击“下一步”。 设置字段“标签”为“词条描述”、“名称”为“detail”、字段长度“255”,并勾选“是否必填”、“大小写敏感”、“是否可搜”。 图12 定义“设备编码”详细信息 字段“名称”为“detail”,实际创建的字段,系统将自动添加前后缀“CNAME__detail__CST”,“CNAME__”前缀由租户命名空间决定,“__CST”后缀代表是自定义字段。 设置字段级的访问权限,即选中“读取”和“编辑”复选框,为所有预置profile配置能编辑和读取本字段的权限,单击“下一步”。 在AstroZero中,预置了一些权限集,并提供了自定义对象中字段级的安全控制,这些权限配置是由管理员预置的,权限集及设置的更多详细介绍,请参见了解权限配置。 将字段添加到对象的页面布局:选中“添加本字段到该页面布局”,单击“保存”。 在AstroZero中,如果某个自定义字段在创建时,设置了添加到页面布局,那么在该对象的页面布局的页面表格中,将可以对该字段进行增删改查等操作。 【技巧】自定义对象的页面布局,可以直接操作对象,进行增删改查等操作,更为方便的是可以作为前端页面直接使用,对象页面布局更多详细介绍,请参见编辑对象的页面布局。
共100000条