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

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

如何解决工作流程结构、促销优惠流程

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

上下文:

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

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

一个问题:下面的逻辑是否正确?以及我在使用信号。

第二个问题:,我正在“parentSignal”频道上的父工作流中监听信号。听“接受”、“拒绝”、“取消”。 在子工作流中,我正在收听“10% 现金回扣”、“50% 现金回扣”、“100% 现金回扣”以及“取消”,因为管理员可以随时取消。这是触发工作流的正确方法吗?

我如何考虑编写工作流程(但是,当我尝试发出不同的信号时,我似乎无法让它在 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% 的现金返还,那么我们会向节奏工作流程发送信号。

解决方法

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

第二问:这个可以,但是要注意如何向childWF发送取消信号。如果让外部服务来做,可能是一致的问题。如果让 parentWF 来做,则需要确保 parent WF 没有关闭。

总体而言,您的设计有效,但还可以改进。

您设计的主要问题是关于使用 childWF。如果您不使用 childWF,您的工作流程将大大简化,从而节省大量边缘情况。从概念上讲,如果您的 parentWF 太复杂以至于您想要分解并从 childWF 中获得结果,则 childWF 很有用。有关何时应该使用 childWF 的更多详细信息,请参见此处:What is a good use case for a child workflow in 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,then end workflow(accepted->end),you may ignore or end workflow
     2.3 cancel: end workflow(accepted->end)
     2.4 10% or 59%: check state,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.

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