




已阅读5页,还剩150页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SG-UAP任务调度组件用户使用手册国家电网公司应用系统统一开发平台(SG-UAP V3.0.0)任务调度使用手册国网信息通信产业集团研发中心2017年7月修订记录版本号修订说明修订人修订时间审核人1.1创建董天宇、苗亚楠2013.1.301.1修改董天宇、苗亚楠20新增5.3任务调度的导出和导入朱志超2013.4.25张西伦1.2新增6.5简单调度规则朱志超2013.4.25张西伦1.2新增7.1图形统计分析朱志超2013.4.25张西伦1.5新增修改司金霞2013.07.052.5新增8 数据库兼容性配置新增9 任务延迟启动配置新增10 日志归档配置修改 7 图形统计分析修改 5 任务定义王伟20新增 11 系统配置新增12 权限配置修改 6 任务监控王伟2015.04.17目录1引言41.1概述41.2适用范围61.3名词解释62执行组件开发72.1配置依赖包72.2执行组件实现72.3任务配置82.3.1配置UAP项目82.3.2配置任务93集成组件开发与部署103.1功能说明103.2集成执行组件运行机制103.3集成执行组件编写与发布服务113.3.1在业务系统中引入执行组件bundle113.3.2编写Java执行组件实现123.3.3为业务系统组件发布服务143.4在业务系统中获取任务调度信息153.4.1在业务系统中引入依赖bundle153.4.2在Java执行组件中获取任务信息163.5验证集成执行组件173.5.1输入正确地址173.5.2可能出现的错误174组件定义184.1执行组件分组184.2执行组件244.3动态组件脚本345任务定义38功能说明385.1任务分组385.1.1新建任务分组385.1.2任务分组重命名425.1.3任务分组删除445.1.4刷新、上移、下移455.2任务配置465.2.1新建任务465.2.2调用执行组件495.2.3表达式规则585.2.4简单规则665.2.5编辑任务745.2.6删除任务755.3任务调度的导出和导入765.3.1任务导出765.3.2任务导入836任务监控98功能说明986.1任务监控98功能说明98操作说明986.2运行日志101功能说明101操作说明1026.3操作日志103功能说明103操作说明1037图形分析统计105功能说明1057.1任务使用频率分析1057.2异常任务分析1077.3超时任务分析1097.4执行任务量分析1111 引言1.1 概述根据各个业务环境的反馈以及用户的需求,在诸多的业务场景下都需要提供自动化的任务执行能力,在不需要用户参与的情况下定时执行业务逻辑处理。例如从不同的渠道获取大量数据,将这些数据根据不同的业务规则整合与存储,然后针对规整后的数据进行各种分析操作,最终生成满足业务需求的分析结果。 统一开发平台任务调度组件基于统一开发平台,为业务应用中的任务调度提供设计和运行支持。任务调度产品由三个部分组成:任务定义、任务执行和监控和任务分析统计。用户通过任务设计器定义任务模型最终存储在关系型数据库中。在服务启动时会加载任务模型,并注册到调度引擎中。任务的执行和逻辑并不运行在任务调度程序中,而是部署和运行在业务系统中,按照任务调度组件制定的接口规范将其暴露成服务。任务模型中以配置方式定义任务逻辑的调用入口,任务调度引擎在触发任务后基于配置调用指定服务。用户可以通过页面集成或应用集成方式,监视和控制任务,如:监视运行状态,控制任务启停等。并可对历史数据进行查看和分析。表格 功能模块说明:功能点编号功能点名称功能点内容描述优先级版本号F0501任务定义将业务逻辑定义为可调度的任务。可增加、删除、修改、查询任务定义。编制任务调度规则,定义执行组件,设置各种运行参数。任务调度规则需要可视化的表达式定义界面。设定任务的执行优先级别,级别高的任务优先执行。提供自定义分组功能。高1.0增加任务模型树上的模糊查询检索功能高1.0F0502任务执行和监控任务和调度规则的解析,任务执行。监控任务调度服务的运行状态,并在服务发生不可控制的异常停止时自动收集错误信息,可自动拉起服务,以保持服务的正常运行,增强系统的可靠性。可实时监视任务的执行状态和运行过程,接受任务调度服务运行时的状态信息,任务的运行时调试信息、以及任务运行时异常信息的接收并显示;可以手动方式控制任务的执行,比如启动、停止任务;可以根据任务模型进行历史运行记录查询。高1.0执行组件部署节点的心跳监控。中2.0F0503分析统计任务日志记录及查看。中1.0提供图形化分析功能中2.0F0504系统管理任务调度系统级的运行时配置管理功能。中2.01.2 适用范围本文档适用于基于SG-UAP搭建的业务系统任务调度建设工作。本文档的预期读者包括:SG-UAP技术服务人员、基于SG-UAP搭建的业务系统的设计人员、开发人员、实施人员以及运行维护人员。通过阅读本文档,使各类人员进一步明确任务调度组件所要处理的业务、所要解决的问题以及解决问题的思路,为业务系统的开发、建设奠定基础。1.3 名词解释表格 1 名词解释序号名词相关解释1任务任务调度中的最小执行单元,其中包含了调度规则和执行组件及所需的参数。一个任务可以包含多个可顺序执行的执行组件和多个调度规则。2任务定义定义一个任务,包含若干执行的执行组件,并确定任务执行的若干个调度规则。选定执行组件,并根据选择的执行组件,录入任务执行时所需参数3组件定义定义一个组件。4任务监控监控当前权限下,所有任务运行状态,并可对任务进行启动和停止操作。5任务执行组件任务中的执行单元,即任务被触发时需要执行的部分,一段需要执行的业务代码。6调度规则即触发器,描述任务被触发的规则。7任务分组归类任务,便于操作员管理任务使用。8组件分组便于操作员管理组件任务使用。2 执行组件开发2.1 配置依赖包将任务执行组件依赖包ponent引入UAP模块项目,如下图:图33 任务调度依赖包配置2.2 执行组件实现1. 创建执行组件类,代码片段如下:package com.sgcc.mytask.exam;import ponent.restSmunication. TaskComponent;import munication.restService.ITaskDispatchService;public class MyTaskBizc implements ITaskDispatchService /*任务执行组件方法体*/public TaskComponent dispatchComponent(TaskComponent comp) System.out.print(执行组件测试!);return null;2. 配置xml文件执行组件编写好之后,需要在模块项目的config/*.xml文件中做两部分的配置:1) 将组件实现配置到spring IOC容器中:2) 将spring 容器中的Bean实例发布成OSGI服务,并注入到执行组件提示:在 中id标签为服务ID(即Service ID); beanId标签为配置1)中的spring bean对应的id。2.3 任务配置2.3.1 配置UAP项目将任务调度模块加入UAP项目的白名单,如下图所示:图34 开启任务调度模块2.3.2配置任务确认任务模块启动后,进入任务配置页面,如下图:图35 任务调度配置页面首先,配置任务分组、组件分组、定义任务信息、执行组件信息。图36 任务执行组件配置提示:在组件定义时,ServerID对应6.1.2中定义的 id标签值。 接着,为任务绑定执行组件,并配置任务的调度规则。Uri地址则是业务组件服务器地址。图37 任务调度调度规则配置最后,在完成添加任务监听之后,启动任务即可。任务配置具体步骤见第4,5,6,7章节。3 集成组件开发与部署3.1 功能说明任务调度组件是在Quartz基础上,扩展开发任务监控和任务建模工具,任务监控以Web方式实现控制界面、分析管理图表,任务调度提供开放式的任务定义、调度、规则配置等功能,任务调度组件具有自定义业务逻辑、图形化界面、自定义超时处理策略、任务执行控制标准接口、任务执行日志记录、多任务组合、任务调度监控、实时任务监控等功能特点。3.1.1 概述任务调度组件是在Quartz基础上扩展开发的任务监控和任务建模工具,任务监控以Web方式实现控制界面、分析管理图表,任务调度提供开放式的任务定义、调度、规则配置等功能,任务调度组件具有自定义业务逻辑、图形化界面、自定义超时处理策略、任务执行控制标准接口、任务执行日志记录、多任务组合、任务调度监控、实时任务监控等功能特点。3.1.2 集成执行组件运行机制A业务系统自定义spring Bean,继承执行组件bundle中的组件接口ITaskDispatchService,并通过配置文件将该Bean发布成OSGI服务,将服务注入到组件bundle中。从而执行组件可以接受远程或本地任务调度引擎的触发调度。B远程restful方式,业务系统需要引入任务调度执行组件bundle(ponent),在执行组件bundle内会自动发布两个rest服务: 系统调用post服务:/taskdispatchcomp/rest/taskcom/components/ 测试连接的get服务:/taskdispatchcomp/rest/taskcom/components/serviceid,serviceid为服务ID。C.本地部署方式,业务系统需要引入任务调度模块bundle(ponent),在调度模块bundle内会调用A中在OSGI容器注册过的服务,并且自动发布一个测试连接的get服务:http:/ip:port/系统客户端名称/bundle名称/过滤资源字符串/rest资源名1级/ rest资源名2级/服务ID,例如:88:9998/sguap-client/taskdispatch/rest/tasklocalcom/components/testTaskService。D.WebService方式,业务系统发布WebService服务后,任务调度基于Xfire框架根据URI例如:88:9898/sguap-client/BussinessRemote/services/ITaskDispatchWebService?wsdl进行服务调用E.JMS调用方式,又称异步调用方式,为平台指定消息中间件后平台将调度对象以消息形式发到中间件,业务系统根据自己配置的消息队列自行监听消息服务,获取任务消息。3.1.3 组件配置操作 rest组件部署配置在组件定义中选择rest组件。如图-1: 图-1首先配置MANIFEST.MF文件。如图-3所示点击MANIFEST.MF:图-3如图-4所示,将执行组件bundle(ponent)引入项目,点击“Add”按钮。图-4查找bundle(ponent)引入项目,点击“OK”,如图-5所示。业务系统实现类参考。图-5远程组件部署需要在组件定义中填写URI,如图-6所示。图- 编写rest组件实现在业务系统中新建Class,在Interfaces选择中添加继承执行组件bundle(ponent)中的接口。如图-1图-1点击Add后,在接口选择界面中选择ITaskDispatchService,如图-2所示:图-2生成Class 后如图-3所示,在dispatchComponent方法中实现执行组件的业务方法 ,返回值同样为TaskComponent,为保证RestTemplate通信正确此处返回值不能为null,具体实现内容由业务系统决定。具体填充内容由业务系统决定。图-3参数TaskComponent类的主要属性和描述:i属性名称描述jobNamejob名称jobGroupNamejob组名createDate执行组件创建时间createJobDatejob创建时间schedName调度实例名称componentDescription执行组件描述applicationID应用IDapplicationName应用名称componentID组件IDcomponentType执行组件类型jobDescription任务描述dispatchTime触发时间ServiceID业务组件IDJsonParam扩展参数 为业务系统发布rest组件服务执行组件编写好之后,需要做两部分的配置:1、将组件实现配置到Spring IOC容器中:2、将spring 容器中的Bean实例发布成OSGI服务,并注入到执行组件bundle(ponent):配置中id为服务ID,后面测试时使用服务ID测试,注意该Service ID在UAP任务调度平台中唯一。 beanId为配置1中的spring beanid在系统bundle唯一。后面配置为组件bundle固定配置。3.1.4 本地组件部署配置在组件定义中选择rest组件。如图-1: 图-1首先配置MANIFEST.MF文件。如图-3所示点击MANIFEST.MF:图-3如图-4所示,将执行组件bundle(ponent)引入项目,点击“Add”按钮。图-4查找bundle(ponent)引入项目,点击“OK”,如图-5所示。业务系统实现类参考。图-5远程组件部署需要在组件定义中填写URI,如图-6所示。图- 编写本地组件实现在业务系统中新建Class,在Interfaces选择中添加继承执行组件bundle(ponent)中的接口。如图-1图-1点击Add后,在接口选择界面中选择ITaskDispatchService,如图-2所示:图-2生成Class 后如图-3所示,在dispatchComponent方法中实现执行组件的业务方法 ,返回值同样为TaskComponent,为保证RestTemplate通信正确此处返回值不能为null,具体实现内容由业务系统决定。具体填充内容由业务系统决定。图-3参数TaskComponent类的主要属性和描述:i属性名称描述jobNamejob名称jobGroupNamejob组名createDate执行组件创建时间createJobDatejob创建时间schedName调度实例名称componentDescription执行组件描述applicationID应用IDapplicationName应用名称componentID组件IDcomponentType执行组件类型jobDescription任务描述dispatchTime触发时间ServiceID业务组件IDJsonParam扩展参数 为业务系统发布本地组件服务执行组件编写好之后,需要做两部分的配置:1、将组件实现配置到Spring IOC容器中:2、将spring 容器中的Bean实例发布成OSGI服务,并注入到执行组件bundle(ponent):配置中id为服务ID,后面测试时使用服务ID测试,注意该Service ID在UAP任务调度平台中唯一。 beanId为配置1中的spring beanid在系统bundle唯一。后面配置为组件bundle固定配置。3.1.5 WebService组件部署配置在组件定义中选择Webservice组件其中url以?WSDL结尾。如图: 编写WebService组件实现在业务系统中新建Class,在Interfaces选择中添加继承执行组件bundle(ponent)中的接口。如图-1图-1点击Add后,在接口选择界面中选择ITaskDispatchWebService,如图-2所示:图-2生成Class 后如图-3所示,在dispatchComponent方法中实现执行组件的业务方法 ,返回值同样为TaskWSComponent,为保证RestTemplate通信正确此处返回值不能为null,具体实现内容由业务系统决定。具体填充内容由业务系统决定。图-3参数TaskWSComponent类的主要属性和描述:属性名称描述jobNamejob名称jobGroupNamejob组名createDate执行组件创建时间createJobDatejob创建时间schedName调度实例名称componentDescription执行组件描述applicationID应用IDapplicationName应用名称componentID组件IDcomponentType执行组件类型jobDescription任务描述dispatchTime触发时间ServiceID业务组件IDJsonParam扩展参数ITaskDispatchWebService接口比ITaskDispatchService多一个Test方法需要实现,该方法用于组件测试,返回值为字符串,如果字符串必须有内容否则系统判断为服务不通。 为业务系统发布WebService组件服务参数执行组件编写好之后,需要做三部分的配置:1、在Spring IOC容器中声明XFireSpringServletOSGI映射:XfireServletcom.sgcc.uap.xfire.spring.XFireSpringServletOSGI/services/*2、引入xfire.xml:3、声明业务Bean,将业务Bean注入到spring发布的XFire服务中:3.1.6 JMS组件部署配置在perties中配置TASKDISPATCH_JMS_URL=tcp:/ip:61616(不配置默认:tcp:/localhost:61616)如图: 在组件定义中选择Webservice组件其中url以?WSDL结尾。如图:点击测试组件可以登陆activeMQ中间点监控界面查看:88:8161/admin/如图:如上图所示增加了一条名为com.sgcc.uap.jms.test的队列,这是任务调度的测试队列并且任务调度提供该队列的监听,如果测试成功了说明用户配置的TASKDISPATCH_JMS_URL所指向的中间件是可用的(注意这里测试的并不是业务系统的队列 该例子业务系统队列是:com.bussiness.test)。SerivceID是业务系统自己的队列名称和URI一致即可。 编写JMS组件监听在业务系统中新建Class,在Interfaces选择中添加继承执行组件bundle(ponent)中的接口。如图-1图-1代码继承: javax.jms.MessageListener接口实现,TaskJMSComponent component = (TaskJMSComponent) objMsg.getObject();通过objMsg.getObject()返回任务调度的数据对象。图-2参数TaskJMSComponent类的主要属性和描述:属性名称描述jobNamejob名称jobGroupNamejob组名createDate执行组件创建时间createJobDatejob创建时间schedName调度实例名称componentDescription执行组件描述applicationID应用IDapplicationName应用名称componentID组件IDcomponentType执行组件类型jobDescription任务描述dispatchTime触发时间ServiceID业务组件IDJsonParam扩展参数 为业务系统发布JMS组件服务执行组件编写好之后,需要做两部分的配置:1、声明监听工厂: 2、声明队列名称,下例的com.bussiness.test就是该业务系统的队列名称: 3、声明业务系统监听messageListener,并请将该实例注入到DefaultMessageListenerContainer中:3.1.7 恢复执行接口在任务调度2.8版本中添加了任务恢复执行策略接口,该接口用于在任务调度引擎服务宕机后,按照业务系统自身需求,在服务恢复后执行恢复执行接口业务逻辑。任务调度2.8版本添加了2个接口分别为:ITaskDispatchServiceWithRecover和ITaskDispatchWebServiceWithRecover,这两个接口分别继承了ITaskDispatchService和ITaskDispatchWebService接口,所以在使用的时候实现ITaskDispatchServiceWithRecover和ITaskDispatchWebServiceWithRecover时不需要再实现ITaskDispatchService和ITaskDispatchWebService接口。ITaskDispatchServiceWithRecover和ITaskDispatchWebServiceWithRecover接口中添加了新的任务恢复执行的方法dispatchRecoveringComponent(),该方法需要用户根据个性业务需求去实现。用户在实现该方法后,需要在【任务定义】-【任务策略定义】中对任务的任务策略配置的【是否按照恢复策略执行任务】选项配置为【是】才能生效。如图所示:任务恢复执行是指:任务调度服务在异常关闭后导致正在执行的任务中断,在任务调度服务重启后,任务调度引擎自动对已中断的任务进行恢复执行,如果配置恢复策略并已实现恢复逻辑接口,则任务恢复执行时按照恢复接口中实现的恢复方法执行业务逻辑;如果不满足上述条件,则任务恢复执行按照任务正常逻辑重新执行任务。3.1.8 在业务系统中获取任务调度信息 在业务系统中引入依赖bundle打开配置MANIFEST.MF文件,如图1所示点击MANIFEST.MF:图1如图所示,引入org.codehaus.jsckson.core和org.codehaus.jackson.mapper两个bundle。 在Java执行组件中获取任务信息任务信息:任务定义中配置的一些信息,如任务名称、任务参数、任务描述等。在Java执行组件的dispatchComponent方法中,获取任务信息代码片段如下:String jobname = arg0.getJobName();/获取任务名称JsonNode jn = arg0.getJsonParam();/获取任务的参数数据ObjectMapper om = newObjectMapper();try Map m = om.readValue(jn.getTextValue(), Map.class);String username = m.get(username);/获取任务执行组件中的参数值String dept = m.get(dept);/获取任务执行组件中的参数值 catch (JsonParseException e1) e1.printStackTrace(); catch (JsonMappingException e1) e1.printStackTrace(); catch (IOException e1) e1.printStackTrace(); 在Java执行组件中获取动态脚本信息在任务定义中添加动态脚本请参考SG-UAP_V2.0_任务调度使用手册.doc里的动态脚本章节。在Java执行组件的dispatchComponent方法中,获取任务信息代码片段如下:String jobname = arg0.getJobName();/获取任务名称JsonNode jn = arg0.getJsonParam();/获取任务的参数数据 String scriptedResult = arg0.getScriptedResult();/获取任务的动态脚本 通过脚本来调用JAVA执行组件1:更改platformconfig.xml文件,将任务调度发布方式改为本地#=# Configure plugins#=org.quartz.plugin.listenerLoader.class=com.sgcc.uap.task.plugin.ListenerLoaderPlugin#componentManagerLocal#TASKDISPATCH_DEPLOY=componentManagerRemoteTASKDISPATCH_DEPLOY=componentManagerLocalTASKDISPATCH_TIMEZOMEID=GMT+82:在xml中配置JAVA执行组件,如下图所示 3:编写JAVA执行组件,如下图所示package ponent.impl;import com.sgcc.uap.serverScript.facadeScript.ScriptCharacterOSGIBridge;import com.sgcc.uap.serverScript.groovyEngine.exception.ScriptDispatchException;public class TestBean implements ScriptCharacterOSGIBridgepublic Object dispatch(Object ob) throws ScriptDispatchException / TODO Auto-generated method stubSystem.out.println(TestBean getScriptInstance);return true;4:在任务调度前端页面中通过脚本调用JAVA执行组件并调试3.1.9 验证集成执行组件服务配置完成后,执行组件bundle(ponent)会自动发布两个Rest服务,其中一个功能为测试并检查服务ID。组件访问地址组成:http:/ip:port/系统客户端名称/bundle名称/过滤资源字符串/rest资源名1级/ rest资源名2级/服务ID,即:88:9998/sguap-client/taskdispatchcomp/rest/taskcom/components/testTaskService。在非IE浏览器地址栏输入地址rest地址,本案例以Google chrome测试端,例下: 输入正确地址Rest组件输入:88:9998/sguap-client/taskdispatchcomp/rest/taskcom/components/testTaskService结论:收到Json数据,组件配置成功。WebService组件输入:http:/ip:port/sguap-client/BussinessRemote/services/ITaskDispatchWebService?wsdl结论:该WebService可用。 可能出现的错误.1 输入地址正确地址,将serviceId 填写错误88:9998/sguap-client/taskdispatchcomp/rest/taskcom/components/testTaskServicexxx结论:收到Json数据,组件配置成功,输入ServiceID(红字部分)找不到。.2 输入IP或端口错误88:9898/sguap-client/taskdispatchcomp/rest/taskcom/components/testTaskService结论:无法连接到服务器。.3 输入系统客户端名称错误或Rest资源名错误88:9998/sguap-clientX/taskdispatchcomp/rest/taskcom/components/testTaskService88:9998/sguap-client/taskdispatchcomp/rest/taskcomx/components/testTaskService88:9998/sguap-client/taskdispatchcomp/rest/taskcom/componentsX/testTaskService结论:无法找到服务器相应的WEB资源服务。.4 输入错误的执行组件bundle名称88:9998/sguap-client/taskdispatchcompX/rest/taskcom/components/testTaskService结论:UAP无法找到OSGI相应的模块项目。.5 输入错误的过滤资源字符串88:9998/sguap-client/taskdispatchcomp/restx/taskcom/components/testTaskService结论:UAP资源定位是发生错误。4 组件定义4.1 执行组件分组4.1.1 功能说明在当前用户权限下,可进行执行组件分组操作,编辑分组名称并保存,在左侧导航树中显示新建的执行组件分组,利于分组管理维护。4.1.2 操作说明1. 在“任务调度维护”页面,点击【任务定义-组件定义】按钮,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时性建筑施工方案
- 长治网络营销策划方案
- 商场封闭管理应急预案方案
- 庆阳铁艺大门施工方案
- 建筑方案设计标评审表
- 美术教学活动策划方案格式
- 孔府建筑配色方案设计理念
- 中学绿色建筑方案设计意图
- 安顺咨询网络推广方案
- 社区记忆建筑方案设计案例
- GB 23466-2025听力防护装备的选择、使用和维护
- 人教PEP版(2024)四年级上册英语-Unit 3 Places we live in 单元整体教学设计(共6课时)
- 华为信息安全管理培训课件
- 贵阳市殡仪服务中心招聘考试真题2024
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 煤改电工程施工质量监控方案和措施
- 布病的护理教学课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 公司培训防诈骗知识宣传课件
- 2025年全国保密教育线上培训考试试题库完整答案附带答案详解
评论
0/150
提交评论