HANA 如何创建XS Job来完成定时任务
HANA系统的XS引擎提供了定时执行你的任务的功能。你可以让HANA定期地完成一些你指定的操作。
你将在本文中看到如何编写一个简单的XS应用并调度一个XS Job来执行它。这个应用会向特定的表里插入一条记录。
1. 前提条件
1.1 这个功能从HANA SPS07开始有效,所以请确保你的HANA是Revision 70之后的版本。
1.2 确保XSEngine正常运行。
在你的Web Browser里输入http://<Web_Server_Host>:80<HANA_instance>/sap/hana/xs/admin/,如果能看到下面的界面就说明XSEngine一切正常。
(如果是项目内basis创建的 就登入自己对应的ip+端口号即可)
1.3 HANA上的必要配置
你可以把下面这些和XSengine相关的角色赋给用户(这里我们使用的用户是”DEMO_USER”)。
该用户的Schema权限也要赋给用户_SYS_REPO。
此处大家也可以点开
这样就如下面那些图片一样了
在xsengine.ini里添加section “schedule”和参数”enabled”如下。
如果需要向表里写数据,你必须把”sqlscript mode”改成”UNSECURE”(如下图),否则你只能在procedure里使用select语句。
2. Procedure
当要给project指定一个workspace时,你可以新建一个workspace或者使用缺省的workspace。
这里我们使用缺省的workspace。
你可以在Project Explorer里看到新建的project。
同时你也可以在Web Browser里看到它。
2.2 新建数据库object。
这里我们新建个表来做测试。
2.3 新建XS JavaScript和XS Job。
按下面的步骤新建XS JavaScript。
.xsjs文件生成之后,如下新建一个JavaScript function。
我们向表DEMO_TABLE里插入一条包含时间戳的记录。
function my_js() {
var sql = “INSERT INTO DEMO_USER.DEMO_TABLE VALUES (‘inserted by javascript job’, NOW())”;
var conn = $.db.getConnection();
var pstmt = conn.prepareStatement(sql);
pstmt.execute();
conn.commit();
conn.close();
}
.xsjob文件生成之后,可以在XS Job文件里定义任务了。
在”action”里指定刚才新建的XS JavaScript文件里的function。
在”schedules”中指定调度时间,其中的”xscron”同Linux环境的”crontab”的语法类似,这里我们指定每5秒钟执行一次。
{
“description”: “my first JS job”,
“action”: “XS_JOB_DEMO:my_js.xsjs::my_js”,
“schedules”: [
{
“description”: “run every 5 seconds”,
“xscron”: “* * * * * * 0:59/5”
}
]
}
2.4 新建HANA Procedure和XS job。
按下面的步骤新建XS Procedure。
.hdbprocedure文件生成之后,如下新建一个HANA Procedure。
我们也向表DEMO_TABLE里插入一条包含时间戳的记录。
PROCEDURE “DEMO_USER”.”XS_JOB_DEMO::my_procedure” ( )
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
DEFAULT SCHEMA DEMO_USER
AS
BEGIN
/*****************************
Write your procedure logic
*****************************/
INSERT INTO DEMO_TABLE VALUES(‘inserted by procedure job’, NOW());
END;
然后同样新建一个XS Job来执行这个Procedure。
请注意“action”的语法,和刚才的XS JavaScript是不同的。
这里我们指定每10秒钟执行一次。
{
“description”: “my first Procedure job”,
“action”: “XS_JOB_DEMO::my_procedure”,
“schedules”: [
{
“description”: “run every 10 seconds”,
“xscron”: “* * * * * * 0:59/10”
}
]
}
2.5 在Web Browser里启动任务。
你可以在HANA XS Administration Tool里看到刚才新建的两个XS Job。
输入”User”和”Locale”,勾选”Active”,然后 按下”Save”之后XS Job就开始执行了。
你也可以在此监控任务。
在basis搭建中启动任务(相似)
从下图可见JavaScript的任务每5秒执行一次,HANA Procedure的任务每10秒执行一次。
本文转载地址:https://blogs.sap.com/2015/10/26/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BAxs-job%E6%9D%A5%E5%AE%8C%E6%88%90%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/