mirror of
https://github.com/corda/corda.git
synced 2025-06-10 03:11:44 +00:00
Merge pull request #4529 from corda/FinalityFlowMigrationDocUpdate
Finality flow migration doc update
This commit is contained in:
commit
d97fac0eb7
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user