如何在 Blue Prism 中查找/计算未来的时间表 - 跟进

问题描述

我有一个关于如何在 Blue Prism 中计算未来时间表的问题。我发现 this thread 非常有帮助,但当我自己深入研究时,似乎文章中没有回答一个空白。

假设我有一个每周计划,即在周一至周三运行的日历的最后一个工作日每周运行一次。

查询会返回周期1,周期单位3,开始和结束日期,开始和结束点分别是0和86399,dayset是28对应Mon-Wed(由于日历) .

我的问题是,从这些点我怎么知道我应该只在最后一个工作日(周三)跑步,而不是在周一或周二跑步?通常我可以使用开始日期并添加周数直到我到达当前周,但在这种情况下,开始日期是星期一,但由于指定了最后一个工作日,它只会在星期三开始计划。是否还有其他数据丢失,或者我是否必须避免创建这样的计划?

Example of Schedule

解决方法

为了确定具有以下触发器的每周和每月计划(不适用于其他计划类型):

  • 日历中的第一个/最后一个工作日
  • 每月的第一/最后/第二/第三/第四/第五插入星期几

必须附加来自链接文章的 SQL 查询以添加列“nthofmonth”

SELECT bpaschedule.name,period,unittype AS periodunit,startdate,enddate,startpoint,endpoint,COALESCE(workingweek,dayset) AS dayset,nthofmonth
FROM   bpascheduletrigger
       LEFT JOIN bpaschedule ON ( bpascheduletrigger.scheduleid = bpaschedule.id )
       LEFT JOIN bpacalendar ON bpacalendar.id = calendarid
WHERE  retired = 0
       AND bpaschedule.NAME IS NOT NULL
       AND ( enddate > Getdate() OR enddate IS NULL )
       AND ( ( unittype = 0 AND startdate > Getdate() ) OR unittype != 0 )
ORDER  BY scheduleid

该值用于确定first/last/second/third/fourth/fifth的值。如果计划不是每周或每月计划,或者您的每月/每周计划不使用需要选择这些值之一的触发器,则此列的值将为 0。

Not used  =  0
Last  =  -1
First  =  1
Second  =  2
Third  =  3
Fourth  =  4
Fifth  =  5

例如,一个查询返回周期为 1,周期单位为 3,开始和结束日期,开始和结束点分别是 0 和 86399,一个 dayset 是 28 对应于 Mon-Wed(由于Calendar),nthofmonth 为 -1 将对应于在所选日历的最后一个工作日(每周三)运行的每周计划。

如果 nthofmonth 的值为 1,则在星期一为 Weekly。

另一个例子,每月第三个星期二运行的日历对应于周期 1,周期单位为 4,起点和终点分别为 0 和 86399,日期集为 4,nthofmonth 为 3。