【公众号系列】超详细SAP HANA JOB全解析

时间:2021-05-24 09:21:18
公众号:SAP Technical
本文作者:matinal
 

【公众号系列】超详细SAP HANA JOB全解析

写在前面

你一定知道SM36/SM37,ERP里的JOB我们都很熟悉,可以让一些功能性的程序定期地完成一些我们需要的指定性的操作。这样既可以节省时间,又可以避开服务器使用的高峰期,所以很多时候JOB是项目实施的必要手段。

那么,这些事情(定时执行定时任务的功能)是否可以在HANA里来完成呢,由于HANA显著的性能优势,在和外部系统集成的时候,也需要这样的功能来做一些任务。这个功能使用还是很普遍的,我也在博客中写了很多这方面的内容,今天在公众号上我想详细的说一下使用HANA JOB的全过程。

前提条件

1、服务器版本

首先HANA服务器的版本要高于SPS07,因为从Revision 70之后的版本才添加了这个功能。

2、XSEngine服务

确保XSEngine可以使用,测试方法,打开浏览器,输入下面这个URL:

http://<Web_Server_Host>:80<HANA_instance>

或者:

http://<Web_Server_Host>:80<HANA_instance>/sap/hana/xs/admin/

如果出现下面两张图的内容,说明XS服务没有问题

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

公众号:SAP Technical

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

SAP HANA登录界面

3、参数修改

我们需要为后面的JOB修改一下参数,在indexserver.ini参数文件里,默认情况下,repository下的sqlscript_mode是default,建议修改为UNSECURE。因为default模式下是read only状态,无法进行insert操作。

还有一点,在xsengine.ini参数文件里,添加scheduler节点,并且添加enabled属性,值设置为true。这两点的参数分别如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

公众号:SAP Technical

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

HANA XS参数文件

4、权限参数

要给登录的账号授予sap.hana.xs.admin.roles :: JobAdministrator的权限和sap.hana.xs.admin.roles :: HTTPDestAdministrator的权限。当然,该用户的Schema权限也要赋给用户_SYS_REPO。

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

以上四个步骤完成之后,说明我们的前期准备工作已经做完,相当于环境准备完成。接下来就是创建JOB的具体操作了,下面我来讲一下具体的流程。

创建步骤

1、创建XSProject

选择Project后,找到XSProject,这里的一些步骤我这里就不那么详细写了,因为重点在后面的参数介绍,这些步骤读者朋友可以自己操作一下,很容易做出来。

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

找到XSProject,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

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

2、所需文件

创建完Project后,我们需要在Project里有几个必要的文件,.xsapp文件、. xsaccess文件、.xsjob文件和.xsjs文件。这几个文件是必要的,而且创建Project的时候,会带出来前两个文件,我下面会重点说一下比较重要的文件,其他的可能会直接带过。

其他的就是填写名称,一路NEXT下来就好。最后,我们可以在Project Explorer里看到新建的project。如下图所示

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

.xsaccess文件内容,这个文件里面主要是控制权限缓存之类的参数,我这里写上最简单的参数内容,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

.xsapp文件内容为空即可,因为这个是整个Project访问的入口,所以没有内容也要有这个文件,这里我就不在多说了。

3、调用文件

JOB能调用的内容,包括表,存储过程,模型等等。比如表,我就可以直接通过js的function来实现调用,然后放入到job文件中,而存储过程就可以直接放入job文件中,写法略有不同,这个后面会详细讲解

调用展示

这里我简单的做一个调用展示的例子,希望大家看到例子后知道整个过程的操作。

1、创建表

首先,我需要一张表,我想通过JOB来完成表里的数据存储,那现在来创建一个简单的存储表,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

2、创建js文件

我需要一个js文件来完成对表的数据操作,创建的方法,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

创建js文件后,需要些一点代码,代码的内容就是SQL执行数据连接操作,这段代码很简单,我就不解释太多了,直接看代码,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

3、创建job文件

我需要一个JOB文件作为载体,用于定时完成任务,创建过程也很简单,和步骤2类似,只是要选择JOB文件即可,.xsjob文件生成之后,可以在XS Job文件里定义任务了。如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

创建JOB文件后,也需要写一点参数的代码,在action里指定刚才新建的XS JavaScript文件里的function。在schedules中指定调度时间,其中的xscron同Linux环境的crontab的语法类似,这里我们指定每5秒钟执行一次。代码如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

JOB配置

以上步骤完成之后,现在来到了最后一步,也就是如何启动任务。此时,打开浏览器,进入到Admin界面,输入账号和密码之后,我可以在HANA XS Administration Tool里看到刚才新建的Job。在这里我也可以新建Job,来完成我想要定时的任何任务。

输入User和Locale,勾选Active,然后,点击Save之后XS Job就开始执行了。当然,我们也可以在此监控任务。如下图所示:

【公众号系列】超详细SAP HANA JOB全解析

配置界面如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

参数解析

我这里重点说一下Job的参数,我把Job文件拆分开来,每一个都具体说一下。

1、description参数

参数的具体使用,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

只是单纯的描述描述这个Job的作用,方便查找和日志查询。

2、action参数

参数的具体使用,如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

使用action关键字可以定义要作为XS作业的一部分运行的函数,例如,XS JavaScript或SQLScript。需要以下语法:

“action” : “<package.path>:<XSJS_Service>.xsjs::<functionName>”.

由于js的function比较特殊,所以这里拿出来举例说明。

3、schedules参数

description(可选)

描述Job的具体执行规则

xscron

使用类似cron的语法来定义作业运行的计划,所以xscron关键字允许我们定义在运行作业的计划。(下面有详解)

parameter(可选)

定义作为作业一部分调用的(XSJS或SQLScript)函数用作输入参数

XS作业文件中的xscron语法详解:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

举个栗子说明一下,比如:* * * * * */5 20表示预定作业应每五分钟运行一次,并且还应在指定分钟内的第20秒运行。作业从指定分钟的正好20秒开始,仅运行一次。

为了更清晰的弄清楚这个问题,我再来详细的列一个表格,帮你解决困惑。

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

那现在我再来举个正常的例子

比如:2019 * * fri 12 0 0 表示2019年每周五中午12:00开始执行。

再比如:* * 3:-2 * 12:14 0 0 表示每月的第三天和第二天之间的每个月的每个小时的12:00至14:00之间的每小时定时执行。

存储过程

使用Job调用存储过程的方式和前面差不多,我这里就简单的说一下关键步骤,创建存储过程的步骤我这里就省略了,创建完存储过程之后,需要在存储过程里写一下简单的测试代码,很简单,就是在上述我创建的表格里,插入一行代码,具体代码如下图所示:

【公众号系列】超详细SAP HANA JOB全解析

公众号:SAP Technical

调用过程

创建完存储过程之后,将其保存并激活。然后同样新建一个XS Job来执行这个Procedure。创建JOB的过程这里也省略了,在Project右键就可以直接创建(创建的过程可以直接在过滤条件里输入关键字),具体代码如下图所示:

【公众号系列】超详细SAP HANA JOB全解析公众号:SAP Technical

在这里有需要注意的地方就是,注意action的语法,和刚才的XS JavaScript是不同的。这里我指定了每10秒钟执行一次。这一部分就先介绍到这里。

删除计划

创建JOB的部分差不多已经全部介绍完,那么,可以创建JOB,当然也可以删除,删除的方法也不止一种,可以在浏览器中进入到admin里,找到要删除的JOB,选择delete schedule直接删除,也可以使用$.jobs JavaScript API在运行时向作业添加或删除JOB。第一种方法就不用说了,进入界面找到,直接删除。现在来说一下第二种方法,使用API进行删除。

公众号:SAP Technical

现在我来创建一个xsjs在运行时为xsjob中定义的XS作业添加新JOB或者是删除JOB,代码如下图所示:

【公众号系列】超详细SAP HANA JOB全解析

 公众号:SAP Technical

保存并激活上述文件,调用XS JavaScript在运行时添加新的JOB或者删除JOB。但相对来说,还是推荐第一种做法,进入admin后可以直接删除,不用考虑API的内容。

公众号:SAP Technical

以上讲了很多关于HANA JOB的操作,这篇文章也基本涵盖了HANA Job的所有内容,并且重点在详细解析了参数,这个地方很多人可能没有搞清楚,希望你看完这篇文章之后,对这些参数有个清晰的了解。

参考文档:

SAP HANA Administration Guide;

SAP HANA Developer Guide;

【公众号系列】超详细SAP HANA JOB全解析的更多相关文章

  1. 【公众号系列】在SAP里查看条件记录的方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]在SAP里查看条件记录的方法   ...

  2. 【公众号系列】SAP HANA 平台的优势

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP HANA 平台的优势   ...

  3. 【公众号系列】SAP HANA和区块链

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP HANA和区块链   写在 ...

  4. 【公众号系列】SAP S&sol;4 HANA 1809请查收

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP S/4 HANA 1809 ...

  5. 【公众号系列】SAP S&sol;4 HANA的移动平均价

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP S/4 HANA的移动平均 ...

  6. 【公众号系列】两分钟学会SAP F1技巧

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]两分钟学会SAP F1技巧   写 ...

  7. 【公众号系列】SAP的新零售

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP的新零售   写在前面 还是 ...

  8. 【公众号系列】SAP将裁员4400人,颤抖吧!

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP将裁员4400人,颤抖吧! ...

  9. 【公众号系列】浅谈SAP项目管理的技能

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[[公众号系列]浅谈SAP项目管理的技能   写 ...

随机推荐

  1. Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类

    Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类 内容大纲 加性高斯白噪声信道(AWGN)下的digital调制格式识别分类 (1. PSK; 2. QPSK; 3.8 ...

  2. 济南学习 Day 4 T1 am

    完美的序列(sequence)Time Limit:1000ms Memory Limit:64MB题目描述LYK 认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同.然而并不是所有的 ...

  3. XML工具类 - XmlUtils&period;java

    XML工具类,提供序列化XML.反序列化XML.获取指定节点的值的方法. 源码如下:(点击下载 - XmlUtils.java.dom4j-1.6.1.jar.xstream-1.4.7.jar ) ...

  4. Android中AppWidget的分析与应用:AppWidgetProvider &period;

    from: http://blog.csdn.net/thl789/article/details/7887968 本文从开发AppWidgetProvider角度出发,看一个AppWidgetPrv ...

  5. 思维导图工具XMind下载

    XMind 是一款非常实用的商业思维导图软件,全力打造易用.高效的可视化思维软件,强调软件的可扩展.跨平台.稳定性和性能,致力于使用先进的软件技术帮助用户真正意义上提高生产率.XMind 支持 在Wi ...

  6. PHP之流程控制

    nest 嵌套 the curly braces 花括号 colon syntax 冒号语法 PHP三种if判断的写法 写法一: if(true){ }else if(){ }else if(){ } ...

  7. fatal error C1083&colon; Cannot open include file&colon; &&num;39&semi;openssl&sol;opensslv&period;h&&num;39&semi;

    在安装针对ELK系统的警告工具elastalert时,报错: fatal error C1083: Cannot open include file: 'openssl/opensslv.h',如下图 ...

  8. tail 尾巴

    tail用法:尾巴,取文件的最后N行,默认前10行, -n 2 取前2行-n 2,简写就是-2 -f 文件 跟踪一个文件尾部的时时变化. 克隆出一个窗口执行:循环脚本:for n in `seq 1 ...

  9. linux虚拟机Ubuntu命令配置

    # netstat -ntl  # 查看端口号,改成 0.0.0.0才能进行远程访问 # sudo service redis-server restart  # 修改后需要重启服务 python2和 ...

  10. 利用简单的参数传递来实现单条查询的easyui-datagrid

    前一阵子老师给出了一个题目, 说让设计个表格, 学生系统的, 可以查询学生的信息和成绩, 科目自己定, 数据库建表也自己定. 数据库的建表可是建的相当的简陋, 反正老师不是很满意, 后来数据表格做出来 ...