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

Apriso开发葵花宝典之九 Project篇

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

1.概述

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

本文介绍Process builder中Project项目管理机制概念及相关应用。

2.什么是Project

在DELMIA Apriso 2018中,引入了“项目”Project功能,以便更轻松地管理和部署使用DELMIA Apriso BPM创建的解决方案,“Project”是一个独立的实体,它允许在一个容器中管理Process Builder实体,允许更容易的维护、版本控制、执行和升级。项目中的实体被组织成模块。Process builder中一个项目中的实体在实体管理器Entity Manager中不可用。同一项目的不同模块之间或不同项目之间引用它们,则可以在其他项目中使用它们。如果需要使用其他实体的实体则必须放在同一个PB项目中。

Apriso解决方案和服务项目由Process Builder中的多个项目组成。在Projects的帮助下,可以更有效和简单的方式对实体进行分类。

Process builder中的项目Project的概念类似于我们在Visual studio中的项目概念。

  • 项目允许对实体(如屏幕、视图或操作)进行分组,这些实体在功能上属于一起,并可以进行版本控制
  • 项目由各种类型的“模块”组成,这些模块进一步对上述实体进行分组。
  • 它们还可以包含动作脚本、FlexParts和菜单项。
  • Process Builder项目的结构被自动映射到GPM。
  • 可以验证、更改状态或清除项目中的所有实体

在CetralConfiguration文件中DisableProjectEditing键值设置成True时,可以禁止所有项目不可编辑。

项目和非项目管理机制的对比:

PB-Projects

No-Projects

Process Builder集成

- 自动和GPM同步,不需要额外手工建立- 从PB 项目中集成- 第一次生成和发布时必须时完整的项目结构

- 需要在GPM中手工建立项目结构-至少顶部实体必须从GPM内部添加-可以上传单个包

包生成

·-自动生成完整的包结构

·-必须一个一个地生成包

版本管理

-通过更改默认的项目版本,在版本之间切换(对于版本化的实体)

-通过更改操作operation的默认修订版本在版本之间切换

代码分享

-需要传输完整的项目,然后手动集成特定解决方案

-可传输指定的GPM项目

项目管理工作量

-简单, 所有的实体都会自动出现在GPM项目中- 如果出现问题,需要额外的工作量来分析问题并交付

-维护项目内部实体的可用性需要大量的工作

3.项目架构

在某些情况下,动作脚本可以取代标准操作:

在面向对象编程中,可以创建一个类层次结构,其中一个类 继承另一个类的特性和属性,不需要在每个类中重复实现相同的功能。

Process builder中的项目Project利用代码可重用性和类似于继承的机制。Project的层次结构首先创建一个根项目,其中包含系统的所有可重用部分。其他项目继承根项目的特性。应用于根项目的更改会影响所有依赖的项目,而不需要分别在每个项目中重复相同的功能。继承的项目重用属性并支持它们的进一步定制。如下图

项目A是一个根项目,它包含整个项目中共享的所有实体,并充当一个框架中所有引用的项目。当项目B和项目C参考项目A时, 它们继承了项目A中创建的功能。意味着项目B和项目C可以不需要再次定义这些功能。您可以重用这些实体,当然也还可以自定义它们。类似的逻辑适用于项目D、项目E和项目F。

对项目A所做的更改会产生影响所有引用的项目。

上图还说明了正确的部署顺序,首先需要部署项目A,因为它被所有项目继承和引用。

4.PB 中的项目

Pb项目中的模块类型有:

1、模块类型

可以在项目中添加4种模块

  • PB module:可以添加Screen、View、Operation各种Process builder实体,包含所依赖的非Process builder实体,这些依赖项默认是灰色并且不可见的,只有选中“GPM Items”和“Dependencies”复选框后才能看见(用户需要具备Deployment Administrator or Global Process Management User权限)

可以通过修改\Program Files\Dassault Systemes\DELMIA Apriso 2023\WebSite\Downloads\PB2).目录下的FlexNetProcessBuilder.exe.config文件中的ShowGPMItems设置,默认勾选“GPM Items”

<FlexNet.DevelopmentStudio.Properties.Settings> </FlexNet.DevelopmentStudio.Properties.Settings>

<setting </settingname="ShowGPMItems" serializeAs="String">

True

  • GPM module:GPM模块用于项目中其他实体使用的公共和特定项(用于)分组,例如:“特性”、“系统参数”和“字典项”。需要在全局流程管理器管理GPM模块的内容,在Process Builder中, 只能将FlexParts添加到GPM模块中
  • Action Scripts module:一个项目只能包含一个动作脚本模块。它作为这个项目特定使用的动作脚本
  • Offline module:一个Project只能包含一个Offline Module(新建模块时需要勾选“Offline”复选框)。离线模块将工作在离线模式下的实体进行分组:屏幕、布局、视图的HTML类型、头部类型视图,以及离线屏幕类型的FlexParts。

离线模块在Process builder中不能进行“测试运行”,需要创建一个离线应用程序,并在移动设备或DELMIA Apriso Portal中进行测试

2、引用reference

  • 项目引用:一个项目可以被其他项目引用,被引用后则该项目的所有实体均被引用,在实体浏览器窗口中可以查看引用和被引用关系
  • 模块引用:一个模块可以被同一个项目内的其他模块引用,被引用后该模块下的所有实体均被引用,例如为了将非PB实体(位于GPM模块中)与PB实体(位于PB模块中)连接起来,需要在GPM模块中添加对PB模块的引用,注意模块之间不能存在循环依赖的引用

引用在发布或重新发布中的处理,在发布或重新发布期间,包中的项目定义将与目标服务器上相应的项目修订中的项目定义合并。如果服务器上的项目包含模块引用,但它们不再存在于包中,则在发布或发布部署包后,这些引用将从项目中删除。

有时可能会删除模块之间的引用,以避免在重新部署带有项目的包时创建循环。考虑下面的例子:

  • 在目标服务器上已经已经发布了模块A和模块B的包,并且模块A引用模块B
  • 需要发布的新包中现有的引用将被删除,并创建一个新的引用,其中模块B引用模块A
  • 包被重新部署到目标服务器上时,模块B到模块A的引用被删除,并且保持原始的引用关系

3、项目和实体版本

  • 多版本项目project时,运行期间,Apriso总是运行设置为“默认版本”的Project
  • 可以通过Desktop Client中“项目环境配置”Project Context Configuration配置,根据用户或者(二选以)工厂指定项目运行版本
  • 不同项目下同一个实体可以有不同的“默认版本”

Include in Package Definition/Exclude from Package Definition:

Default Revisio

4、嵌入式布局Layout

和Process Builder中的其他实体一样,Layouts也是受版本控制的(Apriso 2021以上版本)。多个屏幕可以使用相同的布局版本。修改这样的布局时,可以选择这些修改是否会影响特定的屏幕

  • 布局的嵌入版本
  • 链接到屏幕的修改布局

嵌入式的布局修订版本是链接到的屏幕布局的缓存定义。在以下场景下会使用到嵌入式布局:

  • 链接到布局的Screen状态转换成“Active”,即使布局被修改或删除,界面也会使用将被保留的引用
  • 开发人员自行决定是不是应用于引用该布局的界面Screen
  • 复制项目Porject时,可以选择使用嵌入式版本还是链接到默认布局版本(Apriso 2023后不能选择)
  • 复制一个状态为“Cancel”的界面时选择使用新实体或者新版本布局
  • 用户在部署期间修改目标服务器上已经使用的布局的现有版本或设置不同的默认版本,如果目标服务器已经有相同版本布局修订时,则使用该布局的屏幕将使用其旧版本,而不是最近部署的版本。否则链接到布局的屏幕将使用其嵌入版本

5、项目复制

  • 复制项目新版本:新项目中只是指向源项目实体,而不是这些实体的副本
    • 因为实体被两个不同版本的项目所引用,所以这种项目复制方式,项目所属的实体不再允许编辑。
    • 只有默认版本会被复制,如果复制状态为“Active”的实体,则实体状态修改为设计中“Design in Progress”
  • 复制新项目:只有设置为默认版本的实体会被复制成新的实体副本,状态为“Design in Progress”
  • 模块复制:不能复制模块或者在模块中创建模块,将一个项目复制到一个新的修订,其中的模块也被复制,或者添加引用reference,汇总通过移动Move一个模块到另外一个模块
  • 实体复制:在复制新版或者新实体情况下,都会创建一个副本,状态保持不变
  • 不同项目下共用的实体不能编辑,如果需要修改,则需要复制一个新版本或者新实体,或者复制一个新的项目

6、项目移动Move:可以移动非活动Active实体或者模块

  • 在同一项目的模块之间:实体连同它的所有版本一起被移动。如果某实体版本处于活动Active状态,则无法在同一项目中的模块之间移动。需要把实体复制到新实体,然后移动它。
  • 在不同项目的模块之间:只有所选的实体版本被移动,其他版本不会被移动,项目之间的移动,
    • 原始项目中的实体的“包含在程序包定义中” Include in Package Definition标记将不再被标记,除非它是默认修订
    • 在一个项目中,同一实体的所有版本必须在同一模块中。如果同一实体的剩余版本在另一个模块中,则不能将实体版本移动到另一个模块。
  • 从项目到实体管理器:移动时如果不选择目的项目时,将移出所在项目,只移动所选实体版本,其他版本不移动,链接到Flexpart的界面无法移动,需要先取消链接或者删除Flexpart后才能移动
  • 从实体管理器到项目修订:只移动所选版本的实体,其他版本不移动。所选的实体或多个实体一旦移动,将不再在实体管理器使用,任何依赖的该实体的实体都可能无法正常工作
  • 如果将模块移动到存在同名模块的项目中,则可以选择重命名要移动的模块,或将其与目标项目模块合并。合并之后,模块实体被移动到目标项目模块
  • 默认版本实体被移动后,它在目标位置保持默认版本。在源模块中将带有最近创建的修订版本的实体设置成为默认值
  • 如果将实体移动到目标位置,其中已经存在具有相同名称和修订版本的实体,则要移动的实体将更改其修订号。
  • 如果您移动一个非活动实体,而该实体正在被其他非活动实体使用,则所有实体的状态(不仅仅是被移动的实体)将更改为正在进行的设计。
  • 如果您移动具有依赖关系的实体(例如,具有链接布局的屏幕),请确保将所有链接实体也移动到新模块中(使用多重选择),或者向链接实体所在的模块添加引用。
  • 不能移动链接到位于相同项目修订之外的项的操作、流程或屏幕。需要手动删除引用。
  • 动作脚本Action Scripts不会随着使用它们的实体一起移动。您需要在移动实体后手动链接操作脚本。

通过修改Centralconfiguration文件中中RequireSignOffOnRelease, ShowNoteOnStatusChange或ShowNoteOnSave键值为True,可以打开实体属性历史标签:

7、项目删除

  • 在删除项目前,需要确认
  • 项目没有在选项卡中打开。
  • 如果存在其他修订,不要删除设置为默认版本的项目,需要先设置其他版本的项目为默认版本
  • 其他项目不引用要删除的项目,否则手动删除引用。
  • 项目引用没有高级判定,否则手动删除该引用。
  • 没有位于同一项目之外的操作、过程或屏幕引用项修订。如FlexParts、作业操作、判定或计数程序
  • 删除模块全确保没有被其他模块引用

5.GPM中的项目

在Process builder中创建项目的同时,也会同时创建GPM项目,其文件夹结构与添加PB Project的类别结构相对应。GPM中的项目Project将与PB项目的变化一起修改。

  • GPM项目将只包含“显式添加”到项目中的实体的默认版本,例如:操作A和操作B两个操作。操作A依赖于操作B。当操作B包含在GPM包中时,操作A的默认版本将只包含在GPM包中。
  • 在GPM中不能在PB类型的模块下添加实体,在PB中也不能在GPM类型的模块下添加实体(Flexpart除外)

由于GPM中的PB项目的结构是根据Process Builder中的操作自动维护的,因此在GPM中只能在有限的范围内进行编辑。从在GPM中:

  • 不能删除通过PB项目添加的实体。
  • 不能向基于PB项目创建的项目添加依赖项。
  • 不能从基于PB项目创建的项目中删除依赖项。
  • 不能添加Process Builder实体。
  • 不能复制或删除基于PB项目创建的项目。

因为GPM包默认情况下只包含Project实体的默认版本,如果需要为非默认的项目版本创建这样一个包。如果要在GPM包中包含非默认实体版本,在实体管理器右键菜单中使用“包含在程序包定义中”include in package Definition操作加入包中。

1、版本发布规则

在部署GPM包期间,GPM检查包内实体的代码(在操作的情况下)或名称(在过程、屏幕、视图、布局和FlexParts的情况下)和全局唯一密钥,以查看它们是否已经存在于特定项目或PB项目外部的数据库中。GPM比较包和目的地之间的GUK(Global Unique Keys)。如果GUK相同,则合并实体。否则,部署将导致错误消息。

  • 包中包含的实体被设置为默认版本,如果目标服务器上已经存在该版本实体,它们将覆盖目标服务器上的默认版本
  • 如果包中包含未设置为默认修订的实体,并且不存在于目标服务器,实体设置为默认值。
  • 如果一个包中包含一个以上的实体(没有设置为默认版本),并且目标服务器上不存在该实体的修订版本,修订版本最高的实体为设置为默认值。例如,在具有REV.001.001和 REV.001.002,系统默认部署第二个版本

2、生成和发布策略

在每次生成之前,系统会自动检查项目中的更改,验证的依赖关系。在生成向导中可以选择跳过依赖检测(特别是如果您刚刚使用“检测更改”Detect Change)、仅对修改和添加的实体、或所有实体执行检测。

可以选择不同的生成策略:

  • 完整项目
  • 根据模块Module
  • 根据项目版本Project revisions,项目有多个版本时使用,通常只包含差异项,所以包体较小,便于生成和发布

发布方式有:

  • 直接发布
  • 指定模块发布,在目标服务上至少部署过一次完整的项目包
  • 和依赖项一起发布

验证和查看包内容:

  • 项目层级查看:选中项目节点后,在已创建包“Generated Packages”标签野中双击需要查看的包体后,选模块标签页,此时显示项目下所有模块及实体的层级关系
  • 模块层级查看:选择模块节点,在已创建包“Generated Packages”标签野中双击需要查看的包体后,选“内容”标签页,查看该模块下的实体

3、刷新和同步

  • 刷新Refresh:刷新控制台树中项目的列表和结构工作区和项目视图窗格的内容。
  • 同步PB项目Synchronize PB Project:在刷新Refresh未能更新PB项目内容或者在和PB结构不匹配时使用,从数据库中读取PB项目的内容,并重新生成GPM中的结构,使用该执行后,项目的版本号加1
  • 发现更改Detect Changes:和刷新类似,但是可以检测跟多的变更(如状态变更、删除、增加、引用、项依赖)和缺失项,在生成包前,系统自动会进行“变更检测”

6.最佳实践

1、项目结构:项目的概念是开发迭代方法的完美解决方案。可以在每次迭代中将一个项目复制到一个新的版本。通常在新的迭代(和项目版本)开始时创建新版本项目或者新项目

2、项目和模块:分基于功能或者基于技术方式进行模块划分,如生产、质量划分,或者接口、主数据、MI等技术向的模块划分

3、项目版本:项目只有一个默认的版本活动项目,当达到某个里程碑点时,当需要分离开发并能够返回到以前的版本时,可以复制一个新的项目版本,

4、创建一个单独的项目或模块,用于保存可被引用和引用的公共实体被其他项目和模块重用

5、将PB项目保持在合理的大小范围内可以为您提供更大的灵活性并减少风险性能和部署问题

6、不要在一个模块中保留太多的实体,以避免移动模块、创建包和项管理时出现问题

7、拆分大项目的步骤:

  • 创建一个新项目A
  • 从大项目B中复制一个新项目C
  • 从C项目中选择需要迁移的项移动Move到新项目A

8、为只需要在新服务器上部署一次的所有项目创建一个或者多个单独的GPM项目,例如主数据,以避免可能的部署问题,GPM项目只包含GPM类型的module,GPM项目中通常包含

  • 系统参数System Parameters
  • 判定Determinations
  • 数据库对象:存储过程、函数、数据表结构、触发器、主外键、约束、索引
  • SQL脚本
  • 图片、JS脚本、样式
  • 业务组件、GAC

9、包生成性能:“生成最新变更”Latest Changes或“从来自修订生成”From Revision生成方法性能最好,在确定不要进行依赖项检测时使用“无”none或“仅修改” Modified only

10、移动实体和模块或删除项目等操作可能需要更多时间,从事有大量数据的PB项目。要避免超时问题,可以增加该值TcpNoSecurity绑定的以下参数

代码语言:javascript
复制
修改sendTimeout:WcfClientConfiguration.xml (Program Files\Dassault Systemes\DELMIA Apriso 2023\WebSite\CentralConfiguration):
<binding name="TcpNoSecurity"
closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00"
sendTimeout="00:10:00" maxBufferPoolSize="104857600" maxBufferSize="104857600"
maxReceivedMessageSize="104857600">
 <readerQuotas maxStringContentLength="104857600" maxArrayLength="104857600" />
 <security mode="None" />
</binding>

修改receiveTimeout:FlexNetProcessBuilderRemotingService.exe.config f(Program Files\Dassault Systemes\DELMIA Apriso 2023\Services\Process Builder Services)
<binding name="TcpNoSecurity"
closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00"
sendTimeout="00:05:00" maxBufferPoolSize="104857600" maxBufferSize="104857600"
maxReceivedMessageSize="104857600">
 <readerQuotas maxStringContentLength="104857600" maxArrayLength="104857600" />
 <security mode="None" />
</binding>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档