当前位置: 首页 > 知识库问答 >
问题:

工作流程结构、促销优惠流程

盛超
2023-03-14

非常感谢您的帮助,在实施细节方面,以及我下面的两个澄清问题:

背景:

创建优惠促销工作流程。优惠有截止日期(我们在优惠被接受后开始倒计时。)

用户可以选择拒绝报价(工作流程随后停止)一旦报价被接受,他们将有7天的时间尝试兑换返现积分。一旦他们满足返现积分要求,我们将把积分记入他们的账户

第一个问题:下面的逻辑正确吗?我正在使用信号。

我是如何考虑编写工作流的(然而,当我尝试发出不同的信号时,我似乎无法在Cadence GUI中正常工作)

Parent workflow (OfferWorkflow)
   Listen for signal (signal received from external service)
      if accept, start execute Child Workflow (cashback workflow)
      if reject, end workflow
      if cancelled (by admin, end workflow, cancel any cashback progress)


child workflow (cashbackWorkflow, with expiration time) 
   Listen for signal, once 10% of cashback requirement is met (send email) 
   Listen for signal, once 50% cashback is met (send email) 
   Listen for 100% cashback is met 
      // Perform credit (make call to external function)

将会有一个外部服务发送信号。外部服务知道进度。例如,如果用户花费高达10%的现金返还,那么我们会向节奏工作流程发送信号。

共有1个答案

周祺
2023-03-14

第一个问题:从逻辑上讲,这是正确的。我不觉得有什么问题。

第二个问题:这可以工作,但是,你需要小心如何向儿童WF发送取消信号。如果你让外部服务来做,这可能是一个一致的问题。如果你让父母WF去做,你需要确保父母WF没有关闭。

总的来说,你的设计是可行的,但还可以改进。

您的设计的主要问题是关于使用儿童WF。您的工作流程将大大简化,如果您不使用 childWF,则可以节省大量边缘情况。从概念上讲,如果父级 WWF 太复杂以至于要分解,并且还希望从子世界分类中获取结果,则子世界都很有用。有关何时应使用 childWF 的更多详细信息,请参阅此处:对于 Uber Cadence 中的子工作流,什么是一个好的用例?

如果不使用childWF,伪代码将变为:

OfferWorkflow(input)
  1. init offer state(local variable object), and you can register a [query][1] handler for this object. 
  2. In a loop, listen for signals for operation:
     2.1 accept: check state, if not accepted, then accepted, and start a timer with a future operation:
       2.1.1:
          when the timer fires, check state, if accepted, then end workflow(accepted->end)
     2.2 reject: check state, if not accepted, then end workflow(accepted->end), if accepted, you may ignore or end workflow
     2.3 cancel: end workflow(accepted->end)
     2.4 10% or 59%: check state, if accepted, then send email
     2.5 100% : check state, if accepted then perform credit and then change state accepted->credited. 
For error handling in above, eg, 100% for a unaccepted offer, you may emit logs/metrics for monitoring.
 类似资料:
  • 这是一个具备完整结构的标准流程工作台,如果你希望隐藏一些功能模板,可以进行如下操作,Excel服务器系统管理—〉其它设置,如图所示: E立方管理软件Excel服务器在你不需要显示的模块前面打勾选择即可,另外对于管理员来说他们总是可以看见一个完整的流程工作台。      如果你不想改变整个流程工作台的结构,而只是不想在“已处理-未完成”显示某个工作流模板的未完成工作流,那么只需要在该模板的流程图属性

  • 实现细节 添加路由器接口 删除路由器接口 启动新的虚拟机节点 删除虚拟机节点

  • 完成每项开发任务,你都会用到一套流程,流程里面很重要的一部分就是工具。学习开发之前,有些必备的工具可以提前准备一下,你不需要成为使用这些工具的专家,做简单的了解以后,就可以投入到开发的学习中去了。

  • 我正在研究一个需要工作流/流程引擎的解决方案。我的工作流包含一些基于Java的进程(类)和一些Linux Shell脚本。流程不会是静态的,每个流程的执行取决于前一个流程的状态/结果,将有多条路径,路径将由前一个流程的状态确定。 我尝试查看jBPM,但没有找到合适的支持来调用shell脚本。请根据我的要求为我推荐一个合适的替代方案。 非常感谢。

  • 如何创建并发布营销流程 1、访问【自动化营销】,点击【创建自动化流程】进入自动化流程新建页面。 2、在新建自动化流程页面,根据企业自身业务需要可选择已有的营销流程模板或新建一个空白流程。 以欢迎公众号新关注的粉丝为示例: 填写流程基本信息:名称与描述,点击右上角【下一步】进入流程设计页面 根据业务需要进行流程设计,点击右上角【保存并发布】即可启用流程 3、设计完成流程后,在【自动化营销】-【流程列

  • 说明 使用一张优惠券 请求地址 http://api.dc78.cn/Api/co_cut 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 no 券号 bn 业务单号 op 操作员 lsco 批量核券id 多个券id逗号分隔。券id取自协议4.1中返回的coid 6499946,5416152 请求参数 POST请求方式 支持单品券核销 pylsco=[ { "coid":"2630