com.bstek.bdf2.job.model.JobDefinition
[dataTypeCalendar]
$${this.id}
bdf2.jobMaintain#loadCalendars
bdf2.jobMaintain#loadJobHistories
[$dataTypeJobHistory]
$${this.id}
20
bdf2.jobMaintain#loadJobParameters
$${this.id}
[$dataTypeJobParameter]
String
Date
开始日期
String
描述
120
2
值要在2~120之间
String
使用的BeanId
true
60
2
值要在2~60之间
String
Job名称
true
60
2
值要在2~60之间
Date
结束日期
String
String
Cron表达式
true
60
2
值要在2~60之间
当前状态
com.bstek.bdf2.job.model.JobCalendar
String
String
描述
120
2
长度需要在2~120之间
String
日期名称
true
60
2
长度需要在2~60之间
String
类型
weekly
星期中的某些天
monthly
月份中的某些天
holiday
具体日期
annual
每年都经历的日期
key
value
holiday
true
String
int
int
int
int
String
0
String
int
int
int
int
String
0
String
int
int
int
int
String
0
String
int
1
int
1
int
1
int
1
String
1
String
int
1
int
1
int
1
int
1
String
1
String
String
SUN
String
SUN
String
SUN
String
SUN
String
SUN
String
SUN
com.bstek.bdf2.job.view.job.CronDate
DateTime
执行日期
com.bstek.bdf2.job.view.job.JobInfo
String
可用的Job的BeanId
com.bstek.bdf2.job.model.JobCalendar
String
String
描述
120
2
长度需要在2~120之间
String
日期名称
true
60
2
长度需要在2~60之间
String
类型
weekly
星期中的某些天
monthly
月份中的某些天
holiday
具体日期
annual
每年都经历的日期
key
value
holiday
true
com.bstek.bdf2.job.model.JobHistory
String
异常消息
String
Date
执行开始时间
Y-m-d H:i:s
String
Date
执行结束时间
Y-m-d H:i:s
boolean
是否成功
com.bstek.bdf2.job.model.JobParameter
com.bstek.bdf2.job.model.JobParameter
String
String
String
属性名
true
1
60
长度需要在1~60之间
String
属性值
true
1
120
长度需要在1~120之间
self.insert({type:"all"});
dataTypeSecond
[$dataTypeJobCalendar]
bdf2.jobMaintain#loadAllCalendars
self.insert({type:"all"});
dataTypeMinute
self.insert({type:"all"});
dataTypeHour
self.insert({type:"all"});
dataTypeDay
self.insert({type:"all"});
dataTypeMonth
self.insert({type:"all"});
dataTypeWeek
[dataTypeJob]
20
bdf2.jobMaintain#loadJobs
[dataTypeJobInfo]
bdf2.jobMaintain#loadJobInfos
900
Job执行排除假期
菜单:
var ds=view.id("dataSetJob");
var jobData=ds.getData("#");
switch(arg.code){
case "+":
if(!jobData){
dorado.MessageBox.alert("请先选中一Job");
}else{
var state=jobData.get("state");
if(state!="stop" && state!="ready"){
dorado.MessageBox.alert("Job必须处于停止或待命时才能进行此操作");
}else{
view.id("dialogCalendarSelect").show();
}
}
break;
case "-":
var state=jobData.get("state");
if(state!="stop" && state!="ready"){
dorado.MessageBox.alert("Job必须处于停止或待命时才能进行此操作");
}else{
dorado.MessageBox.confirm("真的要删除当前日期",function(){
var calendarId=ds.getData("#.#calendars.id");
var action=view.id("ajaxActionSaveCalendar");
action.set("parameter",{calendarId:calendarId,jobId:jobData.get("id"),operation:"del"});
action.execute(function(){
jobData.reset("calendars");
});
});
}
break;
}
arg.processDefault=false;
dataSetJob
#.calendars
+,-
dataSetJob
#.calendars
true
name
desc
Job运行历史
菜单:
var data=view.id("dataSetJob").getData("#");
var selection=view.id("dataGridHistory").get("selection");
if(selection.length<1){
dorado.MessageBox.alert("请先选中要删除的历史");
return;
}
var jobHistoryIds=[];
selection.each(function(entity){
var id=entity.get("id");
jobHistoryIds.push(id);
});
dorado.MessageBox.confirm("真的要删除这些选中的历史",function(){
var action=view.id("ajaxActionDeleteHistory");
action.set("parameter",{jobHistoryIds:jobHistoryIds});
action.execute(function(){
data.reset("histories");
});
});
删除
url(skin>common/icons.gif) -40px 0px
删除勾选数据
80
if(view.id("dataSetJob").getData("#.#histories")){
view.id("dialogExceptionInfo").show();
}else{
dorado.MessageBox.alert("当前没有选中记录,没有异常消息可供查看");
}
#.histories
dataSetJob
true
multiRows
双击以查看异常消息
startDate
endDate
var successful=arg.data.get("successful");
if(successful){
arg.dom.innerHTML="<font color='green'>成功</font>";
}else{
arg.dom.innerHTML="<font color='red'>失败</font>";
}
successful
bdf2.jobMaintain#deleteJobHistory
操作成功
dataSetJob
#.histories
pages
Job运行参数
false
var ds=view.id("dataSetJob");
var state=ds.getData("#.state");
switch(arg.code){
case "+":
if(state!="stop" && state!="ready"){
dorado.MessageBox.alert("Job必须处于停止或待命时才能进行此操作");
}else{
var jobId=ds.getData("#.id");
var data=ds.getData("#.parameters");
data.insert({jobId:jobId});
}
break;
case "-":
if(state!="stop" && state!="ready"){
dorado.MessageBox.alert("Job必须处于停止或待命时才能进行此操作");
}else{
var data=ds.getData("#.#parameters");
data.remove();
}
break;
}
arg.processDefault=false;
+,-
dataSetJob
#.parameters
保存
updateActionSaveParameters
url(skin>common/icons.gif) -140px -20px
#.parameters
dataSetJob
name
name
value
value
bdf2.jobMaintain#saveJobParameters
操作成功
dataSetJob
#.parameters[#dirty]
switch(arg.code){
case "+":
view.id("dataSetJob").insert();
view.id("dialogJob").show();
break;
case "-":
var data=view.id("dataSetJob").getData("#");
if(data.get("state")!=="stop" && data.get("state")!=="ready"){
dorado.MessageBox.alert("要删除的Job必须为停止或待命状态,否则不能删除");
}else{
dorado.MessageBox.confirm("真的要删除当前Job",function(){
data.remove();
view.id("updateActionSaveJob").execute();
});
}
break;
}
arg.processDefault=false;
dataSetJob
pages,+,-
var data=view.id("dataSetJob").getData("#");
if(data){
var state=data.get("state");
if(state=="running" || state=="run"){
dorado.MessageBox.alert("只有当Job状态为待命及停止时才可进行编辑操作");
return;
}
view.id("dialogJob").show();
}else{
dorado.MessageBox.alert("当前没有数据可供修改");
}
修改
url(skin>common/icons.gif) -200px 0px
var data=view.id("dataSetJob").getData("#");
if(data){
var state=data.get("state");
if(state=="running"){
dorado.MessageBox.alert("当前Job正处于启动中状态,不能再次执行启动动作");
return;
}
if(state=="run"){
dorado.MessageBox.alert("当前Job正处于启动状态,不能再次执行启动动作");
return;
}
dorado.MessageBox.confirm("真的要启动当前任务?",function(){
var action=view.id("ajaxActionRunJob");
action.set("parameter",{jobDefinitionId:data.get("id")});
action.execute(function(){
data.set("state","running");
data.setState(dorado.Entity.STATE_NONE);
});
});
}else{
dorado.MessageBox.alert("当前没有数据可供操作");
}
启动任务
url(skin>common/icons.gif) -180px -220px
var data=view.id("dataSetJob").getData("#");
if(data){
var state=data.get("state");
if(state=="stopping"){
dorado.MessageBox.alert("当前Job正处于停止中状态,不能再次执行停止动作");
return;
}
if(state=="stop"){
dorado.MessageBox.alert("当前Job正处于停止状态,不能再次执行停止动作");
return;
}
dorado.MessageBox.confirm("真的要停止当前任务?",function(){
var action=view.id("ajaxActionStopJob");
action.set("parameter",{jobDefinitionId:data.get("id")});
action.execute(function(){
data.set("state","stopping");
data.setState(dorado.Entity.STATE_NONE);
});
});
}else{
dorado.MessageBox.alert("当前没有数据可供操作");
}
停止任务
url(skin>common/icons.gif) -240px -220px
var select = view.get("#dataGridJob.selection");
if(select){
view.get("#dialogException").show();
}else{
$alert("请先选择需要执行的JOB");
}
url(>skin>common/icons.gif) -80px -0px
宕机处理
var data=view.id("dataSetJob").getData("#");
if(data){
var state=data.get("state");
if(state=="running" || state=="run"){
dorado.MessageBox.alert("只有当Job状态为待命及停止时才可进行编辑操作");
return;
}
view.id("dialogJob").show();
}else{
dorado.MessageBox.alert("当前没有数据可供修改");
}
dataSetJob
true
serverSide
true
singleRow
name
120
beanId
230
var state=arg.data.get("state");
if(state=="ready"){
arg.dom.innerHTML="<strong><font color='blue'>待命</font></strong>";
}
if(state=="running"){
arg.dom.innerHTML="<font color='blue'>启动中</font>";
}
if(state=="run"){
arg.dom.innerHTML="<strong><font color='green'>运行中</font></strong>";
}
if(state=="pausing"){
arg.dom.innerHTML="<font color='yellow'>暂停中</font>";
}
if(state=="pause"){
arg.dom.innerHTML="<strong><font color='yellow'>暂停</font></strong>";
}
if(state=="stopping"){
arg.dom.innerHTML="<font color='red'>停止中</font>";
}
if(state=="stop"){
arg.dom.innerHTML="<strong><font color='red'>停止</font></strong>";
}
state
state
100
false
cronExpression
160
false
desc
false
true
true
500
270
false
dataSetJob
*
right
100
name
name
beanId
beanId
triggerBean
cronExpression
cronExpression
triggerCron
desc
desc
TextArea
var dialog=view.id("dialogCron").show();
var cronExpr=view.id("dataSetJob").getData("#.cronExpression");
if(!cronExpr){
return;
}
var cron=cronExpr.split(" ");
if(cron.length<5){
dorado.MessageBox.alert("无法解析当前Cron表达式["+cronExpr+"]");
return;
}
view.id("autoFormPerSecond").set("visible",false);
view.id("autoFormRegionSecond").set("visible",false);
view.id("autoFormSpecificSecond").set("visible",false);
view.id("autoFormPerMinute").set("visible",false);
view.id("autoFormRegionMinute").set("visible",false);
view.id("autoFormSpecificMinute").set("visible",false);
view.id("autoFormPerHour").set("visible",false);
view.id("autoFormRegionHour").set("visible",false);
view.id("autoFormSpecificHour").set("visible",false);
view.id("autoFormPerDay").set("visible",false);
view.id("autoFormRegionDay").set("visible",false);
view.id("autoFormSpecificDay").set("visible",false);
view.id("autoFormPerMonth").set("visible",false);
view.id("autoFormRegionMonth").set("visible",false);
view.id("autoFormSpecificMonth").set("visible",false);
view.id("autoFormPerWeek").set("visible",false);
view.id("autoFormRegionWeek").set("visible",false);
view.id("autoFormSpecificWeek").set("visible",false);
view.id("autoFormLastWeek").set("visible",false);
var second=cron[0];
if(second=="*"){
view.id("dataSetSecond").getData().set("type","all");
}else{
var data=view.id("dataSetSecond").getData();
var region=second.split("-");
var per=second.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromSecond",region[0]);
data.set("toSecond",region[1]);
view.id("autoFormRegionSecond").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerSecond",per[0]);
data.set("perSecond",per[1]);
view.id("autoFormPerSecond").set("visible",true);
}else{
data.set("type","specific");
data.set("specificSecond",second);
view.id("autoFormSpecificSecond").set("visible",true);
}
}
//-------------------------
var minute=cron[1];
if(minute=="*"){
view.id("dataSetMinute").getData().set("type","all");
}else{
var data=view.id("dataSetMinute").getData();
var region=minute.split("-");
var per=minute.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromMinute",region[0]);
data.set("toMinute",region[1]);
view.id("autoFormRegionMinute").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerMinute",per[0]);
data.set("perMinute",per[1]);
view.id("autoFormPerMinute").set("visible",true);
}else{
data.set("type","specific");
data.set("specificMinute",minute);
view.id("autoFormSpecificMinute").set("visible",true);
}
}
//-------------------------
var hour=cron[2];
if(hour=="*"){
view.id("dataSetHour").getData().set("type","all");
}else{
var data=view.id("dataSetHour").getData();
var region=hour.split("-");
var per=hour.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromHour",region[0]);
data.set("toHour",region[1]);
view.id("autoFormRegionHour").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerHour",per[0]);
data.set("perHour",per[1]);
view.id("autoFormPerHour").set("visible",true);
}else{
data.set("type","specific");
data.set("specificHour",hour);
view.id("autoFormSpecificHour").set("visible",true);
}
}
//-------------------------
var day=cron[3];
if(day=="*" || day=="?"){
view.id("dataSetDay").getData().set("type","all");
}else if(day=="L"){
view.id("dataSetDay").getData().set("type","last");
}else{
var data=view.id("dataSetDay").getData();
var region=day.split("-");
var per=day.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromDay",region[0]);
data.set("toDay",region[1]);
view.id("autoFormRegionDay").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerDay",per[0]);
data.set("perDay",per[1]);
view.id("autoFormPerDay").set("visible",true);
}else{
data.set("type","specific");
data.set("specificDay",day);
view.id("autoFormSpecificDay").set("visible",true);
}
}
//-------------------------
var month=cron[4];
if(month=="*"){
view.id("dataSetMonth").getData().set("type","all");
}else{
var data=view.id("dataSetMonth").getData();
var region=month.split("-");
var per=month.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromMonth",region[0]);
data.set("toMonth",region[1]);
view.id("autoFormRegionMonth").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerMonth",per[0]);
data.set("perMonth",per[1]);
view.id("autoFormPerMonth").set("visible",true);
}else{
data.set("type","specific");
data.set("specificMonth",month);
view.id("autoFormSpecificMonth").set("visible",true);
}
}
//-------------------------
var week=cron[5];
if(week=="*" || week=="?"){
view.id("dataSetWeek").getData().set("type","all");
}else if(week.indexOf("L")>0){
var data=view.id("dataSetWeek").getData();
data.set("type","last");
var d=week.substring(0,1);
if(d){
data.set("last",d);
}
view.id("autoFormLastWeek").set("visible",true);
}else{
var data=view.id("dataSetWeek").getData();
var region=week.split("-");
var per=week.split("/");
if(region.length>1){
data.set("type","region");
data.set("fromWeek",region[0]);
data.set("toWeek",region[1]);
view.id("autoFormRegionWeek").set("visible",true);
}else if(per.length>1){
data.set("type","per");
data.set("fromPerWeek",per[0]);
data.set("perWeek",per[1]);
view.id("autoFormPerWeek").set("visible",true);
}else{
data.set("type","specific");
data.set("specificWeek",week);
view.id("autoFormSpecificWeek").set("visible",true);
}
}
view.id("autoFormCronExp").set("entity",{cron:cronExpr});
view.id("dialogJobBeans").show();
true
true
500
500
dataSetJobInfo
true
beanId
bdf2.jobMaintain#saveJobs
操作成功
dataSetJob
bdf2.jobMaintain#stopJob
操作成功
bdf2.jobMaintain#runJob
操作成功
400
200
JOB宕机处理
false
dateDropDown1
Date
-- 选择宕机时间 --
todoJob#todo
执行统计中……