概述
Process builder 是 Delmia Apriso 中主要的业务流程管理工具,也是DELMIA 更广泛的 Apriso 制造运营管理解决方案的核心应用程序, Process Builder 允许使用屏幕流管理设计方法和实体(如项目、屏幕、布局、视图和操作(函数))创作用户界面和业务逻辑。该应用程序能够快速方便地管理和修改开发的设计,使您能够根据需要随时更改业务流程。由于增强了对可重用性的支持,以前开发的逻辑可以在新的设计中快速重用。
本文介 Process builder 中 Action Scripts 概念及相关应用。
什么是Action Scripts
根据从各种 DELMIA Apriso 项目收集的数据,大多数包含业务逻辑的标准操作使用以下两个函数之一:用户公式或 SQL 查询。动作脚本可以用作这些类型的标准操作的替代品,因为它们可以在执行期间摆脱设计和运行时开销。
动作脚本是简单的代码片段,可以在某些情况下取代标准操作。动作脚本使用的语言是 TypeScript 。这是一种 Microsoft 编程语言,是 JavaScript 的严格超集,具有可选的静态类型和基于类的面向对象编程。
动作脚本仅在屏幕和视图级别可用,但它们不支持显示输出。它们可用于验证表单、解析或其他严格意义上的后端操作中的数据。即使有一个用户界面显示在一个动作脚本,它将不被支持。每个 Action Script “文件”都保存在 DELMIA Apriso 数据库中,因此它不是一个物理文件。
Action Scripts应用和执行场景
在某些情况下,动作脚本可以取代标准操作:
无论何时使用动作脚本,它都会成为标准操作的一部分,并包含在事务堆栈中。动作脚本不会随着使用它们的实体一起移动。您需要在移动实体后手动链接动作脚本。
Action Scripts可以运行在客户端(无需调用服务器)或服务器端(每次Action Script执行都会到达服务器以获取额外数据)两种模式,仅在Web浏览器中执行的动作脚本通常是对显示的Web页面上的数据进行简单的验证脚本,或者是数据修改或转换。
无法人为手动指定Action Script是客户端还是服务器端,系统自己决定在编译Action Script期间要做什么。
要确保Action Script是客户端,只能使用执行以下操作的类:
一般客户端执行页面校验和简单解析,服务器端执行从数据库中查询数据,但是在服务器端模式下执行一个脚本后,随后的所有脚本也将在服务器端执行。
已知的限制
Action Script创建
1、动作脚本管理器Action Script Manager
注意:输入和输出参数名称应和页面视图中的命名一致。
通过属性视图“生成测试代码” 按钮和工具条“测试运行” 按钮可以生成和测试运行Action Scripts代码
2、项目中创建Action Script
离线模式下应用
在离线模式下使用的类(由属于离线模块的实体使用)必须扩展OfflineScript类,而不是ActionScript类:
如果脚本是脱机脚本,则无法测试代码。
Action Scripts API
在动作脚本实体资源管理器Action Scripts Manager工具窗格中的找到示例动作脚本,Apriso也提供了详细的API说明文档,详见:http://[ServerName]/Apriso/Portal/Documentation/ApiDocs/index.htm。
1、数据库Database API
var result = Database.RunQuery('SELECT ID, LoginName as "LoginName" FROM EMPLOYEE WHERE LoginName = @LoginName', { LoginName : loginName });
var query = Database.Query.Create("SELECT ID FROM OPERATION WHERE OperationCode = @OperationCode AND CreatedOn >= @CreatedOn",
{
OperationCode : operationCode,
CreatedOn: createdOn
});
//定义参数类型
query.DefineParameter("CreatedOn", Database.ParameterType.DateTime);
var result = query.Run();
//Registering a query in the repository (queries for SQL and Oracle database can be different):
Database.QueryRepository.RegisterQuery("MyQuery",
"SELECT OperationCode, OperationRevision FROM OPERATION WHERE DefaultOperationRevision = @DefaultRevision AND OperationCode = @Code",
'SELECT OperationCode AS "OperationCode", OperationRevision as "OperationRevision" FROM OPERATION WHERE DefaultOperationRevision = @DefaultRevision AND OperationCode = @Code',
[
{Name : "DefaultRevision", DataType : Database.ParameterType.Boolean},
{Name : "Code", DataType : Database.ParameterType.String}
]);
//Using a query from the repository by providing its name:
var query = Database.Query.CreateByName("MyQuery", {
DefaultRevision : true,
Code : "PortalExecute"
});
var result = query.Run();
var result = Database.RunQuery('SELECT LoginName as “LoginName“ FROM EMPLOYEE WHERE LoginName = @LoginName', { LoginName : loginName });
var ln = result.Rows[0].LoginName;
2、调试日志DebugConsole API
3、 系统参数:支持静态类型Static Type的系统参数读取,如
var priorityValue = SystemParameters.Priority()
总结
1、 Action Script主要应用于校验、简单解析处理等场景,个人认为应用场景不多,并且反而增加了系统实现和管理的复杂度。
2、 因为没有服务器请求和响应,Action Scripts性能更快
3、 因为它不使用函数解释器引擎FI,当与涉及迭代或嵌套子操作的标准操作相比,Action Scripts更快
4、 常规和默认开发方式下,Action Scripts和Action Operation都会刷新界面