Ensemble中Task的使用

在M语言中,面对需要定时执行某项的操作的需求,我们可以使用M语言中自由的Task类实现,其继承自%SYS.Task.Definition类,可以使用TaskManager管理。

我们可以设置以下属性给任务,实现我们的目标,例如在某天某个时间点执行一次,或是每隔一段时间执行/// 任务计划(每天)
/// pDailyFrequency=0 表示每天运行一次
/// pDailyFrequency=1 表示在指定时间范围内运行多次
/// pDailyFrequencyTime=0 表示间隔时间单位为分钟
/// pDailyFrequencyTime=1 表示间隔时间单位为小时
/// pDailyIncrement 表示间隔时间
/// pDailyStartTime 表示运行开始时间,如8:00
/// pDailyEndTime 表示运行结束时间,如18:00

这些都是Task的属性。下面给个简单的例子

Class STUDY.Task Extends %SYS.Task.Definition
{

ClassMethod CreateTask()
{
task = ##Class(%SYS.Task).%New()
task.Name = ..%ClassName(1)
task.TaskClass = ..%ClassName(1) // 当前任务类名
task.NameSpace = $zu(5) // 指明运行的Namespace
task.DailyFrequency = 1 //0为每天运行一次,1为每天运行若干次
task.DailyFrequencyTime = 0 //run every x minutes
task.DailyIncrement = 1 //run every 1 minutes
task.DailyStartTime = $zth("15:50")
task.DailyEndTime = $zth("16:00")
task.Expires = 0 // 0表示计划的任何时候都会运行
sc = task.%Save()

taskID = ##Class(%SYS.Task).FindId(..%ClassName(1))
if 'taskID {
"Can't find the task specified"
}
sc = ##Class(%SYS.Task).RunNow(taskID)
}
/// 执行的任务
Method OnTask() As %Status
{
 ^taskStr = ""

  ^taskStr = ^taskStr_"[---Patient Task Creating---]"_"task is running now "_$zdt($h,3)_":"_..%ClassName()
   
  $$$OK
}

}

上面为在控制台看到任务的详细信息

以上为监控到的任务运行情况,由于expires设置为0

 

Whether this entry expires.

Expiration is only checked if this flag is set to 1.

 Expiration is determined by whichever is first:

1) The current time passed the next submit time.

2) Expiration Offsets (Days, Hours, Minutes).

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值