如何设置倒计时?
关键词:倒计时 循环流程 定时任务 每日数据自动计算更新
场景描述
每条数据中都有一个剩余天数,是表单创建时就自动计算出来的,如何让剩余天数随着时间每天减少?

实现方案
设置一个单独的流程功能"倒计时",即可实现
表单设置
只需要一个字段即可

流程设置

定时节点设置

更新剩余天数节点设置

更新计时开始时间设置

思路解析
1、定时任务
想要让剩余天数每天减少,那么我们就需要一个定时任务,每天定时更新剩余天数。平台暂时没有定时任务的功能,那么应该可以通过无限循环一个定时节点的流程来实现。
tips: 流程设置中定时节点的用法回顾
在定时节点中可以设置一个通过该节点的条件。当流程走到定时节点处,且不能满足通过条件时,会暂时停留在该节点处,之后每隔5分钟重新判断一次,一旦发现满足条件,流程会继续往下走。
2、循环流程
现在来具体分析这个无限循环流程的设置方式
-
首先是定时节点,需要设置一个通过条件,由需求可知,我们的条件就是——"新的一天",如果现在是新的一天,那么就可以去更新剩余天数了。
-
其次是更新剩余天数,实际就是让每条数据的剩余天数减一,这个动作可以用一个更新节点来完成。
tips:更新节点用法回顾
更新节点可用于更新系统中某个表单的数据,可以选择该表单下所有数据全部更新;也可以设置筛选条件,只更新某些数据的字段。这种情况下,可以将需要更新的字段更新为固定的内容,也可以更新为本表单某些字段中的内容;当更新的内容比较复杂时,也可以通过写sql的方式来实现。
-
最后一个步骤就是让这个流程循环起来,每天都需要让定时节点通过一次,这样剩余天数才能每天减少一次。
3、判断条件
如何设置条件是"新的一天"呢?
这里我们可以通过在表单中设置一个用于记录剩余天数更新时间的字段来实现,每次更新完剩余天数后,该字段的时间就往后加一天,然后再通过定时节点来判断当前时间是否大于该字段时间,一旦大于,就说明"新的一天"已经来临,可以进行新一轮的更新剩余天数,以及更新记录剩余天数更新时间的字段。
方案实施
首先,让我们来建个专门用来做这个流程的功能吧,暂且叫它 "倒计时"。

是的,它有且仅有唯一的一个字段,"计时开始时间"。
然后让我们来看看它的流程,就是那个神秘的无限循环流程!

注意,这个是我们整个倒计时功能的核心!让我们一点一点来看
1、手工节点
就是那个唯一的字段:计时开始时间,这个字段就是上文中提到的记录剩余天数更新时间的字段。
2、定时节点
根据我们上面的分析,定时节点的设置是为了判断当前时间是否大于记录的剩余天数更新的时间。这里的条件可以设置如下图

如需借鉴,只要更改sql语句中的表名和字段名即可
select to_days(date_format(now(), '%Y-%m-%d')) >= to_days(date_format((select 字段名 from 表名 limit 1), '%Y-%m-%d')) as days;
3、更新剩余天数
这一步,我们可以去更新表中每条数据的剩余天数,减1就行,设置示例如下

4、更新计时开始时间
当我们把剩余时间更新完成后,需要把计时开始时间增加一天,这样,当定时节点判断当前时间大于计时开始时间时,就又会去执行一遍更新剩余时间,至此更新剩余时间的循环就完成了。
更新计时开始时间,也可以用sql语句来实现,设置如下图

select date_format(date_add(now(), interval 1 day), '%Y-%m-%d') as days;
5、启动倒计时~
上述配置完成以后,我们只需要在"倒计时"表单上增加一条数据,填写"计时开始时间"字段,提交就可以开始循环倒计时啦!