本文作者陈捌华,感谢捌老师倾情奉献。
概述
Process builder是Delmia Apriso中主要的业务流程管理工具,也是DELMIA更广泛的Apriso制造运营管理解决方案的核心应用程序,Process Builder允许使用屏幕流管理设计方法和实体(如项目、屏幕、布局、视图和操作(函数))创作用户界面和业务逻辑。该应用程序能够快速方便地管理和修改开发的设计,使您能够根据需要随时更改业务流程。由于增强了对可重用性的支持,以前开发的逻辑可以在新的设计中快速重用。
本文介Process builder中Client mode概念及相关应用。
什么是Client Mode
客户机模式是Apriso中Screen Flow提供的一种新引擎。它是用JavaScript编写的,并在客户端即浏览器上执行。它支持Screen Flow的所有功能。
客户端模式SFM使用称为单页应用程序的技术。它可以提高解决方案的性能,但需要更仔细的脚本编写(主要是分离全局事件处理程序)。对产品中可用的标准组件进行测试,以确保它们不会导致内存泄漏。
客户端模式提供了更好的性能,增强了用户体验,并防止网络问题,因为它能够在浏览器中使用JavaScript呈现内容。与客户端模式相反,服务器模式导致整个页面重新加载,并且由于在屏幕上执行的每个操作都要发送多个服务器请求,从而导致整体页面呈现缓慢。在客户端模式下,Apriso屏幕可以轻松运行,而无需在初始页面加载后进行太多刷新,因为每个屏幕操作只会在屏幕中更新已更改的数据,而不是重新加载整个页面。
两种模式优缺点比对:
在项目开发时,客户端模式框架应该是默认选择。当将解决方案迁移到客户端模式时,大多数有问题的部分是糟糕的第三方JS库和为克服服务器模式的限制而开发的自定义代码而造成的。
两种模式对比
客户端模式其他差异点说明:
客户端模式启用
发布Flexpart时选择Client mode即可启用。
测试运行时可以也可以选择client mode方式进行测试,客户端模式下提供了不同的调试树:
Screen Flows引擎在使用以下角色运行客户端模式FlexParts时发送额外的调试数据:流程功能作者、流程技术作者、流程测试人员和流程用户界面作者。这可能会增加DELMIA Apriso服务器上的资源使用。
同时在Client Mode运行时,调试信息Debug info视图也不再显示和使用:
开发过程中的差异点
1、Process builder中的变化
2、Javascript的变化
<script>
$(function () {
//A Screen is not loaded here.页面未加载
});
$View.onLoaded(function () {
//A View is loaded here.页面加载完成
});
</script>
<script>
$View.onViewsUnloading(function () {
//A View is unloaded here.
});
</script>
var intervalId = setInterval(myCallback, 2000);
$View.onUnloading(function() {
clearInterval(intervalId);
});
3、常见问题
客户端模式API
提供Apr和SF Javascript API,详见:http://[ServerName]/Apriso/Portal/Documentation/ApiDocs/index.htm
服务器模式向客户端模式转换
从服务端模式向客户端模式转换的一般步骤有:
▶第一步:检查控件Business control支持性
客户端模式只支持Grid 1.0, Tree 1.0, Visualization, Quality Defects Visualization (vQDT), and Work Instructions 业务控件
▶第二步:转换到HTML layout Editor
▶第三步:重写User Inputs
应该使用data- flex -bind标记重写用户输入为屏幕接口输出Screen Interface Outputs:
<input type = "text" data-flx-bind = "Output1" />
▶第四步:重写User Outputs
用户输出User Outputs重写为HTML Layout Editor布局编辑器中的屏幕界面输入Screen Interface Intputs。
▶第五步:检查Javascript
1、检查“Document Ready”事件,这个事件不再保证页面已经加载完成,加载完成事件需要使用“$View.onLoaded”事件
2、检查JavaScript变量在页面加载完成是否还需要使用,如果不再使用,需要在“$View.onViewsUnloading”事件中进行清除
3、如果使用setTimeout或setInterval函数,需要在视图卸载时“$View.onViewsUnloading”停止它们的执行。
▶第六步:检查Refresh
当Go to Screen导航操作没有Screen链接时,该操作不会刷新Screen(但在服务器模式下,执行refresh操作)。所以在客户端模式下,如果必须执行刷新操作,则必须将Portal操作类型从转到屏幕更改为刷新。
同样如果submit提交视图没有从任何视图返回任何操作时,不会刷新屏幕(在服务器模式下,执行refresh操作)。
例如
一个带有视图链接的屏幕,用户提交视图。这是一个例子:
如果必须执行Refresh操作,则必须使用action 的外部输出External Output返回Refresh类型的操作名称。
▶第七步:检查Go To Screen
在服务器模式下,Change View和Go to Screen功能性能之间的差异并不显著。然而,在客户端模式下,最好使用Change Views(如果适用)而不是Go to Screen。
例如:
服务器和客户端模式下的配置示例:
服务器模式行为:可以使用Change View功能将View2更改为View3,也可以使用Go to Screen功能导航到显示View2和View3的屏幕。在这两种情况下,屏幕都被重新加载。
而在客户端模式下,更改视图Change View只会更改所选视图,而不会更改其他视图,因此可以实现快速的应用程序性能。但Go to Screen功能将重新加载所有视图。
文件上传处理
在Screen Flows客户端模式中使用File Picker,在HTML布局编辑器或HTML编辑器(HTML视图)中添加一个<input type=" File "/>元素。客户端模式下上传文件是异步的。
1、配置文件大小 限制
要配置文件大小限制,请在IIS管理器中更改以下IIS设置:
2、上传事件应用:
当添加File Picker控件时,可以使用当文件上传成功或失败时触发的事件,例如:
document.addEventListener("apr-file-uploaded", function(event) {your code})
document.addEventListener("apr-upload-failed", function(event) {your code})
文件默认上传到以下位置:<drive>\Program files \Dassault Systemes\DELMIA Apriso 2023\WebSite\Portal\Uploads。为了接收URL而不是路径,View Operation需要配置如下:
▶第一步:添加一个文件选择器控件
添加一个文件选择器控件,并将其与HTMLLayout Editor布局编辑器中的其他控件绑定,例如:
▶第二步:新建User Formula函数并连接Screen Interface输出:
在User Formula Editor中进行替换:
为了查看所有最后上传文件的路径,您需要在HTML布局编辑器中使用iterate属性,如
总结
1、 默认使用客户端client mode进行开发
2、 在一个步骤step中输出所有外部输出External Outputs
3、 使用change view
4、 Operation中的UI步骤step必须使用Html Layout Editor
6、 必须要进行刷新时,指定portal action为Refresh