Multiplicities

The multiplicities indicate how many of the State type can/ must be in the transaction.

Input multiplicities are shown at the beginning of the Path constraint arrow, and can take the following values:

  • 0 : There must be no input states of the primary type in the transaction.
  • 1 : There must be exactly one input state of the primary type in the transaction.
  • n : There can be n input states of the primary type in the transaction.

Output multiplicities are shown at the end of the Path constraint arrows, and can take the following values:

  • 0 : There must be no output states of the primary type in the transaction.
  • 1 : There must be exactly one output state of the primary type in the transaction.
  • 1: Matched : There must be exactly one output state of the primary type in the transaction and the output state’s linearId must match the input state’s linearId.
  • m : There are m output States of this type in the Transaction.

The options above can be combined to form ranges, eg

  • 0..n : there can be zero to n states of the primary state type

For example, in the diagram below, Path 1 ‘PROPOSED – Agree –> AGREED’:

  • The input multiplicity is 1, indicating there must be one and only one input state of type AgreementState in status ‘PROPOSED’
  • The output multiplicity is 1: Matched, indicating there must be one and only one output state of type AgreementState and that the LinearID must match that of the input state.

Where the Path starts or ends at a black circle, the implied Multiplicity = 0..0

The following example of a CashState shows how multiplicities can be expressed as ranges:

Was this page helpful?

Thanks for your feedback!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.

We're sorry this page wasn't helpful. Let us know how we can make it better!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Create an issue

Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.