传统触发器在其自己的流程中执行。例如,Perl 触发器启动 Perl 解释器后,Perl 解释器会运行脚本,随后解释器终止。与此相反,流程内触发器是在 Web 服务器流程内部运行,由于流程内触发器使用的是 Bean 脚本框架,因此也称为 BSF 触发器。 此触发器的优点是可降低开销,并潜在提高性能。 此外,BSF 触发器还有权访问触发器 API,但不能访问 Perl API。
传统触发器通过调用运行脚本文件的可执行文件来启动。
例如:
perl my_trigger.js arg1 arg2
运行脚本所需的可执行文件必须可用。缺省情况下 Perl 可用,但其他命令必须位于路径中,或安装在触发器目录中。成功的命令必须返回“0”(零)。
大多数触发器会访问 Perl API。请参阅 Perl API 帮助以了解详细信息。
流程内触发器使用 bsf 而不是可执行文件名进行声明。
例如:
bsf my_trigger.js arg1 arg2
BSF 脚本的文件扩展名(对于 JavaScript 为 .js,对于 Python 为 .py)决定了使用哪种脚本语言来执行脚本。
脚本可以通过调用 bsf.lookupBean (object name) 从 bsf 全局对象中获取对象。语法根据精确的脚本语言而变化。
对象 | 描述 |
---|---|
Event | 包含有关要触发的特定触发器事件的详细信息。尤其是会包含当前用户和管理员用户的标记。此标记可用于与 API 以及要修改的 CR 或任务标识进行交互。存在用于所有触发器的共享属性时,大多数触发器类型都有自己的事件对象,并且每个对象上至少有一些唯一属性。要了解更多详细信息,请参阅触发器 API 文档。 |
args | 一系列传递到脚本的参数,例如在生命周期中定义的参数。然而,某些脚本语言有其自己的获取命令行参数的方法,但触发器不应使用。 |
log | 将消息写入 event.log 文件的方法。 要了解更多详细信息,请参阅触发器 API 文档。 |
api | 与 Rational® Change 进行交互的触发器的 API。例如,查找 CR 属性或创建关联任务。要了解更多详细信息,请参阅触发器 API 文档。 |
调用 event.stopTransition(msg),如果转换正在进行中,那么此调用将阻止转换进行,并向用户显示给定消息(如果适用)。
event.fail(errorMsg),向用户显示错误消息(如果可能),或在 event.log 中显示错误消息(例如,在异步触发器执行期间)。在转换前期间调用时,fail 会隐藏转换链接或阻止转换进行,这类似于调用 event.stopTransition。