模块是定义变量及其初始值的声明序列,是为消息流节点定义特定行为的子例程(函数和过程)的声明序列。
模块必须以 CREATE node_type MODULE 语句开始,并以 END MODULE 语句结束。node_type 必须是 COMPUTE、DATABASE 或 FILTER。ESQL 代码的入口点是 MAIN 函数,该函数具有 MODULE 作用域。
每个模块由一个跟在 CREATE node_type MODULE 后面的名称构成。该名称创建时具有缺省值,您可以修改该名称,也可以自己创建它。用不区分大小写的方式处理名称(即,使用与声明匹配的大写和小写字母的任意组合名称)。这与您用于声明模式、常量、变量和标签的名称相反,这些名称要区别大小写并且需要在声明时得到明确指定。
您必须在后缀为 .esql 的 ESQL 文件中为模块创建代码。必须在与该文件所引用节点相同的代理模式内创建该文件。对于每个相应节点必须有一个类型正确的模块,它特定到那个节点,并且无法由任何其他节点无法使用。
当您创建 ESQL 文件(或者完成创建该文件的任务)时,指示与文件相关联的消息流项目和代理模式,并指定文件名。
在 ESQL 文件内,每个模块的名称取决于消息流节点相应属性的值。例如,Compute 节点的属性 ESQL Module 指定了 ESQL 文件中节点模块的名称。该属性的缺省值是该节点的名称。您可以指定一个不同的名称,但必须确保属性值与提供所需函数的模块名相同。
模块必须包含函数 MAIN,它是该模块的入口点。如果为您创建模块,这将自动包括在内。在 MAIN 中,您可以编码 ESQL 以配置节点的行为。如果您在声明变量、常量、函数和过程的模块中包含 ESQL,这只是本地作用域并在单个模块内使用。
如果您想要再次使用 ESQL 常量、函数或过程,必须在代理模式级别声明它们。然后,在那个代理模式中,从相同或不同的项目中的任何资源中可以引用这些常量、函数或过程。如果您想要使用该技巧,请完全地限定该过程,或者包含一个设置限定符的 PATH 语句。必须在相同的 ESQL 文件中中对 PATH 语句进行编码,但不在任何 MODULE 中。