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中的项目概念。
在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种模块
可以通过修改\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
离线模块在Process builder中不能进行“测试运行”,需要创建一个离线应用程序,并在移动设备或DELMIA Apriso Portal中进行测试
2、引用reference
引用在发布或重新发布中的处理,在发布或重新发布期间,包中的项目定义将与目标服务器上相应的项目修订中的项目定义合并。如果服务器上的项目包含模块引用,但它们不再存在于包中,则在发布或发布部署包后,这些引用将从项目中删除。
有时可能会删除模块之间的引用,以避免在重新部署带有项目的包时创建循环。考虑下面的例子:
3、项目和实体版本
Include in Package Definition/Exclude from Package Definition:
Default Revisio
4、嵌入式布局Layout
和Process Builder中的其他实体一样,Layouts也是受版本控制的(Apriso 2021以上版本)。多个屏幕可以使用相同的布局版本。修改这样的布局时,可以选择这些修改是否会影响特定的屏幕
嵌入式的布局修订版本是链接到的屏幕布局的缓存定义。在以下场景下会使用到嵌入式布局:
5、项目复制
6、项目移动Move:可以移动非活动Active实体或者模块
通过修改Centralconfiguration文件中中RequireSignOffOnRelease, ShowNoteOnStatusChange或ShowNoteOnSave键值为True,可以打开实体属性历史标签:
7、项目删除
5.GPM中的项目
在Process builder中创建项目的同时,也会同时创建GPM项目,其文件夹结构与添加PB Project的类别结构相对应。GPM中的项目Project将与PB项目的变化一起修改。
由于GPM中的PB项目的结构是根据Process Builder中的操作自动维护的,因此在GPM中只能在有限的范围内进行编辑。从在GPM中:
因为GPM包默认情况下只包含Project实体的默认版本,如果需要为非默认的项目版本创建这样一个包。如果要在GPM包中包含非默认实体版本,在实体管理器右键菜单中使用“包含在程序包定义中”include in package Definition操作加入包中。
1、版本发布规则
在部署GPM包期间,GPM检查包内实体的代码(在操作的情况下)或名称(在过程、屏幕、视图、布局和FlexParts的情况下)和全局唯一密钥,以查看它们是否已经存在于特定项目或PB项目外部的数据库中。GPM比较包和目的地之间的GUK(Global Unique Keys)。如果GUK相同,则合并实体。否则,部署将导致错误消息。
2、生成和发布策略
在每次生成之前,系统会自动检查项目中的更改,验证的依赖关系。在生成向导中可以选择跳过依赖检测(特别是如果您刚刚使用“检测更改”Detect Change)、仅对修改和添加的实体、或所有实体执行检测。
可以选择不同的生成策略:
发布方式有:
验证和查看包内容:
3、刷新和同步
6.最佳实践
1、项目结构:项目的概念是开发迭代方法的完美解决方案。可以在每次迭代中将一个项目复制到一个新的版本。通常在新的迭代(和项目版本)开始时创建新版本项目或者新项目
2、项目和模块:分基于功能或者基于技术方式进行模块划分,如生产、质量划分,或者接口、主数据、MI等技术向的模块划分
3、项目版本:项目只有一个默认的版本活动项目,当达到某个里程碑点时,当需要分离开发并能够返回到以前的版本时,可以复制一个新的项目版本,
4、创建一个单独的项目或模块,用于保存可被引用和引用的公共实体被其他项目和模块重用
5、将PB项目保持在合理的大小范围内可以为您提供更大的灵活性并减少风险性能和部署问题
6、不要在一个模块中保留太多的实体,以避免移动模块、创建包和项管理时出现问题
7、拆分大项目的步骤:
8、为只需要在新服务器上部署一次的所有项目创建一个或者多个单独的GPM项目,例如主数据,以避免可能的部署问题,GPM项目只包含GPM类型的module,GPM项目中通常包含
9、包生成性能:“生成最新变更”Latest Changes或“从来自修订生成”From Revision生成方法性能最好,在确定不要进行依赖项检测时使用“无”none或“仅修改” Modified only
10、移动实体和模块或删除项目等操作可能需要更多时间,从事有大量数据的PB项目。要避免超时问题,可以增加该值TcpNoSecurity绑定的以下参数
修改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>