Merge pull request #4529 from corda/FinalityFlowMigrationDocUpdate

Finality flow migration doc update
This commit is contained in:
Nick Rogers 2019-01-09 10:58:01 -05:00 committed by GitHub
commit d97fac0eb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 7 deletions

View File

@ -121,7 +121,7 @@ away to the new API, as otherwise things like business network membership checks
This is a three step process: This is a three step process:
1. Change the flow that calls ``FinalityFlow`` 1. Change the flow that calls ``FinalityFlow``.
2. Change or create the flow that will receive the finalised transaction. 2. Change or create the flow that will receive the finalised transaction.
3. Make sure your application's minimum and target version numbers are both set to 4 (see step 2). 3. Make sure your application's minimum and target version numbers are both set to 4 (see step 2).
@ -140,7 +140,7 @@ As an example, let's take a very simple flow that finalises a transaction withou
:end-before: DOCEND SimpleFlowUsingOldApi :end-before: DOCEND SimpleFlowUsingOldApi
:dedent: 4 :dedent: 4
To use the new API, this flow needs to be annotated with ``InitiatingFlow`` and a ``FlowSession`` to the participant of the transaction must be To use the new API, this flow needs to be annotated with ``InitiatingFlow`` and a ``FlowSession`` to the participant(s) of the transaction must be
passed to ``FinalityFlow`` : passed to ``FinalityFlow`` :
.. container:: codeset .. container:: codeset

View File

@ -110,18 +110,21 @@ public class FinalityFlowMigration {
@Suspendable @Suspendable
@Override @Override
public Void call() throws FlowException { public Void call() throws FlowException {
// DOCSTART ExistingResponderFlow
// First we have to run the SignTransactionFlow, which will return a SignedTransaction.
SignedTransaction txWeJustSigned = subFlow(new SignTransactionFlow(otherSide) { SignedTransaction txWeJustSigned = subFlow(new SignTransactionFlow(otherSide) {
@Suspendable @Suspendable
@Override @Override
protected void checkTransaction(@NotNull SignedTransaction stx) throws FlowException { protected void checkTransaction(@NotNull SignedTransaction stx) throws FlowException {
// Do checks here // Implement responder flow transaction checks here
} }
}); });
// DOCSTART ExistingResponderFlow
if (otherSide.getCounterpartyFlowInfo().getFlowVersion() >= 2) { if (otherSide.getCounterpartyFlowInfo().getFlowVersion() >= 2) {
// The other side is not using the old CorDapp so call ReceiveFinalityFlow to record the finalised transaction. // The other side is not using the old CorDapp so call ReceiveFinalityFlow to record the finalised transaction.
// If SignTransactionFlow is used then we can verify the tranaction we receive for recording is the same one // If SignTransactionFlow is used then we can verify the tranaction we receive for recording is the same one
// that was just signed. // that was just signed by passing the transaction id to ReceiveFinalityFlow.
subFlow(new ReceiveFinalityFlow(otherSide, txWeJustSigned.getId())); subFlow(new ReceiveFinalityFlow(otherSide, txWeJustSigned.getId()));
} else { } else {
// Otherwise the other side is running the old CorDapp and so we don't need to do anything further. The node // Otherwise the other side is running the old CorDapp and so we don't need to do anything further. The node

View File

@ -70,13 +70,15 @@ class ExistingInitiatingFlow(private val counterparty: Party) : FlowLogic<Signed
class ExistingResponderFlow(private val otherSide: FlowSession) : FlowLogic<Unit>() { class ExistingResponderFlow(private val otherSide: FlowSession) : FlowLogic<Unit>() {
@Suspendable @Suspendable
override fun call() { override fun call() {
// DOCSTART ExistingResponderFlow
// First we have to run the SignTransactionFlow, which will return a SignedTransaction.
val txWeJustSigned = subFlow(object : SignTransactionFlow(otherSide) { val txWeJustSigned = subFlow(object : SignTransactionFlow(otherSide) {
@Suspendable @Suspendable
override fun checkTransaction(stx: SignedTransaction) { override fun checkTransaction(stx: SignedTransaction) {
// Do checks here // Implement responder flow transaction checks here
} }
}) })
// DOCSTART ExistingResponderFlow
if (otherSide.getCounterpartyFlowInfo().flowVersion >= 2) { if (otherSide.getCounterpartyFlowInfo().flowVersion >= 2) {
// The other side is not using the old CorDapp so call ReceiveFinalityFlow to record the finalised transaction. // The other side is not using the old CorDapp so call ReceiveFinalityFlow to record the finalised transaction.
// If SignTransactionFlow is used then we can verify the tranaction we receive for recording is the same one // If SignTransactionFlow is used then we can verify the tranaction we receive for recording is the same one