首页 > 解决方案 > 如何在 Blue Prism 中查找/计算未来的时间表 - 后续行动

问题描述

我有一个关于如何在 Blue Prism 中计算未来时间表的问题。我发现这个线程非常有帮助,但是当我自己深入研究时,似乎有一个差距在文章中没有得到回答。

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

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

我的问题是,我怎么知道我应该只在最后一个工作日跑步,周三,而不是周一或周二?通常我可以使用开始日期并添加几周,直到我到达本周,但在这种情况下,开始日期是星期一,但由于指定了最后一个工作日,它只会在星期三开始时间表。我是否缺少另一条数据,或者我是否必须避免创建这样的时间表?

时间表示例

标签: rpablueprism

解决方案


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

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

必须附加链接文章中的 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

该值用于确定第一/最后/第二/第三/第四/第五的值。如果计划不是每周或每月计划,或者您的每月/每周计划不使用需要选择这些值之一的触发器,则此列的值将为 0。

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

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

如果 nthofmonth 值为 1,则它将是每周一。

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


推荐阅读