全部文档
文档中心工作流使用手册节点开始与结束定时开始

定时开始

定时开始,可基于配置的时间自动在指定时间触发流程。

流程一旦发布后,就会按定时的时间开始执行。

如果手动执行,仅会额外执行一次。

提示:若您在工作流中编排了PY脚本节点,且PY脚本调用了先胜云其他组件的服务,一些服务是需要鉴权的,在定时调用时,很可能因为cookie/token失效而导致鉴权失败、执行失败(报错UNAUTHORIZED),若需要PY脚本能被成功执行,可以在PY脚本中添加绕过鉴权的代码,参考代码如下:

Copy
from deepfos.options import OPTION
from deepfos.lib.eureka import Eureka
OPTION.server.app = Eureka.sync_get_url('APP-SERVER')
OPTION.server.space = Eureka.sync_get_url('SPACE-SERVER')
OPTION.server.system = Eureka.sync_get_url('SYSTEM-SERVER')
OPTION.general.use_eureka = True

选择定时策略,目前支持三种:仅一次、指定间隔、Cron表达式

  • 仅一次:选择后需要指定激活时间,即设置定时开始的首次执行时间,设定方式支持发布时间静态值



    • 发布时间:会在发布之后立刻执行一次,并且以发布时间作为首次的执行时间来计算后续的执行时机

    • 静态值:选择一个固定时间作为首次执行时间

      • 选择的静态值需要在当前时间之后

        • 配置的静态值可能在某个时间点之后,小于当前时间,所以会在打开流程时报错;但是此报错只会影响设计中版本的保存校验,不会影响已经发布流程的执行

  • 指定间隔:选择后需要指定首次激活时间(设定方式同指定激活时间),还需配置重复间隔和最多重复的保险机制



  • Cron表达式:可以直接输入或使用插入工具帮助输入Cron表达式,并提供预览功能,以当前时间为基准预览最近10次的执行时间,但实际执行时会以发布时间为基准重新计算



  • 流程发起人:可配置定时启动流程的发起人

  • 流程启动参数:由于自动启动的流程,无法从外部获取启动参数,因此,理论上定时启动的流程不需要配置启动参数;此处若配置了启动参数,只允许配置置空。

  • 业务需求:根据资产维护的到期日期,在到期前7天发送邮件提醒

  • 需求拆解:

    • 定时流程:例如每天早上8点启动流程(用定时开始节点实现)

    • 检查资产是否到期:启动流程后,首先依据今天的日期检查,7天后是否存在到期资产(用全局变量+DeepQL语句实现)

    • 发送通知:如果存在到期资产,则发送邮件给目标收件人,提醒有哪些资产将在7天后到期(用通知节点实现)

  • 样例数据: -



  • 简要效果: -



  • 配置前提

    • 资产用对象管理,这样才能通过DeepQL查询出到期资产

    • 配置好邮件模板

  • 整体配置 -



  • 配置要点1:流程全局变量

变量名

类型

初始值(代码段的展示效果不好,请内部成员至语雀文档查看)

作用

due_days

integer

7

定义需要查找多少天后到期的资产,后期如需修改天数阈值,直接修改此变量的初始值即可

budget_list

object[]

javascript // es5版本要使用多行文本,不支持反引号,为了增强可阅读性,用字符串数组展示ql var ql_lines = [ "select ProjectItem {", "budget := .budget_code.code,", "is_open_max := .project_history.is_open_max,", "end_date := .project_history.end_date,", "today := cal::local_datetime_of_statement(),", "due_days := duration_get((.project_history.end_date - cal::local_datetime_of_statement()), 'day')}", "filter", "((.is_open_max = true) AND (.due_days = <int16>$due_days))", ] var ql = ql_lines.join('\n') var budget_list = fn$queryByDeepQL(ql,{"due_days":wfv$due_days}); budget_list;

查询出即将到期的资产对象,会有多条数据,因此需要定义为对象数组类型

budget_code_list

string[]

javascript var a = wfv$budget_list var budget_code_list = a.map(function(item){ return item.budget; }); // 去重 var uniqueArray = budget_code_list.filter(function(item, index, arr) { return arr.indexOf(item) === index; // 只保留第一次出现的元素 }); uniqueArray

budget_list中取出资产编码,作为邮件内容

count_budget_code

integer

javascript var a = wfv$budget_code_list; var b = a.length; b

计算到期资产的数量,由于排他网关判断,如果存在到期资产,才通知,否则,结束本流程

today

string

javascript wfv$budget_list[0].today.split('T')[0]

budget_list中取出相关日期,作为邮件内容

end_date

string

javascript wfv$budget_list[0].end_date.split('T')[0]

budget_list中取出相关日期,作为邮件内容

  • 配置要点2:定时开始,实现每天早上8点自动发起 -



  • 配置要点3:通知节点,通知内容结合全局变量,以展示出业务信息

邮件标题:

Copy
wfv$due_days.toString() +  "天后到期提醒"

邮件内容:

Copy
"今天是" + wfv$today + "," + 
  wfv$due_days.toString() +  "天后(" + wfv$end_date + ")到期的资产,有:" + 
  wfv$budget_code_list.join("、")

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send