[置顶] HANA 如何创建XS Job来完成定时任务
2017-07-13 11:57
225 查看
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+端口号即可)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_2_1_816264.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_2_2_816301.png)
1.3 HANA上的必要配置
你可以把下面这些和XSengine相关的角色赋给用户(这里我们使用的用户是”DEMO_USER”)。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_1_816300.png)
该用户的Schema权限也要赋给用户_SYS_REPO。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_2_816305.png)
此处大家也可以点开
![](https://img-blog.csdn.net/20170713131210754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxleGJlYXJz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这样就如下面那些图片一样了
![](https://img-blog.csdn.net/20170713131405147?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxleGJlYXJz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在xsengine.ini里添加section “schedule”和参数”enabled”如下。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_3_816306.png)
如果需要向表里写数据,你必须把”sqlscript mode”改成”UNSECURE”(如下图),否则你只能在procedure里使用select语句。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_4_816307.png)
2. Procedure
2.1 新建XS project。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_1_816309.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_2_816310.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_3_816320.png)
当要给project指定一个workspace时,你可以新建一个workspace或者使用缺省的workspace。
这里我们使用缺省的workspace。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_4_816250.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_5_816326.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_6_816327.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_7_816328.png)
你可以在Project Explorer里看到新建的project。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_8_816329.png)
同时你也可以在Web Browser里看到它。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_9_816330.png)
2.2 新建数据库object。
这里我们新建个表来做测试。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_2_816338.png)
2.3 新建XS JavaScript和XS Job。
按下面的步骤新建XS JavaScript。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_1_816331.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_2_816339.png)
.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();
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_3_816340.png)
然后新建一个XS Job。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_4_816343.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_5_816347.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_6_816348.png)
.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”
}
]
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_7_816349.png)
2.4 新建HANA Procedure和XS job。
按下面的步骤新建XS Procedure。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_1_816371.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_2_816372.png)
.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;
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_3_816373.png)
然后同样新建一个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”
}
]
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_4_816377.png)
2.5 在Web Browser里启动任务。
你可以在HANA XS Administration Tool里看到刚才新建的两个XS Job。
输入”User”和”Locale”,勾选”Active”,然后 按下”Save”之后XS Job就开始执行了。
你也可以在此监控任务。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_1_816378.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_2_816379.png)
在basis搭建中启动任务(相似)
![](https://img-blog.csdn.net/20170713132008631?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxleGJlYXJz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
从下图可见JavaScript的任务每5秒执行一次,HANA Procedure的任务每10秒执行一次。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_3_816386.png)
本文转载地址: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/
你将在本文中看到如何编写一个简单的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+端口号即可)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_2_1_816264.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_2_2_816301.png)
1.3 HANA上的必要配置
你可以把下面这些和XSengine相关的角色赋给用户(这里我们使用的用户是”DEMO_USER”)。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_1_816300.png)
该用户的Schema权限也要赋给用户_SYS_REPO。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_2_816305.png)
此处大家也可以点开
这样就如下面那些图片一样了
在xsengine.ini里添加section “schedule”和参数”enabled”如下。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_3_816306.png)
如果需要向表里写数据,你必须把”sqlscript mode”改成”UNSECURE”(如下图),否则你只能在procedure里使用select语句。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image1_3_4_816307.png)
2. Procedure
2.1 新建XS project。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_1_816309.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_2_816310.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_3_816320.png)
当要给project指定一个workspace时,你可以新建一个workspace或者使用缺省的workspace。
这里我们使用缺省的workspace。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_4_816250.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_5_816326.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_6_816327.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_7_816328.png)
你可以在Project Explorer里看到新建的project。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_8_816329.png)
同时你也可以在Web Browser里看到它。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_1_9_816330.png)
2.2 新建数据库object。
这里我们新建个表来做测试。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_2_816338.png)
2.3 新建XS JavaScript和XS Job。
按下面的步骤新建XS JavaScript。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_1_816331.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_2_816339.png)
.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();
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_3_816340.png)
然后新建一个XS Job。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_4_816343.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_5_816347.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_6_816348.png)
.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”
}
]
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_3_7_816349.png)
2.4 新建HANA Procedure和XS job。
按下面的步骤新建XS Procedure。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_1_816371.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_2_816372.png)
.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;
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_3_816373.png)
然后同样新建一个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”
}
]
}
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_4_4_816377.png)
2.5 在Web Browser里启动任务。
你可以在HANA XS Administration Tool里看到刚才新建的两个XS Job。
输入”User”和”Locale”,勾选”Active”,然后 按下”Save”之后XS Job就开始执行了。
你也可以在此监控任务。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_1_816378.png)
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_2_816379.png)
在basis搭建中启动任务(相似)
从下图可见JavaScript的任务每5秒执行一次,HANA Procedure的任务每10秒执行一次。
![](https://blogs.sap.com/wp-content/uploads/2015/10/image2_5_3_816386.png)
本文转载地址: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/
相关文章推荐
- 如何创建XS Job来完成定时任务
- SQL2008如何创建定时任务作业
- suse如何创建定时任务?
- SQL2008如何创建定时任务作业
- 非root用户 如何创建linux 服务的定时任务
- 如何创建程序文档使服务器定时运行某些任务
- 在Nodejs中使用Redis如何完成定时任务?
- 如何在windows服务器上面创建定时任务
- SQL2008如何创建定时任务作业
- 如何创建一个定时任务,并…
- 如何使用ServletContextListener完成定时任务
- 如何创建Windows定时任务
- sqlserver通过脚本创建定时任务
- 如何在Delphi中用代码来完成计算字段的创建
- 数据库中创建定时任务
- sqlserver通过脚本创建定时任务
- 如何在spring中配置定时任务(job)
- 如何在Spring中配置定时任务
- C#如何在程序里定时启动任务
- 如何在spring中配置定时任务(job)