任务中心技术红皮书.docx

上传人:b****5 文档编号:28525931 上传时间:2023-07-18 格式:DOCX 页数:26 大小:266.61KB
下载 相关 举报
任务中心技术红皮书.docx_第1页
第1页 / 共26页
任务中心技术红皮书.docx_第2页
第2页 / 共26页
任务中心技术红皮书.docx_第3页
第3页 / 共26页
任务中心技术红皮书.docx_第4页
第4页 / 共26页
任务中心技术红皮书.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

任务中心技术红皮书.docx

《任务中心技术红皮书.docx》由会员分享,可在线阅读,更多相关《任务中心技术红皮书.docx(26页珍藏版)》请在冰豆网上搜索。

任务中心技术红皮书.docx

任务中心技术红皮书

 

NCv6.1任务中心技术红皮书

 

 

UAP中心编著

目录

第一章前言2

第二章后台任务类型注册3

第三章后台任务部署6

第四章后台任务监控11

第五章后台任务日志13

第六章我的任务15

第七章业务插件开发指南16

7.1预警插件开发16

7.2任务插件开发16

第八章附录19

8.1数据库表19

8.2插件类示例21

8.3其他说明21

8.4后台任务开发接口21

8.5VO对象23

第一章前言

本章内容概要:

●简介

 

在满足企业信息化需求的过程中,除了通过人机交互来驱动完成的业务功能外,总有一些定时的自动任务也需要处理。

针对这种需求,在NC原有预警平台基础上,NC推出了后台任务中心。

后台任务中心负责对后台任务的管理,后台任务是系统自动执行的一个业务处理过程。

通过任务中心可以完成对后台任务类型的注册、后台任务条目的部署,以及执行情况和消息发送情况的查询。

 

第二章后台任务类型注册

本章内容概要:

●后台任务类型注册

 

后台任务中心首先提供业务插件的注册功能,也就是后台任务类型注册,由产品开发或二次开发人员使用。

后台任务类型就是一种后台任务的一个插件类型(具体如何开发插件见“后台任务插件类接口”章节)。

它目的是对某个业务或操作的抽象,其可以定义一系列阈值。

(这里只是定义,真正的值是在任务条目部署的时候来设置的)。

任务体的执行实际上就是业务插件类的执行。

定义一个后台任务类型需要提供:

名称、所属系统、业务插件、描述、阈值名称、编辑类型、参照名称(如果编辑类型为参照)。

后台任务类型注册节点位置:

应用管理平台——>开发配置工具——>系统平台——>后台任务类型注册

 

图2.1台任务类型注册节点

图2.2台任务类型注册的信息

后台任务类型注册的信息包括:

名称,所属开发模块,业务插件实现类,以及阈值条件定义。

其中业务插件类是要求实现了nc.bs.pub.taskcenter.IBackgroundWorkPlugin接口的实现类的完整类名。

图2.3台任务类阈值条件页签

在阈值条件页签,组织类型用于限定阈值的参照取值范围,这样在增加该类型的后台任务条目时,通过选择相应的组织,来缩小参照类型阈值的取值范围。

 

第三章后台任务部署

本章内容概要:

●后台任务部署

 

后台任务部署是对后台任务条目的定义和配置,一般由实施人员或用户根据具体的业务环境和需要来定义。

后台任务条目基于后台任务类型进行编辑,通过选择后台任务类型,并设置该后台任务类型中需要用户设置的阈值变量,以及定义后台任务方式来实现具体的后台任务。

在一个后台任务类型下,可以根据不同的业务情况定义多个后台任务条目。

后台任务方式包括产生方式和发送方式。

产生方式控制后台任务的发生时间,有即时和定时两种。

发送方式是定义后台任务以何种方式发送给用户,有消息中心、邮件、短信三种。

根据注册的任务类型,通过系统提供的后台任务部署,配置好运行参数、时间配置和消息方式等属性后,具体的任务条目就产生了,同时它被部署到后台的调度引擎进行调度。

后台任务条目是调度引擎调度执行的最小单位。

后台任务的服务线程定时读取任务条目信息,根据条目中设置的条件,调用相应的后台任务插件,与业务信息相比较,当符合条件时,就会产生后台任务信息,并根据相应配置进行信息发送。

后台任务条目配置节点位于:

企业建模平台——>系统平台——>后台任务中心——>后台任务条目配置

 

图3.1后台任务部署

图3.2条目信息

后台任务条目的注册与V5类似,主要分为4个页签的信息,其中后台任务定义页签中,可选择已配置的消息模板,用于对消息文件内容的定义。

后台任务消息是后台任务在业务处理结束后,主动推送给任务相关人的任务执行报告。

后台任务消息仅支持文本和附件,不支持联查数据和后续操作。

后台任务消息的触发点是后台任务执行完毕后,条件可以是成功、不成功等任务处理结果,内容由任务组件提供+系统信息共同组成。

组织单元字段,用于限定阈值参照的范围,组织单元参照的数组,由注册的后台任务类型决定。

如:

A后台任务类型在注册时,指定了其组织类型为公司,则在注册A类型的后台任务条目a时,其组织单元参照的取值为公司参照,当指定组织单元数据,如公司1时,其相关的后台任务取值,均为公司1下的相关数据。

新增条目定义,会弹出如下对话框:

图3.3后台任务条目设置-后台任务定义

图3.4后台任务条目设置-参数设置

图3.5后台任务条目设置-触发配置

图3.6后台任务条目设置-消息接收配置

 

第四章后台任务监控

本章内容概要:

●后台任务监控

 

后台任务中心提供对运行期的任务的监控和管理。

该处仅仅监控任务中心产生的任务,并不是对调度引擎中三个队列(任务队列、可执行队列、运行队列)中所有的任务进行浏览和管理。

 

图4.1调度引擎中任务状态图

图4.2后台任务监控主界面

后台任务监控显示了所有在调度中,未执行完成的业务后台任务。

其中,对处于等待状态的任务,可以通过点击执行按钮,强制执行选中的任务,提前了下次执行的时间。

对处于等待和可执行状态的任务,可以删除该任务实例。

任务的状态有如下几种:

新生成时状态为“等待”,开始执行后为“执行中”,成功执行后为“完成”,执行过程出错为“异常”。

第五章后台任务日志

本章内容概要:

●后台任务日志

 

该处是对于通过后台任务部署的任务执行结果进行日志,并不是对调度引擎所有执行的任务进行跟踪。

主要记录任务实体的开始执行时间、结束执行时间、执行结果、说明、条目定义对象。

任务日志是在任务执行体ITaskBody.execute()内完成。

但对于不是通过任务中心部署的任务,无法日志到数据库中。

 

图5.1后台任务日志主界面a

可多选行后批量删除日志记录。

双击日志行,可查看其任务条目定义。

但对于临时任务,无法联查条目。

图5.2后台任务日志主界面b

后台任务日志显示了任务的每次执行结果,其中结果列显示了该次执行的结果(成功/失败),如果失败,说明列显示了错误信息。

第六章我的任务

本章内容概要:

●我的任务

 

1.临时任务提交

任务中心支持通过各业务组的代码中即时部署后台任务条目,以解决异步任务调度。

这种任务就叫临时任务。

临时任务不需要预先注册任务类型。

产品组在各自产品界面上点击“异步XX”按钮,由产品组决定是否弹出对话框来输入实参或触发时间配置,之后调用平台接口进行任务的部署。

任务部署后,不会持久化任务条目,只向调度引擎新增任务实体。

2.异步报表

V57和V6新增了异步报表。

异步报表可以认为是临时任务的一种应用,主要用于离线查询。

用户可以返回当前操作,通过启动一个后台任务获得查询结果,并将其写入数据库,同时在消息中心产生一条消息。

详细内容可参见《异步报表开发指南》。

 

第七章业务插件开发指南

本章内容概要:

●任务插件开发

 

任务的业务插件的实现接口如下图所示。

7.1预警插件开发

见《NC61-预警平台技术红皮书.doc》文档。

7.2任务插件开发

 

PublicinterfaceIBackgroundWorkPlugin

{

/**

*任务插件执行体

*@paramcontext执行环境

*@throwsBusinessException

*/

PreAlertObjectexecuteTask(BgWorkingContextcontext)throwsBusinessException;

}

参数BgWorkingContext包含了后台任务插件类的上下文环境,主要的属性值如表格所示:

/**当前登录日期*/

privateUFDateloginDate=null;

/**备份数据源*/

privateStringdatasource=null;

/**具体一些阈值的实参.对应结构为key:

阈值字段名,value:

真实的值*/

privateLinkedHashMapkeyMap=newLinkedHashMap

Object>();

privateStringgroupId=null;//集团

/**当前用户,即部署任务的用户*/

privateStringpk_user;

privateStringpreAlertTypeName;//后台任务类型名称

privateStringregistryName;//条目名称;

privateStringregistryFileName;//条目的后台任务文件名;对应后台任务则为任务描述;

privateintpreAlertMode;//后台任务模式--登录/触发点/按钮seedefinitionin

theAlertMethod

/**

*插件自己解析的数据.适用于代码级直接调用时传递

*/

privateObjectuserData=null;

privateStringlogString=null;//插件需要的日志信息(持久化到数据库)

/**条目的PK*/

privateStringpk_registry;

返回值是PreAlertObject类型,定义如下:

busiObj为业务实体对象,若在消息模板分类中为该预警关联了业务实体并且在预警条目中使用了消息模板,则在构造消息时使用该对象来解析消息模板中配置的元数据。

busiCalculater为业务函数计算器,在配置消息模板上可能会使用到一些自定义的函数,使用该对象来计算函数的值。

PreAlertType为枚举类型,标记返回值的类型。

publicenumPreAlertReturnType{

RETURNNOTHING(0),

RETURNOBJECT

(1),

RETURNFORMATMSG

(2),

RETURNMESSAGE(3),

RETURNDATASOURCE(4),

RETURNMULTILANGTEXT(5),

RETURN_MULTIPLE_RECEIVER_OBJECT(6);

publicStringtoString(){

switch(this){

caseRETURNMESSAGE:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000000")/*插件返回字符串*/;

caseRETURNFORMATMSG:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000001")/*插件返回格式化字符串*/;

caseRETURNOBJECT:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000002")/*插件返回对象*/;

caseRETURNDATASOURCE:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000003")/*消息模板数据源*/;

caseRETURNNOTHING:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000004")/*插件返回空值*/;

caseRETURNMULTILANGTEXT:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-000005")/*多语文本*/;

caseRETURN_MULTIPLE_RECEIVER_OBJECT:

returnNCLangRes4VoTransl.getNCLangRes().getStrByID("prealertres","PreAlertReturnType-0000")/*多接收者返回值*/;

default:

thrownewRuntimeException();

}

}

}

第八章附录

本章内容概要:

●数据库表

●插件类示例

●后台任务开发接口

●VO对象

8.1数据库表

pub_alertregistry表增加消息模板,pk_corp——>groupid

字段名

字段类型

中文标签

是否可空

pk_alertregistry

CHAR(20)

后台任务条目主键

NOT

pk_alerttype

CHAR(20)

对应的后台任务类型主键

NULL

alertname

VARCHAR(50)

后台任务条目名称

NULL

filename

VARCHAR(50)

信息文件名称

NULL

groupid

CHAR(20)

集团主键

NULL

enabled

CHAR

(1)

是否激活

NULL

language

VARCHAR(20)

提示语言种类

NULL

description

VARCHAR(256)

后台任务描述信息

NULL

registrytype

NUMERIC

注册类型(?

NULL

creator

VARCHAR(50)

创建人

NULL

maxlog

NUMERIC

最大日志数(?

NULL

pk_messagetemplate

VARCHAR(50)

消息模板主键

NULL

istiming

CHAR

(1)

是否定时

NULL

scheduletaskid

VARCHAR(30)

调度引擎任务id号

NULL

messagefile

VARCHAR(80)

实际消息文件名称

NULL

accountpk

VARCHAR(20)

主体帐簿标识

NULL

message

VARCHAR(256)

消息

NULL

reportlikework

Blob

异步报表实体对象

NULL

info1

VARCHAR2(50)

异步报表信息1

NULL

..

..

..

..

info12

VARCHAR2(50)

异步报表信息12

NULL

ts

CHAR(19)

时间戳

NULL

后台任务类型

pub_alerttype

后台任务类型主表

pub_alerttype_b

后台任务类型子表(阈值)

后台任务条目

pub_alertregistry

后台任务条目主表

pub_alerttypeconfig

对应类型配置(阈值配置)表

pub_alertsendconfig

发送发式配置表

pub_timeconfig

时间配置(主要是定时)

后台任务消息

pub_alertmessage

后台任务消息索引表

引用其它平台表

Pub_messageinfo

消息中心

8.2插件类示例

publicclassSampleBackgroundPluginimplementsIBackgroundWorkPlugin{

publicPreAlertObjectexecuteTask(BgWorkingContextbgwc)

throwsBusinessException{

HashMapkm=bgwc.getKeyMap();

Set>name=km.entrySet();

for(Entryentry:

name){

System.out.print(entry.getKey()+"=");

System.out.print(entry.getValue()+"\n");

}

//leijun+

//longtimeWork(50000);//hzg--

PreAlertObjectretObj=newPreAlertObject();

retObj.setReturnObj("业务插件成功执行完毕.");

retObj.setReturnType(PreAlertReturnType.RETURNMESSAGE);

returnretObj;

}

8.3其他说明

1.消息模板功能待续

2.功能节点使用,可参见NCV5-后台任务平台技术红皮书(第二、三、四章)

8.4后台任务开发接口

(查询)IPrealertConfigQueryService.queryRegistryByPKAgg(Stringpk)

前提:

后台任务主键已知;

参数:

后台任务主键

返回值:

任务条目VO(复合对象)

功能:

通过任务条目pk,查询任务:

/**

*通过PK查找预警条目(聚合查询)

*

*@parampk

*@return

*@throwsBusinessException

*/

publicAlertregistryVOqueryRegistryByPKAgg(Stringpk)throwsBusinessException;

(新增)IPreAlertConfigService.insertAlertRegistries(AlertregistryVO[]alertRegistries)

alertRegistries)

前提:

任务类型已经存在;

参数:

AlertRegistryVO

返回值:

后台任务主键(如果VO中已经设置主键,则将其返回)

功能:

该接口完成预警条目或者后台任务的新增。

主要动作包括:

1,增加条目信息

2,如果是定时类型,增加条目时间设置信息

3,加入条目类型配置(阈值)

4加入发送方式配置

5添加到调度引擎

/**

*增加预警条目

*@paramalertRegistries预警条目VO集合

*@return新增的条目PK集合

*@throwsBusinessException*

*@inheritDoc算法描述1,增加条目信息2,如果是定时类型,增加条目时间设置信息3,加入条目类型配置4,加入发送配置

publicString[]insertAlertRegistries(AlertregistryVO[]alertRegistries)throwsBusinessException;

(更新)IPreAlertConfigService.updateAlertRegistries(AlertregistryVO[]alertRegistries)

前提:

已知任务条目VO;

参数:

AlertRegistryVO

功能:

该接口完成预警条目或者后台任务的更新,如更改任务执行时间等。

/**

*修改预警条目

*

*@paramalertRegistries预警条目VO集合

*@throwsBusinessException

*@inheritDoc算法描述1,修改条目信息2,修改条目时间设置信息

*2.1,判断如果是定时类型,查找原来的定时时间设置,如果存在,删除,重新加入

*2.2,如果不是定时类型,查找原来的定时时间设置,如果存在,删除3,删除原来的类型配置,加入新的条目类型配置

*4,删除原来的发送配置,加入新的发送配置5,删除原来该条目产生的任务6,判断现在是否是定时条目,如果是,加入到调度任务中

*@return条目正确更新的条数.-1:

表示传进去的参数为null.

*/

publicintupdateAlertRegistries(AlertregistryVO[]alertRegistries)throwsBusinessException;

(新增2)IPreAlertConfigService.startBackgroundTask

前提:

任务类型已经存在

参数:

TimmingSettingVO,AlertTypeConfigVO,AlertsendConfigVO

功能:

完成后台任务条目的新增,功能与

(一)相同

/**

*@paramgroupId集团ID

*@paramalertName任务名称

*@parampk_tasktype后台任务类型主键

*@paramtimeSettingVO任务时间设置

*@paramtypeConfigVo任务阈值设置

*@paramsendConfigVo消息方式方式设置

*@return

*@throwsBusinessException

*后台任务提交接口,addby gaijfV6.0

*/

publicStringstartBackgroundTask(StringgroupId,StringalertName,Stringpk_tasktype,

TimingSettingVOtimeSettingVO,AlerttypeconfigVO[]typeConfigVo,

AlertsendconfigVO[]sendConfigVo)throwsBusinessException;

8.5VO对象

AlertRegistryVO

/**主键*/

privateStringpk_alertregistry;

/**任务名称*/

privateStringalertname;

/**英文名称*/

privateStringalertname2;

/**繁体中文名称*/

privateStringalertname3;

/**描述*/

privateStringdescription;

/**是否启用*/

privateUFBooleanenabled;

/**是否定时,false表示即时,true表示定时*/

privateUFBooleanistiming;

/**任务类型主键(必须),关联AlerttypeVO主键*/

privateStringpk_alerttype;

/**集团ID*/

private

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1