工作流自动化关注人们在做什么,但也担心当他们这样做。处理日期可能会非常棘手,特别是当涉及到电脑,因为细节和异常。本文地址公众假期,这是一个工作日计算棘手的部分工作流程。
假期请求批准
尽管它看似简单,但度假请求工作流自动化的业务流程可以说明许多棘手的细节。计算工作日也不例外。
度假请求开始一个简单的管理审批流程,并包括假期开始和结束日期。审批决策通常需要考虑两个问题。
- 员工不应该有原因了吗?
- 员工有足够的天的年假津贴?
第一个问题的答案取决于请求的休假日期,但第二个问题取决于这两个日期之间的工作日数量。默认的方法,也许是审批人查看日历数天,但他们可以让一个错误如果他们忘了占公共假日,例如。
更好的解决方案是自动计算,以便审批任务已经显示假期的数量要求,工作日的数量之间的假期的开始和结束日期(包容)。
工作日计算工作流
Signavio过程中治理,可以自动计算工作日工作流(通过添加JavaScript操作BPMN脚本任务)在批准前一步。
JavaScript操作计算工作日的数量之间的“开始日期”和“结束日期”输入触发形式,并设置一个新的“假期”字段的值这个数的工作日。这个计算的“假期”出现在“批准假期请求”任务的形式。
const时刻=要求(时刻)moment.locale (moment.locale(){假日:[“2017-10-03”,“2017-10-31”,“2017-12-25”,“2017-12-26”],holidayFormat:‘YYYY-MM-DD})时刻(startDate可以).businessDiff (vacationDays = (endDate)。添加(1 ' d '))
这个脚本使用moment.jsJavaScript库的moment-business-days插件的businessDiff函数来计算两个日期之间的工作日数量。然而,抓是脚本提供一个公共假期的日期列表。这个例子中只有日期从现在到2017年底,因此在实践中你需要添加几个年的日期,并且每年更新脚本。
你不仅需要新的日期每年,但日期取决于你在哪里。上面的示例列表在柏林公共假日。例如,在荷兰,没有任何公共假日10月,如果圣诞节是周六那么没有12月。相比之下,法国有六个公众假期在今年下半年在团聚(7)。
下一个改进是用动态数据替换固定的日期列表。幸运的是,互联网已经覆盖了。
外部公众假期数据
而不是使用一个固定的假期,该脚本可以卖到一个公共假日从web服务列表。对于德国而言,您可以查询公共假期的愉快网络服务API为特定的,特定的德国联邦国家。
例如,http://feiertage.jarmedia.de/api/?jahr=2017&nur_land=BE服务于公众假期在2017年柏林,JSON格式。这里有一个长版本的脚本,从web服务获取日期,之前做计算。
const时刻=要求(时刻)const url =(年)= > ' http://feiertage.jarmedia.de/api/?jahr = ${一}&nur_land =是‘const setHolidays =(假期)= > {const日期= _.values(假期). map((假日)= > holiday.datum) moment.locale (moment.locale(){假日:日期、holidayFormat:‘YYYY-MM-DD})} const calculateBusinessDays = (startDate可以endDate) = >{时刻(startDate可以).businessDiff(时刻(endDate)。添加(1 ' d '))}请求(url(时刻(startDate可以).format (“YYYY”)),(误差、响应、节假日)= > {setHolidays (JSON.parse(假期))console.log(时刻(endDate)。添加(1 ' d ')) vacationDays = calculateBusinessDays (startDate可以endDate)})
这个版本的脚本有一个限制:它假设开始日期和结束日期是同年,只有获取这一年的公共假期。即使你认为人们不要求一个假期长超过十二个月,一个假期从12月到1月仍然需要公共假日日期连续两年。
你可以解决这个问题通过抓取和增加公共假日日期两年,或通过整个计算两次——从开始日期在12月31日之前,从明年1月1日,直到结束日期。这是留给读者作为练习。
简单的事情很容易,困难的事情是有可能的
假期请求和工作日计算工作流提供了一个好的测试工具的原则应该让简单的事情容易,可能和艰难的事。一些工具不能通过简单的问题容易解决,而过于局限于能够尽快解决这个问题变得复杂。其他工具不能通过灵活地解决任何问题,但很难使用,即使是简单的问题。
Signavio流程治理使它容易简单的工作流自动化,无需编写代码,但仍然可以解决困难的问题,如工作日计算等问题,需要从外部web服务的动态数据。
如果你想体验Signavio流程治理为自己的用户友好的工作流和形式,或者尝试编写脚本任务在JavaScript中,然后注册一个天的免费试用今天。