如何在不同的CorDapp中定义多个响应者流?

时间:2018-02-05 13:47:45

标签: corda

在Corda中,我想创建一个响应者流的几个不同版本,每个版本都由不同的节点使用。

为此,我了解我需要在单独的CorDapp中定义每个响应者流。但是,它们也都需要通过InitiatedBy注释依赖于启动流类。

如何构建包含响应程序流的不同实现的CorDapps,以便它们都依赖于这个公共启动流,而不是在我定义启动流的同一个CorDapp中包含所有响应器流?

2 个答案:

答案 0 :(得分:3)

您需要首先定义包含启动流的CorDapp,然后将此CorDapp设置为包含响应者流的每个CorDapp的依赖项。有关详细信息,请参阅https://docs.corda.net/cordapp-build-systems.html#dependencies-on-other-cordapps

例如,假设 CorDapp 1 定义了以下启动流程:

@InitiatingFlow
@StartableByRPC
class Initiator : FlowLogic<Unit>() {
    ...
}

然后你有 CorDapp 2A ,它定义了以下响应者流程:

@InitiatedBy(Initiator::class)
@StartableByRPC
class ResponderA : FlowLogic<Unit>() {
    ...
}

CorDapp 2B ,它定义了以下响应者流程:

@InitiatedBy(Initiator::class)
@StartableByRPC
class ResponderB : FlowLogic<Unit>() {
    ...
}
然后

CorDapp 2A CorDapp 2B 需要依赖其build.gradle文件,使这些CorDapps依赖于 CorDapp 1 ,其中确定了启动流程。

答案 1 :(得分:1)

嗯,问题来了,

  

为什么 CorDapp1 的所有者分享他们的业务流逻辑   到其他?如果企业想要将流程实现代码库保密,那该怎么办?

我认为以下是项目结构和实施:

实施例。我有三方PartyA,PartyB,PartyC,每个都有自己的CorDapp版本。

  1. cordapp-contract-states - 此CorDapp包含共享的contractstatesabstract initiating flows将使用counter-parties实施他们的responder flow logic此CorDapp与所有必需的交易对手共享。

    @InitiatingFlow 抽象类CreateTradeBaseFlow:FlowLogic {

    }

  2. cordapp-partyA - 此CorDapp包含用于创建交易的FlowLogic实施。

    @StartableByRPC class CreateTradeFlow : CreateTradeBaseFlow { //Actual implementation of initiator flow goes here... }

  3. cordapp-partyB - 此CorDapp包含CreateTradeFlow的响应者流以及其他特定于业务的flowlogic实现。

    @InitiatedBy(CreateTradeBaseFlow::class) class ResponderPartyB(private val otherSideSession: FlowSession) : FlowLogic<SignedTransaction>() { //implementation of responder flow goes here... }

  4. cordapp-partyC - 此CorDapp包含CreateTradeFlow的响应者流以及其他特定于业务的flowlogic实现。

    @InitiatedBy(CreateTradeBaseFlow::class) class ResponderPartyC(private val otherSideSession: FlowSession) : FlowLogic<SignedTransaction>() { //implementation of responder flow goes here... }

  5. 你的想法是什么?