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+端口号即可)

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

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

1.3 HANA上的必要配置
你可以把下面这些和XSengine相关的角色赋给用户(这里我们使用的用户是”DEMO_USER”)。
HANA 如何创建XS Job来完成定时任务

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

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

此处大家也可以点开

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

这样就如下面那些图片一样了

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


在xsengine.ini里添加section “schedule”和参数”enabled”如下。
HANA 如何创建XS Job来完成定时任务

如果需要向表里写数据,你必须把”sqlscript mode”改成”UNSECURE”(如下图),否则你只能在procedure里使用select语句。
HANA 如何创建XS Job来完成定时任务

2. Procedure

2.1 新建XS project。
HANA 如何创建XS Job来完成定时任务

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

当要给project指定一个workspace时,你可以新建一个workspace或者使用缺省的workspace。
这里我们使用缺省的workspace。

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

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

你可以在Project Explorer里看到新建的project。

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

同时你也可以在Web Browser里看到它。

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

2.2 新建数据库object。
这里我们新建个表来做测试。

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

2.3 新建XS JavaScript和XS Job。

按下面的步骤新建XS JavaScript。

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

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

.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();

}

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

然后新建一个XS Job。
HANA 如何创建XS Job来完成定时任务

HANA 如何创建XS Job来完成定时任务HANA 如何创建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”

        }

    ]

}

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

2.4 新建HANA Procedure和XS job。

按下面的步骤新建XS Procedure。

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

.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;

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

然后同样新建一个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”

        }

    ]

}

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

2.5 在Web Browser里启动任务。

你可以在HANA XS Administration Tool里看到刚才新建的两个XS Job。

输入”User”和”Locale”,勾选”Active”,然后 按下”Save”之后XS Job就开始执行了。

你也可以在此监控任务。

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

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

在basis搭建中启动任务(相似)

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

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

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



本文转载地址: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/