如何在Corda的新状态创建流程中设置启动器?

时间:2018-08-07 09:37:54

标签: corda

我正在使用Corda中的事件计划功能。我在一种状态下添加了相同的内容。现在,我想在现有状态被接受时自动创建另一个状态。接受功能与一方有关,而触发创建另一个状态的动作必须与另一方本身有关。当我尝试这样做时,两个启动器都是相同的。创建新状态流时如何将另一方设置为发起方?

PS:我们正在遵循一个项目结构,该结构具有用于合同状态和流程的单独模块。

1 个答案:

答案 0 :(得分:0)

实现此目标的一种方法是:

  1. 定义一个流程,而不执行任何逻辑,而只是将其移交给响应者流程
  2. 定义执行逻辑的响应者流

这里是一个例子:

@InitiatingFlow
@SchedulableFlow
class InitiatorFlow(val counterparty: Party) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        // We send a flag message to the counterparty, causing them to start their responder flow.
        val session = initiateFlow(counterparty)
        session.send(true)
    }
}

@InitiatedBy(InitiatorFlow::class)
class InitiatedFlow(val counterpartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        // We process and discard the flag message.
        counterpartySession.receive<Boolean>()

        // TODO: Create the new state based on the acceptance.
    }
}