您的位置:首页 > 其它

如何创建XS Job来完成定时任务

2015-10-27 14:28 555 查看
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一切正常。









1.3 HANA上的必要配置

你可以把下面这些和XSengine相关的角色赋给用户(这里我们使用的用户是"DEMO_USER")。





该用户的Schema权限也要赋给用户_SYS_REPO。





在xsengine.ini里添加section "schedule"和参数"enabled"如下。





如果需要向表里写数据,你必须把"sqlscript mode"改成"UNSECURE"(如下图),否则你只能在procedure里使用select语句。





2. Procedure

2.1 新建XS project。











当要给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();

}





然后新建一个XS Job。











.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 JavaScript。







.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就开始执行了。

你也可以在此监控任务。









从下图可见JavaScript的任务每5秒执行一次,HANA Procedure的任务每10秒执行一次。





86 浏览次数Products: sap_hana Topics: database Tags: hana, saphana, abap_hana, hana_develop_cn, hana_intro_cn,hana_xs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: