前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apriso 开发葵花宝典之传说的完结篇GPM

Apriso 开发葵花宝典之传说的完结篇GPM

作者头像
李英杰同学
发布2024-02-28 17:05:43
1750
发布2024-02-28 17:05:43
举报
文章被收录于专栏:智能制造社区智能制造社区

概述

Process builder是Delmia Apriso中主要的业务流程管理工具,也是DELMIA更广泛的Apriso制造运营管理解决方案的核心应用程序,Process Builder允许使用屏幕流管理设计方法和实体(如项目、屏幕、布局、视图和操作(函数))创作用户界面和业务逻辑。该应用程序能够快速方便地管理和修改开发的设计,使您能够根据需要随时更改业务流程。由于增强了对可重用性的支持,以前开发的逻辑可以在新的设计中快速重用。

作为Apriso开发系列的结束篇,本文介绍开发结束后的打包和部署GPM模块。

什么是GPM

Global Process Manager (GPM)是一个DELMIA Apriso模块,它可以“开箱即用”地传输DELMIA Apriso实体和其他项目类型。使用此应用程序后,部署变得快速、可管理且可靠,并支持单生产和多生产服务器环境。

GPM也提供了控制台命令行模式,命令行模式是为管理员管理批量部署的设计。可以为包部署的执行编写脚本进行批量部署,命令行参数详见:http://[ServerName]/apriso/Help/en-us/GlobalProcessManager/index.htm#Command_Line_Parameters.htm?TocPath=Command%2520Line%2520Mode%257C_____2。

Site和COE

GPM有COE和Site两种授权,只有在完成授权注册后才能连接目标服务,

  • Site:连接到仅存在于同一站点中的目标服务器
  • COE:可以连接任何目标服务器,COE授权在有一个以上的生产基地、希望管理全球工厂、希望增长(即增加工厂的数量)并降低部署成本、希望减少升级、更改和维护的成本情况下选用,并且需要购买COE授权才能进行

在本地发布状态,可以使用本地发布仪表板查询位于此服务器上的所有项目,并包括它们的名称、修订版本和构建号(最近部署在服务器上的包)

COE模式下提供全局部署视图Global Deployment View,提供全局监视和分析每个工厂、每个区域等的部署状态的能力。它是一组仪表板屏幕,显示部署状态和在一个中心位置聚合数据的机制。

全局部署视图使用消息队列向主服务器发送通知(包部署、目标服务器操作)。在主服务器不可用的情况下,消息在无效状态之前保持6天。无效消息将被丢弃。

全局部署视图在更改被监视环境的配置设置时使用实时远程处理。

详细使用方法详见http://[ServerName]/apriso/Help/en-us/GlobalProcessManager/index.htm#Global_Deployment_View.htm?TocPath=Global%2520Deployment%2520View%257CGlobal%2520Deployment%2520Overview%257C_____0

发布顺序

实体和GAC组件等一旦将它们添加到项目的内容中,就会根据它们之间的依赖关系为这些项建立正确的传输顺序,最不依赖的项首先出现。发布顺序(从上向下箭头所示)在“发布状态”Deployment Status选项卡中可见。

在“发布状态”标签页中,通过鼠标右键对相应的实体进行删除、发布等操作,详见http://[ServerName]/apriso/Help/en-us/GlobalProcessManager/index.htm#Deployment_Status_Tab.htm

包生成类型

GPM中有5种包生成类型

  • 生成最新更改Last Changes:生成的包中只包括从上次“最新变更”成之后修改或添加的项(系统在生成之前自动检测更改)。依赖项自动添加到先前从该项目生成的不是从“使用选择项生成” From Selection或“从来自修订生成” From Revision的软件包中。
  • 生成所有变更All Changes:包含自那以后更改或添加的项使用Generate Everything,依赖项是自动添加到先前从Generate Everything方法生成的包中
  • 生成全部内容Everything:包含项目的全部项
  • 使用选择项生成From Selection:只包含选定的项。只有当包部署在整个项目所在的服务器上时,模块才有可能实现已经部署(即至少先部署了一个Everything包)。
  • 从来自修订生成From Revision: 只包含同一个项目的两个版本之间的差异-项目当前版本和选定的基本版本。

上图显示了三种包生成方法之间的差异。

  1. 版本1.0.0的包是使用“Generate Everything”创建的。
  2. 版本1.0.1和1.0.2的包是使用“Generate Latest Changes”生成的,并且只有尚未打包的实体。
  3. 包1.1.0是使用“Generate All Changes”生成的,它包含了自上次使用“Generate Everything”选项以来的所有更改。内容与1.0.1和1.0.2中的更改相匹配。

发布选项

  • 重新部署成功部署的GPM项目和包依赖项——系统将重新处理成功部署的项目和包依赖项。否则,只有失败的才会被重新处理。此选项仅与Redeploy选项一起可用。这个选项只有已经发布过的包重新发布才会出现
  • 允许用旧实体覆盖新版本——强制系统覆盖服务器上现有的比正在部署的实体更新的实体。
  • 完成所有受部署影响的打开任务—部署之前完成打开的任务open tasks (在部署包的服务器上)。只有受部署影响的任务才会被完成。劳动任务Labor task不能自动完成。它们必须手动完成。如果系统在部署期间要完成超过50个打开的任务,则会显示一个错误,建议禁用此选项。建议不勾选此复选框。
  • 重展开受发布影响的WIP订单—WIP订单在成功部署到目标服务器后被展开。只有受发布影响的订单才会被重新分解。
  • 自动重新重建流程Process和操作Operation——强制系统在包部署后重新生成流程或操作。从旧的DELMIA Apriso版本部署操作和流程需要运行再生过程,以确保函数解释器正常工作。这个过程可能需要一些时间。与流程Process相关的功能已经弃用,并且不会进一步开发。在早期DELMIA Apriso版本中生成且包含错误配置的操作的包的部署可能会失败,因为系统不会重新生成此类操作Operation,有两个子选项:
    • 如果流程/操作再生失败,或操作脚本编译失败,部署失败—如果选中,则流程或操作再生失败,或操作脚本编译失败(在部署过程中始终编译操作脚本),部署失败。
    • 运行Apriso单元测试,如果任何测试失败,则部署失败—仅适用于带有PB项目的包。选中后,GPM将运行每个模块中包含的Apriso单元测试。如果任何测试失败,则模块部署也将失败,但不会回滚任何实体。
  • 不发布设计数据(不可从包中编辑流程和操作)—只在选定实体的目标服务器上部署运行时数据(不包括设计数据)。这些实体将正常执行,但不能在Process Builder中编辑。
  • 跳过已部署的实体—系统跳过目标服务器上存在且未更改的实体(Screen、View、Layout、Operation和Process)的部署。
  • 重置实体的最后修改日期—将每个实体的修改日期设置为部署包的日期。如果不选择,系统将保留源服务器的修改日期。保留实体的最后修改日期意味着还可以在源服务器以外的服务器上创建“最新更改”和“所有更改”包。只有在最新版本的生产中生成的包才可能保留实体的最后修改日期。
  • 将PB项目修订版设置为默认-重置项目的默认版本。

默认修订优先规则(PB项目不可用):

  • 对值编辑器设置完全访问Set package entities as default revisions ——如果包包含被设置为默认修订的实体,它们将覆盖服务器上存在的这些实体的默认修订。此屏幕上列出的所有实体都将被选中。
  • 留服务器实体为默认修订——如果包包含被设置为默认修订的实体,它们将不会覆盖服务器上存在的这些实体的默认修订。如果实体在服务器上不存在,它们将被设置为默认值。
  • 如果包中包含的实体未被设置为默认版本,并且在目标服务器上不存在,则该实体将被设置为默认版本。
  • 如果包包含多个实体(未将修订设置为默认值),并且目标服务器上不存在该实体的修订,则将具有最高修订的实体设置为默认值。例如,在具有REV.001.001和REV.001.002版本的实体之间,第二个版本将作为默认版本部署。
  • 为Processes和Operations指定默认修订—如果不希望目标服务器上的特定实体被包中的实体覆盖,请取消列表上的选择。当调用实体并且所有其他修订在当时无效时,将使用默认修订。

集群环境下的GPM

Global Process Manager支持多服务器和集群环境。要了解有关设置多服务器环境的详细信息,请参阅DELMIA Apriso高可用性安装指南,集群环境下树形结构中增加了一个Environment Nodes节点:

能够显示每个节点的当前状态以及最后更新结果:

  • Unknown -节点的状态未知。
  • Up-to-date—所有包都成功部署在此节点上(它是同步的)。
  • Not Up-to-date——不是所有的包都部署在这个节点上(如果没有同步)。当某个节点的状态为“Not Up-to-date”时,可以使用鼠标右键点击“Update With Latest Packages”尝试在该节点上部署所有包进行同步。
  • Auto Update In Progress-节点此时正在更新

如果由于某个节点上的GPM服务已停止而导致部署包失败,则在该节点上的GPM服务运行后,系统会自动尝试重新部署包。但是,如果包之前已经在节点上部署过,并且现在正在重新部署,那么一旦服务运行,系统就不会尝试再次部署它。在这种情况下,应该手动重新部署包。

大多数DELMIA Apriso服务由Cluster Manager管理。这意味着服务仅在一个节点上运行,如果服务停止,Cluster Manager将尝试重新启动该服务。如果失败,它将启动另一个功能正常的集群节点上的所有服务。但是,GPM服务不是由Cluster Manager管理的,因为它必须同时在所有节点上运行。

如果GPM停止工作,集群管理器不会自动重新启动GPM。如果GPM在活动集群节点上停止,则在手动启动服务之前,应用程序无法连接到该集群(并执行任何操作)。如果GPM在备用集群节点上停止,则应用程序使用主节点正常工作。在备节点上启动服务时,备用节点将更新最新的GPM包。

多数据库支持

可以生成一个包含数据库对象(不含数据的数据库表)的包,数据库视图、数据库包、数据库存储过程和数据库函数)和将在两种不同数据库类型上正确部署的SQL脚本。

要启用这个功能,需要在Configuration Manager中进行配置GPM Alternative Database

配置完成,并重新启动服务后,在GPM中增加数据库对象项或者SQL Scripts项时就会出现一个不同的额外选项:

举例Apriso在SQL Server环境下,并设置替代数据库为Oracle类型,设置后在Process builder开发时,就可以分别写入SQL Server和Oracle脚本或者对象。

在生成包时就会自动生成两个脚本,而不需要单独的为每种数据库类型进行添加。

Source Repository

可以将项目存储在SubVersion版本控制系统中。当生成部署包时,项被提交到源存储库。在存储库中存储项有两种方法:

  • 全部内容-只适用于以下项目:
    • GAC组件
    • 文件
    • SQL脚本
    • 存储过程(数据库对象)
    • 自定义动作
    • 配置文件
  • 自上次生成包以来检测到的更改列表(“diff”)(以扩展名为.diff的文本文件的形式存储在存储库中):仅引用Operations、Processes和Functions。当第一次将这样的项目添加到存储库中时,没有版本可以与之比较,因此在存储库中创建的文件包含项目的类型和名称以及相关的信息。

第一步:添加Source Repository

在Console Root树形结构“Source Repository”右键点击“New Source Repository”,弹出“New Source Repository Properties”窗体

输入:存储库名称、SVN地址、用户、密码,点击OK,后会弹出是否需要新建SVN结构询问窗体:

点击Yes后,GPM自动才SVN服务器上建立相关目录结构。检查SVN服务器连接状态是否有效:

第二步:选择Source Repository

在新建项目或者PB Project项目的属性窗口中修改Source Repository

第三步:生成包体,检查SVN中文件生成情况

常见问题

问题

描述

Operation or Process can get Active or Prototype status after deployment even if it is not valid

The TargetRevisionStatus flag is set to Prototype or Active as these entities are not validated by Global Process Manager during deployment. Perform one of the following actions:· Re-release the Operation or Process after deploying it (to validate it, can be done for entities in Prototype status only).·Include all the entity dependencies prior to its migration to assure its validity at the destination server.

Unable find the configured directory for a file

There is a file in the package that is created from a predefined directory and that directory does not exist on the destination server (it is not predefined on the server).

Problems with moving Reports/Labels

Reports and Labels are based on the REPORT table and use the ReportName column as their Global Unique Key. That might cause problems when they are moved between servers because there can be many different Reports with the same name. Moreover, there can be Reports and Labels that boast the same name. In situations where there is a Label with the same name as a Report being deployed, then that Label will be overridden by the Report.

There is more than one entity or row in table with the same Global Unique Key column values

To deploy a package in this case, modify the values on the database to give them unique GUK columns.

Referenced system table data or referenced entity does not exist on the destination database

To resolve this issue, deploy or add the referenced data on the server.

Unable to import an entity because there is a cycle in the entity configuration between the referenced entities

The entity is incorrectly configured. To resolve this issue, modify the entity’s configuration to remove a cycle between referenced entities.

The file cannot be deployed because the access to file or directory is denied

The Deployment Services Windows service does not have access to the file that is being deployed.

Unable to remove component from GAC

The component cannot be removed from GAC.

Unable to add *.dll to GAC

The GAC component cannot be deployed.

Unable to save script file

The problem occurs when saving temporary files with SQL scripts to disk. Verify if the Deployment Service has rights to the C:\Temp\AprisoSQLScripts directory.

Unable to deploy SQL script

You can find the reason for an unsuccessful deployment within the log files in the C:\Temp\AprisoSQLScripts directory on the server.

Unable to read package data as it is in an older format

The file is of an incorrect format or does not contain DELMIA Apriso Global Process Manager package data.

Unable to read package data

The message can appear during package deployment or redeployment or when a package is being sent or saved from the Package Repository. It indicates that data for that package is missing – the file with the required data has been removed or renamed.

Unable to import the data because the entity with the same value of unique columns but different FUID already exists

Try to resolve the issue by deploying the package with the Skip deployed entities option disabled in the Deployment Options window.

Package deployment results in timeout errors

In case of large size of a package, increase the sendTimeout and receiveTimeout parameters in the <drive>\Program Files\Dassault Systemes\DELMIA Apriso 2023\Website\CentralConfiguration\WcfClientConfiguration.xml and <drive>\Program Files\Dassault Systemes\DELMIA Apriso 2023\Services\Global Process Manager Services\FlexNetGlobalProcessManagerRemotingService.exe.config files. For details, refer to the Increasing Timeouts for Environment with a Large Amount of Data section of Process Builder Projects Implementation Guide.

Package deployment and Operations regeneration failed

Deployment of packages that were generated in earlier DELMIA Apriso versions and contain incorrectly configured Operations might fail because the system will not regenerate such Operations. You need to deploy the packages manually on the upgraded environment without selecting the Auto regenerate Processes and Operations check box, validate the affected Project in Process Builder, resolve the errors, and generate and deploy the packages again with this check box selected.

There are many Operations with the same code in destination database

Deployment of packages generated in DELMIA Apriso 2020 or earlier might fail if there are many Operations with the same code in the target database. Set the AllowUnresolvedOperationLinksDeployment key to "True" in the CentralConfiguration.xml file. GPM deploys all affected entities, but the links to Operations are removed. You need to manually relink the Operations after the package deployment.

最佳实践

  1. 可以使用相关的打包发布业务组件BC(CreateEverythingPackageFromProject、CreateLatestChangesPackageFromProject、CreateAllChangesPackageFromProject、SendPackageToServers)自己编写Operation和Job实现计划性发布
  2. 虚拟机快照:测试环境在目标服务器上测试GPM包部署的最佳方法是创建DELMIA Apriso 虚拟服务器,通过创建该虚拟机的快照进行备份,如果部署失败,执行必要的更正,恢复快照,然后再次尝试部署,直到部署成功
  3. 充分利用PB Project:
    • 跟踪项目中的变更并生成最新变更包
    • 由于项目构建号,可以跟踪部署状态。
    • 为每个功能领域使用单独的项目,并将公共元素放入可用于许多功能领域的单独项目中
    • 在相互依赖的项目之间创建依赖关系
    • 当目标服务器需要更新时,检测更改并使用generate Latest changes选项
  4. 使用文件夹来组织您的解决方案—文件夹可用于组织项目,例如,解决方案的每个版本可放在单独的文件夹中。
  5. 使用源存储库 :与subversion控制的集成提供了对大多数类型项目的历史记录的访问
  6. 依赖于包的依赖关系 :包之间的依赖关系是根据来自同一个项目的包的顺序和项目之间的依赖关系自动创建的。它们确保所有更改都按照正确的顺序部署,不会遗漏任何内容。
  7. 编写检查它们创建的对象是否存在的SQL脚本:为了避免部署错误,你的SQL脚本项应该能够创建或覆盖它们包含的对象(IF NOT EXISTS)。SQL脚本应该首先检查它创建的对象是否已经存在于数据库中。如果存在对象,则停止脚本的执行。如果对象不存在,则继续执行脚本并创建它们。

8. 在GPM SQL脚本编辑器中存储SQL脚本:将SQL脚本项目内容保存在GPM SQL脚本编辑器中,而不是保存在外部文件中。它将确保更容易访问脚本内容。

9. 将根操作Operation存储在单独的项目中:如果它们有循环调用,则将根操作存储在单独的项目中。否则,如果您将根操作与其依赖项放在一起,则在部署此类包时将遇到问题。

10. 只有当所有依赖对象都不在数据库中时,才能部署实体。对于该操作,必须部署所有被调用的子操作。GPM通过使用With Dependencies, Fully generated…选项来防止这种情况发生。

11. 如果后台活动(如后台作业调度操作、MI调用、Web服务调用)必须在项目上下文中完成,如

12. 更改模块之间的引用关系可能导致目标服务器上的项目定义不一致,需要谨慎处理

13. 创建专用的项目用于保存创建数据库对象的SQL脚本

14. 除非真的有必要,否则不要使用“从选择中生成”。热修复紧急发布只需要交付选定的项目时,比如修复程序打补丁时,可以使用“从选择中生成”生成。

15. 不要使用GPM向资源、工作中心等多个实体推送,因为这类实体引用了很多对象。这些实体位于许多相互引用的表中,这些实体也位于自定义表中,这是找到GPM之外的另一种方法的原因,有时,主数据量非常大(例如:仓库位置),这会导致GPM出现问题(等待时间长、错误)。

16. 在已经存在表的目标服务器上使用“SQL Script”实体部署表定义可能会导致数据丢失。这种情况必须由GPM中的特殊脚本实体来处理。该脚本应该执行以下操作:

  • 创建临时表作为受影响表的副本
  • 将数据从表拷贝到临时表
  • 删除表并重新创建一个新的结构
  • 将数据从临时表复制回新表

17. 在目标服务器上部署系统参数可能会覆盖当前设置。为了防止这种情况,系统参数必须启用“运行时值特定于此Apriso实例”选项。但是对于第一次部署来说取消勾选“运行时值是特定于这个Apriso实例”也是可以的。它会使用源环境上设置值来初始化系统参数。

18. 如果目标上已经存在判定的GPM传输可能会导致数据丢失。目标服务器上的当前确定内容必须存储在临时表中。类似于对表的操作

19. 生产环境部署必须及时精确地计划,因为它意味着生产过程的中断,并且必须在计划时考虑其后果。客户可能会利用Apriso更新工厂的机会,在休息时间安排其他操作,如硬件升级、生产车间扫描仪更换、其他软件的安装/更新

20. 必要时需要准备单独的回滚GPM,用于回滚操作,如:

需要发布的包:

operation: Order.Start COM.1.1.003 (new default)

new stored procedure: AP_CONTAINER_Insert

回滚包 (在生产机上生成):

operation: Order.Start COM.1.1.002 (更新之前的版本)

current stored procedure: AP_CONTAINER_Insert

回滚后的状态

operation: Order.Start COM.1.1.002 (new default)

operation: Order.Start COM.1.1.003

previous version of stored procedure: AP_CONTAINER_Insert

21. 多工厂定制时可以有两种方式实现:一种是使用系统参数,一种是和工厂Facility特征来进行区分

22. 指定一名开发人员负责包的创建。如果很多用户使用GPM,就有出错的风险。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能制造社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档