Как разделить учетную запись Corda между двумя узлами? - PullRequest
0 голосов
/ 23 января 2020

Я использовал приведенный ниже поток для совместного использования учетной записи от одного узла к другому узлу

@InitiatingFlow
@StartableByService
@StartableByRPC
class ShareAccountInfotoOtherParty(val accountName: String,
                       val partyName: String) : FlowLogic<String>() {

    @Suspendable
    override fun call(): String {




        val TestAccount = subFlow(OurAccounts()).filter {  it.state.data.name == accountName  }.last()
        val newParty  = serviceHub.identityService.partiesFromName(partyName,exactMatch = true).last()

        val session1 = initiateFlow(newParty)
        val a = ShareAccountInfoFlow(TestAccount, listOf(session1))



        return "sharing Done   ${a}"
    }

    @InitiatedBy(ShareAccountInfotoOtherParty::class)
       class ShareAccountInfoHandlerFlow(val otherSession: FlowSession) : FlowLogic<AccountInfo>() {
        @Suspendable
        override fun call(): AccountInfo {
            val transaction = subFlow(ReceiveTransactionFlow(
                    otherSideSession = otherSession,
                    statesToRecord = StatesToRecord.ALL_VISIBLE
            ))
            return transaction.coreTransaction.outputsOfType(AccountInfo::class.java).single()
        }
    }
}

Поток не выдает никакой ошибки, но таблица узла-получателя (Таблица счетов) не получает никаких обновлений.

1 Ответ

1 голос
/ 23 января 2020
  • Вы используете версию потока inline (т.е. пару ShareAccountInfoFlow и ShareAccountInfoHandlerFlow). Вместо этого используйте версию initiating (т.е. ShareAccountInfo), которая не требует наличия потока ответчика.
  • Вы используете версию inline только в том случае, если ваш поток представляет собой пару (инициатор и респондент), где вам требуется какое-то действие / проверка в респонденте (то есть узел, получающий информацию об учетной записи), прежде чем он фактически получит ее (т.е. прежде чем он вызывает библиотеку ShareAccountInfoHandlerFlow).
  • См. Некоторые примеры в тестах потока ShareAccountInfo: https://github.com/corda/accounts/blob/master/workflows/src/test/kotlin/com/r3/corda/lib/accounts/workflows/test/ShareAccountFlowTests.kt
...