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