intra-mart Accel Platform 脚本开发模式编程指南 第16版2020-04-01

创建一个全局函数

intra-mart Accel Platform有一种将JavaScript中描述的用户定义函数注册为“全局函数 ”的方法。
定义全局函数有两种方法:Procedure.define 函数和initializer-XXX.xml配置文件。

前提条件

  • 已安装intra-mart e Builder for Accel Platform 。
  • 模块项目的创建已完成。

在配置文件中注册全局函数

请按照以下步骤注册全局函数 。

注意

注意不要覆盖函数名称。
将函数定义为全局函数时,它可能会影响特定程序中何时存在具有相同名称的函数 。

步骤1:创建一个初始化器

创建src / main / conf / products / initializer / initializer- [项目名称] .xml。
initializer-sample.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>标记。

步骤2:在初始化程序中创建js文件集

创建上述xml中设置的js文件。
在此示例中,在项目的src / main / jssp / src / sample / prog_guide / common_libs层次结构中创建一个文件夹,在创建的文件夹下创建一个“ global_fnction.js”文件,并实现如下。
样本\ prog_guide \ common_libs \ api.js
/ **
*创建通用函数
* / 
机能 global_fnction1值A 值B){
	//在这里写处理
	归还 值A -- 值B;
}

步骤3:部署模块

创建一个包含导出的用户模块的war文件。
部署该war文件并重新启动intra-mart Accel Platform 。

注意

初始化文件是根据war文件中包含的模块配置读取的,因此除非它是用户模块并嵌入war文件中,否则它将无法运行。

步骤4:调用已注册的全局函数

可以从任何js文件中调用已注册的全局函数 。
机能 初始化要求){
	除错控制台global_fnction15));
}

Procedure.define 函数全局函数注册

请按照以下步骤注册全局函数 。

注意

注意不要覆盖函数名称。
将函数定义为全局函数时,它可能会影响特定程序中何时存在具有相同名称的函数 。

步骤1:将用户定义的函数存储在任何js文件中

在此示例中,在项目的src / main / jssp / src / sample / prog_guide / common_libs层次结构中创建一个文件夹,在创建的文件夹下创建一个“ global_fnction.js”文件,并实现如下。
样本\ prog_guide \ common_libs \ global_function.js
//将通用函数注册为global_fnction2
程序定义“ global_fnction2” global_fnction2); 
 
/ **
*创建通用函数
* / 
机能 global_fnction2 值A 值B  {
    //在这里写处理
    归还 值A + 值B; 
}

步骤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配置文件时,如下所示。

    • 创建初始化程序和js文件
      创建initializer-sample.xml和init.js。
      在此示例中,在项目层次结构中的src / main / jssp / src / sample / prog_guide / common_libs中创建一个文件夹,并在创建的文件夹下创建一个“ init.js”文件。
      样本\ prog_guide \ common_libs \ global_function.js
    • 在初始化程序中编辑启动时调用的文件
      描述方法是<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文件中,否则它将无法运行。

步骤4:调用已注册的全局函数

Procedure.define(“ 函数名”功能)的登记函数是过程, 函数可以通过名字叫做()。
机能 初始化要求){
	除错浏览程序global_fnction25));
}