IllegalFlowLogicException: FlowLogicRef не может быть создан для FlowLogic - PullRequest
0 голосов
/ 28 августа 2018

В моей Corda я пытаюсь вызвать поток, используя RPC, но я получаю эту ошибку при выполнении вызова, чтобы инициировать поток:

net.corda.core.flows.IllegalFlowLogicException: FlowLogicRef не может быть построенным для FlowLogic типа com.example.flow.PolicyFlow $ Initiator: из-за отсутствия конструктора для аргументы: [class com.example.state.PolicyState]

Мой фрагмент показан ниже:

 public SignedTransaction call() throws FlowException {
        class SignTxFlow extends SignTransactionFlow {
            private SignTxFlow(FlowSession otherPartyFlow, ProgressTracker progressTracker) {
                super(otherPartyFlow, progressTracker);
            }

            @Override
            protected void checkTransaction(SignedTransaction stx) {
                requireThat(require -> {
                    ContractState output = stx.getTx().getOutputs().get(0).getData();
                    require.using("This must be an Policy transaction.", output instanceof PolicyState);
                    PolicyState policy = (PolicyState) output;
                    require.using("I won't accept Policy without a first Name.", (!(policy.getFirstName().equals(""))));
                    return null;
                });
            }
        }

        return subFlow(new SignTxFlow(otherPartyFlow, SignTransactionFlow.Companion.tracker()));
    }

Функция для подключения RPC и инициирования потока приведена ниже: enter image description here

Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 28 августа 2018

Пожалуйста, проверьте конструктор класса PolicyFlow$Initiator. В конструкторе есть несоответствие: вы отправляете policy, но конструктор ожидает чего-то другого, как я вижу в коде, который вы указали в комментариях. в этом классе нет конструктора, который принимает состояние политики. У вас есть конструктор с 10 полями.

...