Caché中任务的实现

在Caché中,可以设置定时执行的任务,即执行一个类方法或者Routine函数。以下内容来自Caché帮助文档中类参考(Class Reference)中的%System.Task。由于原文比较简单,就不翻译了。但有时候数据库的其它问题会影响到任务的执行,我就遇到过,建好的任务从某天起不能运行了,之前数据库有过改动,由于是生成库,就没有查找原因,希望使用任务的朋友注意这个问题。

The following example schedules a subroutine call with no parameters (e.g. DO GETDATA^TEST). It is scheduled (by default) to run every day at 12 midnight.

 s x=##Class(%SYSTEM.Task).%New()  s x.Name="Test Task"  s x.ExecuteCode="Do GETDATA^TEST"  S x.NameSpace="USER"  s rc=x.%Save()

The following example schedules a Function call with 2 parameters (e.g. s Status=$$GETDATA^TEST("TESTSTRING1",20)). It is scheduled to run every day at 4 am.

 s x=##Class(%SYSTEM.Task).%New()  s x.Name="Test Task"  s x.NameSpace="USER"            ; Assign to namespace  s x.ExecuteCode="s Status=$$GETDATA^TEST(""TESTSTRING1"",20)"  s x.DailyStartTime=14400  ;Start at 4 am.  s rc=x.%Save() The following example schedules a Function call with 2 parameters (e.g. s Status=$$GETDATA^TEST("TESTSTRING1",20)). It is scheduled to run once an hour every day between 8 am and 5 pm.

 s x=##Class(%SYSTEM.Task).%New()  s x.Name="Test Task"  s x.NameSpace="USER"        ; Assign to namespace  s x.ExecuteCode="Set Status=$$GETDATA^TEST(""TestString"",20)"  s x.DailyFrequency=1  ;Several times a day  s x.DailyFrequencyTime=1 ;hourly  s x.DailyIncrement=1  ;Every hour  s x.DailyStartTime=28800 ;Start at 8:00 am  s x.DailyEndTime=61200  ;Until 5:00 pm  s rc=x.%Save() The following example schedules a Function call with no parameters (e.g. s Status=$$GETDATA^TEST()). It is scheduled to run once a week on Monday at 8 am.

 s x=##Class(%SYSTEM.Task).%New()  s x.Name="Test Task"  s x.NameSpace="USER"        ; Assign to namespace  s x.ExecuteCode="S Status=$$GETDATA^TEST()"  s x.TimePeriod=1   ;Weekly  s x.TimePeriodEvery=1  ;Every week  s x.TimePeriodDay=2   ;On Monday  s x.DailyStartTime=28800  ; At 8:00 am  s rc=x.%Save() The following example schedules a Function call with no parameters (e.g. s Status=$$GETDATA^TEST()). It is scheduled to run the last day of every month at 8 am and 5 pm.

 s x=##Class(%SYSTEM.Task).%New()  s x.Name="Test Task"  s x.NameSpace="USER"        ; Assign to namespace  s x.ExecuteCode="Set Status=$$GETDATA^TEST()"  s x.TimePeriod=2   ;Monthly  s x.TimePeriodEvery=1  ;Every Month  s x.TimePeriodDay=31  ;On the last day  s x.DailyStartTime=28800  ;At 8:00 am  s x.DailyFrequency=1  ;Several times a day  s x.DailyFrequencyTime=1 ;hourly  s x.DailyIncrement=9  ;Every 9 hours  s x.DailyEndTime=61200  ;Until 5:00 pm  s rc=x.%Save()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值