java.lang.IllegalArgumentException: потоковые сеансы не были предоставлены для следующих участников транзакции: - PullRequest
0 голосов
/ 04 июня 2019

У меня есть сценарий использования, в котором я должен отправить сведения о жалобе (Жалоба - это бухгалтерская книга, т.е. IOUState.class) двум операторам (скажем, JIO и Airtel) из оператора отправителя (TTL)

Конструктор класса состояний имеетдетали жалобы и три оператора (объекты стороны), один отправитель и два получателя.

Первая часть пользовательского дела выполняет штраф, а детали транзакции / жалобы регистрируются в состоянии хранилища / линейном состоянии.

Во второй части транзакции один из операторов-получателей отправляет ответ разрешения жалобы оператору отправителя и не должен отправлять ответ, соответствующий требованиям, третьему оператору.то есть Скажите, что жалоба связана с Airtel, тогда Airtel ответит на TTL, и JIO должен быть вне цикла.

Я написал один класс состояния и два класса потока.

Но когда я выполняюВо втором потоке (Airtel to TTL) создается java.lang.IllegalArgumentException: сеансы потока не были предоставлены для следующих участников транзакции: [O = PartyJIO, L = MUMBAI, C = IN]

Я создалтранзакция с Командой, требующая только двух Подписчиков, TTL и Airtel, но не знаю, почему все еще появляется ошибка

// Класс потока в узле Airtel, TAP - это узел TTL

List requiredSigners = Arrays.asList (getOurIdentity (). getOwningKey (), TAP.getOwningKey ());

Command command = new Command <> (new IOUContract.Create (), requiredSigners);

  txBuilder = new TransactionBuilder(notary)
            .addInputState(IOUState1.get(0))
            .addOutputState(outputState, IOUContract.ID)
            .addCommand(command);

FlowSession otherPartySession1= initiateFlow (TAP);// TAP - объект стороны TTL // Otherpartysession1 выполняется на узле Airtel

    SignedTransaction fullySignedTx = subFlow(new CollectSignaturesFlow(
            signedTx, Arrays.asList(otherPartySession1), CollectSignaturesFlow.tracker()));

java.lang.IllegalArgumentException: сеансы потока не были предоставлены для следующих участников транзакции:

SignedTransaction fullySignedTx = subFlow(new CollectSignaturesFlow(
            signedTx, Arrays.asList(otherPartySession1), CollectSignaturesFlow.tracker()));

java.lang.IllegalArgumentException: потоковые сеансы не были предоставлены для следующих участников транзакции:

1 Ответ

0 голосов
/ 05 июня 2019

(Отношения с разработчиками @ R3 здесь)

В Corda 4 вам необходимо передать FinalityFlow список сеансов, включающий всех участников транзакции, чтобы транзакция могла быть распределена соответствующим образом.

То, что кто-то есть в этом списке участников, не делает его обязательным подписывающим лицом. Требуемые подписчики определяются открытыми ключами, перечисленными в командах транзакции.

...