第五十一章 开发Productions - ObjectScript Productions - 不常见的任务
定义自定义实用函数
IRIS提供了一组可以从业务规则和DTL中调用的实用函数;这些在开发业务规则的Productions中使用的效用函数中有所描述。可以添加自己的功能,业务规则引擎和业务规则编辑器会自动适应您的扩展。
要添加新的效用函数:
- 创建一个新类,它是
Ens.Rule.FunctionSet的子类。此类不得扩展任何其他超类,只能扩展Ens.Rule.FunctionSet。 - 对于希望定义的每个函数,将一个类方法添加到新函数集类中。不支持多态性,所以准确的说,你必须把这些类方法标记为。可以在现有的 方法中查看这个(是 的超类)。
- 编译新类。新函数现在可用于规则表达式。要调用这些函数,请使用子类中的 名称。与 中定义的函数不同,用户定义的方法名称必须使用它们所属的类进行完全限定。如果通过从管理门户中的向导中选择名称来添加它们,则会自动发生这种情况。
例如,以下函数集类提供了用于业务规则的日期和时间函数。它的类方法 和 调用 ObjectScript 函数 和 以从 特殊变量 中提取所需的日期和时间值:
/// Time functions to use in rule definitions.
Class Demo.MsgRouter.Functions Extends Ens.Rule.FunctionSet
{
/// Returns the ordinal position of the day in the week,
/// where 0 is Sunday, 1 is Monday, and so on.
ClassMethod DayOfWeek() As %Integer [ CodeMode = expression, Final ]
{
$zd($H,10)
}
/// Returns the time as a number of seconds since midnight.
ClassMethod TimeInSeconds() As %Integer [ CodeMode = expression, Final ]
{
$p($H,",",2)
}
}
(1).jpg)


.png)


.png)

