创建一个全局函数¶
intra-mart Accel Platform有一种将JavaScript中描述的用户定义函数注册为“全局函数 ”的方法。定义全局函数有两种方法:Procedure.define 函数和initializer-XXX.xml配置文件。
全局函数注册流程
在配置文件中注册全局函数¶
请按照以下步骤注册全局函数 。注意
注意不要覆盖函数名称。将函数定义为全局函数时,它可能会影响特定程序中何时存在具有相同名称的函数 。
步骤1:创建一个初始化器¶
创建src / main / conf / products / initializer / initializer- [项目名称] .xml。注解
initializer- [项目名称] .xml严格根据模块 ID而不是项目名称确定。除以模块ID “。”并结束它。例如,如果模块ID为“ org.example.foo”,则定义一个名称为“ initializer-foo.xml”的初始化程序。使用intra-mart e Builder for Accel Platform ,将其视为项目名称是没有问题的。注意
使用intra-mart e Builder for Accel Platform创建项目时,不能使用以“ im”开头的名称。将内容添加到文件。描述方法是js文件的<java-script-api> <global-function-script>路径,该文件定义了全局函数 #执行函数 </ global-function-script> </ java-script-api>。<?xml版本=“ 1.0”编码=“ UTF-8”?> <initializer-config xmlns = “ http:// intra-mart .co.jp / system / secure / product / initializer / config / initializer-config” xmlns:xsi = “ http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation = “ http:// // intra-mart .co.jp / system / secure / product / initializer / config / initializer- config ../../../ schema/initializer - config.xsd“ > <java-script-api> <global-function-script>样本/ prog_guide / common_libs / global_fnction#global_fnction1 </ global-function-script> </ java-script-api> </ initializer-config>注意
如果要注册扩展API,请在<api-script>标记之前描述<global-function-script>标记。
步骤3:部署模块¶
创建一个包含导出的用户模块的war文件。部署该war文件并重新启动intra-mart Accel Platform 。注意
初始化文件是根据war文件中包含的模块配置读取的,因此除非它是用户模块并嵌入war文件中,否则它将无法运行。用户模块 ,请参阅“ 导出intra-mart e Builder for Accel Platform应用程序开发指南/ imm文件 ”。
步骤4:调用已注册的全局函数¶
可以从任何js文件中调用已注册的全局函数 。机能 初始化(要求){ 除错。控制台(global_fnction1(5,三)); }
Procedure.define 函数全局函数注册¶
请按照以下步骤注册全局函数 。注意
注意不要覆盖函数名称。将函数定义为全局函数时,它可能会影响特定程序中何时存在具有相同名称的函数 。
步骤2:在启动时配置存储在内存中的设置¶
对于存储用户定义函数的js文件,描述在intra-mart启动后将js文件存储在内存中。启动intra-mart时读取intra-mart js文件是src / init.js,但是可以通过将所有设置写入initializer-XXX.xml配置文件中来读取任何js文件。
如果在src / init.js中进行了描述,它将如下所示。
//导入通用函数存储文件 包括(“样本/ prog_guide / common_libs / global_fnction”); / ** *初始化用户应用程序的功能。 * @参数没有 * @返回无效 * / 机能 初始化(){ 归还; } / *文件结尾* /使用initializer-XXX.xml配置文件时,如下所示。
- 在初始化程序中编辑启动时调用的文件
描述方法是<initializer> <script-name>启动时加载的js文件的路径</ script-name> </ initializer>。<?xml版本=“ 1.0”编码=“ UTF-8”?> <initializer-config xmlns = “ http:// intra-mart .co.jp / system / secure / product / initializer / config / initializer-config” xmlns:xsi = “ http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation = “ http:// // intra-mart .co.jp / system / secure / product / initializer / config / initializer- config ../../../ schema/initializer - config.xsd“ > <initializer> <脚本名称> sample / prog_guide / common_libs / init </脚本名称> </ initializer> </ initializer-config>
- 将文件读取过程添加到上面设置的文件中
include 函数在第一个参数指定的js文件中执行init() 函数 ,并返回结果。第一个参数指定不带扩展名的执行目标js文件路径。//导入通用函数存储文件 包括(“样本/ prog_guide / common_libs / global_fnction”); 机能 初始化(){ }注意
并非所有API都可以使用,因为初始化程序在启动期间运行。示例)连接到数据库在启动时定义必要的处理,例如Procedure#define。
步骤3:部署模块¶
创建一个包含导出的用户模块的war文件。部署该war文件并重新启动intra-mart Accel Platform 。如果您已在第2步中描述了要在init.js中接收文件,则仅重新启动intra-mart Accel Platform就没有问题。注意
初始化文件是根据war文件中包含的模块配置读取的,因此除非它是用户模块并嵌入war文件中,否则它将无法运行。用户模块 ,请参阅“ 导出intra-mart e Builder for Accel Platform应用程序开发指南/ imm文件 ”。
步骤4:调用已注册的全局函数¶
Procedure.define(“ 函数名”功能)的登记函数是过程, 函数可以通过名字叫做()。机能 初始化(要求){ 除错。浏览(程序。global_fnction2(5,三)); }