【问题标题】:What do we mean by writing multiple responder flows in cordapp?在 cordapp 中编写多个响应程序流是什么意思?
【发布时间】:2020-12-14 01:06:45
【问题描述】:

在多响应者流中到底发生了什么?我们是否在与多个节点进行通信?我们可以将多响应者流用于其他目的吗?

【问题讨论】:

    标签: corda flow


    【解决方案1】:

    想象一下,您(发起人)正在申请贷款;你去 5 个不同的银行(即 5 个响应者)。每家银行都有自己的标准来批准您的贷款申请(一家银行要求您拥有房屋作为担保,另一家银行要求您的年薪高于 100,000,等等)。

    因此,即使所有响应节点可以使用由编写initiating 流的组织提供的responder 流;他们也没有义务,实际上响应节点有责任编写自己的responder流版本来实现自己的业务规则。

    如果收到的交易通过了这些业务规则,响应者就​​会批准它(即它签署交易);否则它会拒绝它(即抛出FlowException)。

    【讨论】:

    • 感谢您的回复。我是新手。所以如果我们有 5 个响应者,那么这意味着我们有 5 个单独的代码,每个都带有注释 @InitiatedBy 或一个可以处理这五个的代码银行?
    • 如果所有 5 个响应者的验证规则相同;然后你可以有一个响应者流;如果他们以不同的方式验证交易,那么您将拥有 5 段不同的代码。阅读 Dan Newton(R3 工程师)的this series;它有 3 篇文章(阅读所有文章)。
    【解决方案2】:

    我想您指的是响应程序流的覆盖。它允许开发人员配置节点以使用覆盖的响应程序流而不是基本响应程序进行响应。

    您可以在此处找到更多详细信息: https://docs.corda.net/docs/corda-os/4.5/flow-overriding.html

    【讨论】:

      【解决方案3】:

      正如前面的 cmets 所说,您可以根据存储在响应节点中的信息,选择创建多个响应者流或使用单个实现不同逻辑的响应者流。 Corda 的源代码中有多个示例,如果您查找流处理程序,如下面的这个(on github),您可以看到根据响应节点的角色应用不同的逻辑(由 InitiatingFlow 设置,在本例):

      class ObserverAwareFinalityFlowHandler(val otherSession: FlowSession) : FlowLogic<Unit>() {
          @Suspendable
          override fun call() {
              val role = otherSession.receive<TransactionRole>().unwrap { it }
              val statesToRecord = when (role) {
                  TransactionRole.PARTICIPANT -> StatesToRecord.ONLY_RELEVANT
                  TransactionRole.OBSERVER -> StatesToRecord.ALL_VISIBLE
              }
              // If states are issued to self, then ReceiveFinalityFlow does not need to be invoked.
              if (!serviceHub.myInfo.isLegalIdentity(otherSession.counterparty)) {
                  subFlow(ReceiveFinalityFlow(otherSideSession = otherSession, statesToRecord = statesToRecord))
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-08-16
        • 1970-01-01
        • 2023-03-27
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        • 2022-01-22
        相关资源
        最近更新 更多