微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Blue Prism 中查找/计算未来的时间表 期间开始和结束日期起点和终点白天

如何解决如何在 Blue Prism 中查找/计算未来的时间表 期间开始和结束日期起点和终点白天

如何从 Blue Prism 检索未来计划的时间表/日历(如控制选项卡中所示)?

在 Blue Prism sql 数据库中,我已经能够找到一些与调度相关的表(例如 BPAScheduleBPAScheduleTrigger,等等),但似乎没有一个包含有关未来时间表/日历事件的信息。这些信息是否存储在任何地方?如果没有,我如何使用可用数据以编程方式重建时间表?

解决方法

Blue Prism 数据库仅存储每个计划的重复模式数据;它不存储时间表本身——而是即时计算时间表。

以下 SQL 查询返回我们自己以编程方式重建 Blue Prism 时间表所需的所有数据

SELECT bpaschedule.name,period,unittype AS periodunit,startdate,enddate,startpoint,endpoint,COALESCE(workingweek,dayset) AS dayset
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 

(此查询仅检索将来至少发生一次的活动计划)。

示例输出

姓名 期间 周期单位 开始日期 结束日期 起点 端点 白天
进程A 10 6 2019-03-08 23:00:00.000 NULL 30600 66000 4
进程B 10 6 2019-04-11 07:15:00.000 NULL 25500 29700 62
进程C 1 2 2020-07-22 15:59:00.000 NULL 0 86399 62
流程 D 1 3 2020-05-08 16:50:00.000 2021-06-06 14:20:00.000 0 86399 32
流程 E 1 3 2020-04-06 08:00:00.000 NULL 0 86399 2
流程 F 1 3 2020-04-07 06:45:00.000 NULL 0 86399 4

许多列的含义相当不透明,所以让我们剖析它们...

期间

期间列表示相关期间单位中的期间时间。

Period unit 取七个值之一,如下所示:

0 = Once
1 = Hour
2 = Day
3 = Week
4 = Month
5 = Year
6 = Minute

period 为 17,periodunit 为 6,因此意味着“每 17 分钟安排一次”。

开始和结束日期

对于所有计划,这些值表示计划有效的日期时间范围。

然后,根据其他参数,从 startdate 开始的时间可能表示计划运行的时间。 startdateperiod = 1 时(或者,当 startpointendpoint 分别为 0 和 83999 时)像这样使用.

当计划设置为永不过期时,计划的

enddateNULL

起点和终点

当时间表设置为 Hourly / Minutely 时,必须指定日内开始和结束时间(在 Blue Prism 控制室中)。 Startpointendpoint 代表这些时间,以秒为单位,从 00:00 开始。

进程 B 的起点25500 秒。这相当于 7 小时 4 分 59 秒 - 换句话说,该过程首先在 07:04:59AM 开始。

白天

Dayset 表示 bitset 的整数值,其中每个位对应于一周中的一天:

None = 0
Sun = 1
Mon = 2
Tue = 4
Wed = 8
Thu = 16
Fri = 32
Sat = 64

因此,62 天集(如表中所示)对应于周一至周五(Mon | Tue | Wed | Thu | Fri 的按位 OR 的整数值);仅在周一和周四运行的日程安排的日期是 18 (2+16)。


将所有这些放在一起,自然语言中的第 1 行相当于:

进程 A 在星期二的 08:30:00 和 18:20:00 之间每 10 分钟运行一次(无结束日期)。

...最后一行相当于:

流程 E 每周周五早上 8 点无限期运行。


现在由您将此处讨论的逻辑转换为代码,将来自 SQL 查询的 Blue Prism 计划条目转换为可通过编程方式查询的重复(日历)事件。考虑使用执行重复计算的库;这样的库应该可以轻松回答以下问题:

这个时间表下次运行是什么时候?

日期 1 和日期 2 之间运行哪些时间表?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。