3.4.1.任务设置
任务表示调度执行的具体内容。任务类型:定制任务、计算元数据、数据预警、SFTP同步任务、工作流任务、作业组任务、数据同步任务、作业流任务、sql任务、spark任务、SparkShell任务。
3.4.1.1.功能入口
在左侧资源目录树下,选中任务节点或是其子目录节点右键选择新建任务,或是在主界面点击快捷方式新建任务,如图:3-4-1-1-1所示。

图3-4-1-1-1 新建任务入口
点击新建任务后,则进入任务定义区域,在任务类型处可选择定制、计算元数据、报表导出、数据预警、页面导出五个类型,如图:3-4-1-1-2所示:

图3-4-1-1-2 选择任务类型
3.4.1.2.界面介绍
任务基本信息区:根据需要输入任务的名称、别名和描述。
任务内容定义区:和任务类型关联,根据任务类型不同,则设置选项也不同。此内容介绍详细请参考各个任务类型设置。
任务操作按钮区:任务操作按钮。
查看运行脚本:查看任务生成的JS运行脚本。
测试运行:测试运行执行此任务,查看相关运行效果。
保存:保存此任务管理。
关闭:关闭此任务,进入任务管理主页面。

3.4.1.3.定制任务
定制任务是系统提供的一种任务类型,是指通过用户自己输入JavaScript脚本来定制任务,实现无法通过配置实现的其它功能。自定义的优势是能实现更丰富的功能满足各种特殊的应用,但这种方式比较复杂,需要熟悉JavaScript与任务编写规范。
3.4.1.3.1.操作入口****
在"新建任务"界面"基本信息区"的设置项"任务类型"下拉列表中选择定制,进入"定制"设置文本区。当编写自定义任务时,可以通过下面的写法来引入JAVA类:importClass(java.lang.System);通过这些类就可以使用Java的功能。如下图所示:

3.4.1.3.2.执行sql脚本和存储过程任务说明
3.4.1.3.2.1.执行sql说明
1、执行插入、更新、删除及存储过程接口:XQueryService.executeUpdate(数据源ID, sql)
2、执行查询数据接口:XQueryService.readDataBySourceIdAndSql(数据源ID, sql, maxRow)
3.4.1.3.2.2.查询使用示例
var smartResult=taskrun('XQueryService.readDataBySourceIdAndSql','datasource',
'["DS.baa6642fbb70469384c3fdb7f5f1b20c", "SELECT * FROM `yiyao_normal`", 2]');
var tool = new TaskRpcUtil();
var jsondata = tool.Obj2json(smartResult.data);
System.out.println(jsondata.getInteger("col"));//从结果集中获取列数
System.out.println(jsondata.getInteger("row"));//从结果集中获取行数
var griddata = jsondata.get("data");//从结果集中获取数据信息
var fields = jsondata.get("fields");//从结果集中获取字段信息
var row1Col7 = griddata.get(0).get(6); // 取第1行第7列
说明:
1:DS.baa6642fbb70469384c3fdb7f5f1b20c为数据管理下面的数据库的ID。
3.4.1.3.2.3.存储过程使用示例
var smartResult=taskrun('XQueryService.executeUpdate','datasource',
'["DS.baa6642fbb70469384c3fdb7f5f1b20c", '+ '"CALL user_procedure(\'drugX\', @num);"]');
说明:
1:DS.baa6642fbb70469384c3fdb7f5f1b20c为数据管理下面的数据库的ID。
2:本示例为mysql执行存储过程的方法,不同数据库稍有差异,请查找SQL标准。
3.4.1.3.2.4.插入使用示例
var smartResult=taskrun('XQueryService.executeUpdate','datasource',
'["DS.baa6642fbb70469384c3fdb7f5f1b20c", "INSERT INTO `testA`(`a`,`b`,`c`)'
+ 'VALUES (\'aaa22\', \'bbb\', \'ccc\');"]');
说明:
1:DS.baa6642fbb70469384c3fdb7f5f1b20c为数据管理下面的数据库的ID。
2:本示例为mysql执行存储过程的方法,不同数据库稍有差异,请查找SQL标准。
3.4.1.3.2.5.变量使用示例
//演示变量常量
var p=$p('test');
System.err.println(p);
//演示变量sql
var p1=$p('22');
System.err.println(p1);
//演示sql执行
var smartResult=taskrun('XQueryService.readDataBySourceIdAndSql','datasource',
'["DS.9762dce7f0ca45b3b2cb9a564e33c65f", "SELECT * FROM x_user_"+p1+" where c_id="+p, 2]');
System.err.println(smartResult.data);
//注意复杂对象一定要使用tool.Obj2json
var json=tool.Obj2json(smartResult.data);
//取值均按json语法来取,
System.err.println(json.getJSONArray('data').get(0).get(0));
说明:
1:DS.9762dce7f0ca45b3b2cb9a564e33c65f为数据管理下面的数据库的ID。
2:$p('test')和$p('22')中test和22分别为新建的变量中的名称。
3:本示例为mysql执行存储过程的方法,不同数据库稍有差异,请查找SQL标准。
3.4.1.3.2.6.http调用使用示例
//get 方法适用于简单参数场景
var url='http://www.baidu.com?id=aaa&name=bbb';
var result=tool.httpGet(url);
System.err.println('aaa---'+result);
//get 方法如果参数复杂,请使用encodeURI进行转换,否则会因无法正确识别参数而报错
var logurl='http://192.168.18.18:8501/login'
var params=encodeURI('?bizindex=login¶ms=["测试","1"]');
result=tool.httpGet(logurl+params);
System.err.println('bbb---'+result);
//小插曲,实现等待毫秒数
tool.sleep(2000);
//post 方法使用时,参数为json
var jsonobj={'bizindex':'login','params':["lxk","1"]};
result=tool.httpPost(logurl,jsonobj);
System.err.println('ccc---'+result);
3.4.1.3.2.7.读取SFTP远程文件使用示例
var ip = "192.168.0.70";//ip地址
var port = 22;//端口
var userName = "root";//账号
var password = "root";//密码
//打开连接
var sftp = tool.sftp2GetConnection(ip, port, userName, password);
//上传文件,第1个参数传入上一步获取的连接,第二个参数源目录,第三个参数源文件名,第四个参数目标目录,第五个参数,目标文件
tool.sftp2UploadFile(sftp,"C:\\liuqiang\\", "bbb.txt", "ylx", "shangchuan.txt");
//读取文件,第1个参数传入上一步获取的连接,第二个参数要读取的服务器文件夹,第三个参数要读取的文件名称
var result = tool.sftp2ReadFile(sftp,"ylx", "testrr.txt");
System.out.println(result);
//下载文件到目标地址, 第一个参数传入上一步获取的连接,第二个参数源目录,第三个参数源文件名,第四个参数目标目录,第五个参数目标文件名
tool.sftp2DownLoadFile(sftp,"ylx", "test.txt", "c:\\liuqiang\\", "bbb.txt");
//删除文件,第一个参数传入上一步获取的连接,第二个参数要删除的目标目录,第三个参数要删除的目标源文件名
tool.sftp2DeleteFile(sftp,"ylx", "test.txt");
//关闭连接
tool.sftp2CloseConnection(sftp);
3.4.1.3.2.8.JSON和String格式互转使用示例
var tool=new TaskRpcUtil();
var obj=['1','2'];
var result=tool.json2String(obj);
System.out.println(result);
var obj2=tool.String2Obj(result);
System.out.println(obj[0]);
3.4.1.3.2.9.线程休眠2分钟使用示例
System.out.println("thread start"+new Date());
tool.sleep(2 * 60 * 1000);
System.out.println("thread end"+new Date());
3.4.1.4.计算元数据
在"新建任务"界面"基本信息区"的设置项"任务类型"下拉列表中选择计算元数据,进入"计算元数据"设置区,需要选择一个数据表,如图:3-4-1-4-1所示。

图3-4-1-4-1 新建计算元数据
3.4.1.5.数据预警
在"新建任务"界面"基本信息区"的设置项"任务类型"下拉列表中选择数据预警,进入"数据预警"设置区。如图3-4-1-5-1所示。

图3-4-1-5-1 配置数据预警任务界面
1)选择一个资源(可选数据源和数据集),根据选择的资源在‘预警条件’中增加条件。
2)在“可选字段”下拉框选择选择需要配置的字段,选择操作符、类型,配置条件后点击【增加】按钮,会把选择的条件添加到下方工作区显示。可用and和or连接多个条件。如图3-4-1-5-2所示。

图3-4-1-5-2 配置预警条件
3)添加到工作区的预警条件可以编辑、删除、上移、下移、添加括号、取消括号操作。
4)配置导出类型有两种方式:邮件和系统消息。
5)选择导出类型为邮件时,需要配置导出格式(默认为excel,可选择MHT),选择是否压缩导出文件,如图3-4-1-5-3所示。选择系统消息时则没有导出格式和是否压缩文件的配置,如图3-4-1-5-4所示。

图3-4-1-5-3 导出类型为邮件

图3-4-1-5-4 导出类型为系统消息
6)配置收信条件:点击“添加条件”会出现弹框界面,此界面和预警条件界面显示一致,是在预警条件的基础上再次配置是否符合收信条件,可配置一个和多个条件,如图3-4-1-5-5所示。

图3-4-1-5-5 配置收信条件
7)配置收信人:配置的收信人可以直接输入邮箱点击回车显示或点击“选择用户”在选择用户界面选择用户、组和角色;每个条件都需要配置收信人;如导出类型选择的是系统消息,则在收信人处不会显示输入邮箱编辑框。
8)配置完成后,点击保存方可测试运行;根据所配置的内容给相应的用户发送系统消息或邮箱发送邮件。
3.4.1.6.SFTP同步任务
SFTP同步任务实际上是把存在sftp的文件通过分隔符等配置同步到hive数据源。
操作入口
在"新建任务"界面"基本信息区"的设置项"任务类型"下拉列表中选择SFTP同步任务。
编辑左侧sftp基本配置:包括IP、端口、用户名、密码、分隔符等;右侧目标表配置通过下拉方式选择数据源类型、数据源、表。
配置完成后,鼠标单击下方可根据配置项显示sftp分隔内容和hive数据表字段名称。通过双击两端端点或拖拽方式创建连接。
如图3-4-1-6-1所示:配置sftp与数据源之间的连接



图3-4-1-6-1 配置sftp与数据源之间的连接
3.4.1.7.工作流任务
工作流任务的创建在数据云敏捷挖掘模块完成,创建完成后,点击发布选择需要发布到的项目,勾选下方‘是否发布任务’,则发布应用的同时会在自定义任务下发布一个工作流任务。如图3-4-1-7-1所示。

图3-4-1-7-1 发布工作流任务