Skip to content

Class: WorkflowStep

A workflow step represents the state of a business event. The workflow step contains a reference to a previous WorkflowStep in order to preserve lineage. A workflow step is accepted if it contains a business event, proposed if proposedEvent is present and is rejected if the rejected flag is set.

URI: common_domain_model:WorkflowStep

 classDiagram
    class WorkflowStep
    click WorkflowStep href "../WorkflowStep/"
      WorkflowStep : account





        WorkflowStep --> "*" Account : account
        click Account href "../Account/"



      WorkflowStep : action





        WorkflowStep --> "0..1" ActionEnum : action
        click ActionEnum href "../ActionEnum/"



      WorkflowStep : approval





        WorkflowStep --> "*" WorkflowStepApproval : approval
        click WorkflowStepApproval href "../WorkflowStepApproval/"



      WorkflowStep : businessEvent





        WorkflowStep --> "0..1" BusinessEvent : businessEvent
        click BusinessEvent href "../BusinessEvent/"



      WorkflowStep : counterpartyPositionBusinessEvent





        WorkflowStep --> "0..1" CounterpartyPositionBusinessEvent : counterpartyPositionBusinessEvent
        click CounterpartyPositionBusinessEvent href "../CounterpartyPositionBusinessEvent/"



      WorkflowStep : creditLimitInformation





        WorkflowStep --> "0..1" CreditLimitInformation : creditLimitInformation
        click CreditLimitInformation href "../CreditLimitInformation/"



      WorkflowStep : eventIdentifier





        WorkflowStep --> "1..*" Identifier : eventIdentifier
        click Identifier href "../Identifier/"



      WorkflowStep : lineage





        WorkflowStep --> "0..1" Lineage : lineage
        click Lineage href "../Lineage/"



      WorkflowStep : messageInformation





        WorkflowStep --> "0..1" MessageInformation : messageInformation
        click MessageInformation href "../MessageInformation/"



      WorkflowStep : nextEvent





        WorkflowStep --> "0..1" EventInstruction : nextEvent
        click EventInstruction href "../EventInstruction/"



      WorkflowStep : party





        WorkflowStep --> "*" Party : party
        click Party href "../Party/"



      WorkflowStep : previousWorkflowStep





        WorkflowStep --> "0..1" WorkflowStep : previousWorkflowStep
        click WorkflowStep href "../WorkflowStep/"



      WorkflowStep : proposedEvent





        WorkflowStep --> "0..1" EventInstruction : proposedEvent
        click EventInstruction href "../EventInstruction/"



      WorkflowStep : rejected

      WorkflowStep : timestamp





        WorkflowStep --> "1..*" EventTimestamp : timestamp
        click EventTimestamp href "../EventTimestamp/"



      WorkflowStep : workflowState





        WorkflowStep --> "0..1" WorkflowState : workflowState
        click WorkflowState href "../WorkflowState/"



Class Properties

Property Value
Tree Root Yes

Slots

Name Cardinality and Range Description Inheritance
businessEvent 0..1
BusinessEvent
Life cycle event for the step direct
counterpartyPositionBusinessEvent 0..1
CounterpartyPositionBusinessEvent
Documents the life cycle event for a position direct
proposedEvent 0..1
EventInstruction
The proposed event for a workflow step direct
rejected 0..1
Boolean
Flags this step as rejected direct
approval *
WorkflowStepApproval
Optional party approvals for the current workflow step direct
previousWorkflowStep 0..1
WorkflowStep
Optional previous workflow step that provides lineage to workflow steps that ... direct
nextEvent 0..1
EventInstruction
The intended next event can be specified, even if the instructions are not kn... direct
messageInformation 0..1
MessageInformation
Contains all information pertaining the FpML messaging header direct
timestamp 1..*
EventTimestamp
The set of timestamp(s) associated with the event as a collection of [dateTim... direct
eventIdentifier 1..*
Identifier
The identifier(s) that uniquely identify a lifecycle event direct
action 0..1
ActionEnum
Specifies whether the event is a new, a correction or a cancellation direct
party *
Party
The specification of the event parties direct
account *
Account
Optional account information that could be associated to the event direct
lineage 0..1
Lineage
The lineage attribute provides a linkage among lifecycle events through the g... direct
creditLimitInformation 0..1
CreditLimitInformation
direct
workflowState 0..1
WorkflowState
The event workflow information, i direct

Usages

used by used in type used
Lineage eventReference range WorkflowStep
WorkflowStep previousWorkflowStep range WorkflowStep
Workflow steps range WorkflowStep

Rules

Rule Applied Preconditions Postconditions Elseconditions

In Subsets

Comments

  • Rosetta condition: WorkflowStepStatus — (businessEvent exists and nextEvent -> instruction is absent and rejected is absent) or (nextEvent -> instruction exists and businessEvent is absent and rejected is absent) or (rejected exists and businessEvent is absent and nextEvent is absent) or (proposedEvent exists and nextEvent is absent and rejected is absent) or (previousWorkflowStep exists and action = ActionEnum -> Cancel)
  • Rosetta condition: CounterpartyPositionBusinessEventOrBusinessEventOrProposedEventChoice — required choice counterpartyPositionBusinessEvent, businessEvent, proposedEvent
  • Rosetta func: Create_WorkflowStep — Function to create a workflow step with a business event and associated details about the message, identifiers, event timestamps, parties and accounts involved in the step. The function should be used when there is already a fully formed business event with the action set to signify that the step is new, or a correction/cancellation of a previous step. The action is constrained so that when a previous workflow step is specified, the valid actions are as follows; New -> New, New -> Correct, New -> Cancel, Correct -> Correct and Correct -> Cancel. When a previous workflow is not specified, the action must be New.
  • Rosetta func: Create_AcceptedWorkflowStep — Represents the acceptance of a proposed instruction that results in a workflow step containing a business event, message details, identifiers, event timestamps, parties and accounts. The previous workflow step input must exist to provide workflow lineage. The instruction from the previous workflow step should be used with a [creation BusinessEvent] function to create the input business event passed into this function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange to produce the business event which should used as an input to this step.
  • Rosetta func: Create_AcceptedWorkflowStepFromInstruction — Represents the acceptance of a proposed instruction that results in a workflow step containing a business event, message details, identifiers, event timestamps, parties and accounts. The previous workflow step input must exist to provide workflow lineage. The instruction from the previous workflow step should be used with a [creation BusinessEvent] function to create the input business event passed into this function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange to produce the business event which should used as an input to this step.
  • Rosetta func: Create_ProposedWorkflowStep — Represents the proposal to create a business event that results in a workflow step containing an instruction, message details, identifiers, event timestamps, parties and accounts. The optional previous workflow step input provides workflow lineage to where there has been a correction or cancellation to the proposed step. The action is constrained so that when a previous workflow step is specified, the valid actions are as follows; New -> Correct and Correct -> Cancel. When a previous workflow is not specified, the action must be New.
  • Rosetta func: Create_RejectedWorkflowStep — Represents the rejection of a proposed instruction that results in a workflow step containing the rejection flag, message details, identifiers, event timestamps, parties and accounts involved in the step. The previous workflow step input must exist to provide workflow lineage. This function will be further developed to provide the reasons for rejection.
  • Rosetta func: Create_Workflow — Function to create a Workflow from a list of WorkflowStep.

Identifier and Mapping Information

Annotations

property value
metadata_key True
rosetta_functions [{"name":"Create_WorkflowStep","description":"Function to create a workflow step with a business event and associated details about the message, identifiers, event timestamps, parties and accounts involved in the step. The function should be used when there is already a fully formed business event with the action set to signify that the step is new, or a correction/cancellation of a previous step. The action is constrained so that when a previous workflow step is specified, the valid actions are as follows; New -> New, New -> Correct, New -> Cancel, Correct -> Correct and Correct -> Cancel. When a previous workflow is not specified, the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1.."},{"name":"eventIdentifier","type":"Identifier","cardinality":"1.."},{"name":"party","type":"Party","cardinality":"0.."},{"name":"account","type":"Account","cardinality":"0.."},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"0..1"}],"output":{"name":"workflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStep","description":"Represents the acceptance of a proposed instruction that results in a workflow step containing a business event, message details, identifiers, event timestamps, parties and accounts. The previous workflow step input must exist to provide workflow lineage. The instruction from the previous workflow step should be used with a [creation BusinessEvent] function to create the input business event passed into this function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange to produce the business event which should used as an input to this step.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1.."},{"name":"eventIdentifier","type":"Identifier","cardinality":"1.."},{"name":"party","type":"Party","cardinality":"0.."},{"name":"account","type":"Account","cardinality":"0.."},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStepFromInstruction","description":"Represents the acceptance of a proposed instruction that results in a workflow step containing a business event, message details, identifiers, event timestamps, parties and accounts. The previous workflow step input must exist to provide workflow lineage. The instruction from the previous workflow step should be used with a [creation BusinessEvent] function to create the input business event passed into this function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange to produce the business event which should used as an input to this step.","inputs":[{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_ProposedWorkflowStep","description":"Represents the proposal to create a business event that results in a workflow step containing an instruction, message details, identifiers, event timestamps, parties and accounts. The optional previous workflow step input provides workflow lineage to where there has been a correction or cancellation to the proposed step. The action is constrained so that when a previous workflow step is specified, the valid actions are as follows; New -> Correct and Correct -> Cancel. When a previous workflow is not specified, the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1.."},{"name":"eventIdentifier","type":"Identifier","cardinality":"1.."},{"name":"party","type":"Party","cardinality":"0.."},{"name":"account","type":"Account","cardinality":"0.."},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"proposedEvent","type":"EventInstruction","cardinality":"1..1"},{"name":"approval","type":"WorkflowStepApproval","cardinality":"0.."}],"output":{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_RejectedWorkflowStep","description":"Represents the rejection of a proposed instruction that results in a workflow step containing the rejection flag, message details, identifiers, event timestamps, parties and accounts involved in the step. The previous workflow step input must exist to provide workflow lineage. This function will be further developed to provide the reasons for rejection.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1.."},{"name":"eventIdentifier","type":"Identifier","cardinality":"1.."},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"rejectedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_Workflow","description":"Function to create a Workflow from a list of WorkflowStep.","inputs":[{"name":"steps","type":"WorkflowStep","cardinality":"1.."}],"output":{"name":"workflow","type":"Workflow","cardinality":"1..1"}}]

Schema Source

Mappings

Mapping Type Mapped Value
self common_domain_model:WorkflowStep
native common_domain_model:WorkflowStep

LinkML Source

Direct

name: WorkflowStep
annotations:
  metadata_key:
    tag: metadata_key
    value: true
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"Create_WorkflowStep","description":"Function to create a workflow
      step with a business event and associated details about the message, identifiers,
      event timestamps, parties and accounts involved in the step. The function should
      be used when there is already a fully formed business event with the action
      set to signify that the step is new, or a correction/cancellation of a previous
      step. The action is constrained so that when a previous workflow step is specified,
      the valid actions are as follows; New -> New, New -> Correct, New -> Cancel,
      Correct -> Correct and Correct -> Cancel. When a previous workflow is not specified,
      the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"0..1"}],"output":{"name":"workflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStep","description":"Represents
      the acceptance of a proposed instruction that results in a workflow step containing
      a business event, message details, identifiers, event timestamps, parties and
      accounts. The previous workflow step input must exist to provide workflow lineage.
      The instruction from the previous workflow step should be used with a [creation
      BusinessEvent] function to create the input business event passed into this
      function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange
      to produce the business event which should used as an input to this step.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStepFromInstruction","description":"Represents
      the acceptance of a proposed instruction that results in a workflow step containing
      a business event, message details, identifiers, event timestamps, parties and
      accounts. The previous workflow step input must exist to provide workflow lineage.
      The instruction from the previous workflow step should be used with a [creation
      BusinessEvent] function to create the input business event passed into this
      function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange
      to produce the business event which should used as an input to this step.","inputs":[{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_ProposedWorkflowStep","description":"Represents
      the proposal to create a business event that results in a workflow step containing
      an instruction, message details, identifiers, event timestamps, parties and
      accounts. The optional previous workflow step input provides workflow lineage
      to where there has been a correction or cancellation to the proposed step. The
      action is constrained so that when a previous workflow step is specified, the
      valid actions are as follows; New -> Correct and Correct -> Cancel. When a previous
      workflow is not specified, the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"proposedEvent","type":"EventInstruction","cardinality":"1..1"},{"name":"approval","type":"WorkflowStepApproval","cardinality":"0..*"}],"output":{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_RejectedWorkflowStep","description":"Represents
      the rejection of a proposed instruction that results in a workflow step containing
      the rejection flag, message details, identifiers, event timestamps, parties
      and accounts involved in the step. The previous workflow step input must exist
      to provide workflow lineage. This function will be further developed to provide
      the reasons for rejection.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"rejectedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_Workflow","description":"Function
      to create a Workflow from a list of WorkflowStep.","inputs":[{"name":"steps","type":"WorkflowStep","cardinality":"1..*"}],"output":{"name":"workflow","type":"Workflow","cardinality":"1..1"}}]'
description: A workflow step represents the state of a business event. The workflow
  step contains a reference to a previous WorkflowStep in order to preserve lineage.
  A workflow step is accepted if it contains a business event, proposed if proposedEvent
  is present and is rejected if the rejected flag is set.
comments:
- 'Rosetta condition: WorkflowStepStatus  (businessEvent exists and nextEvent ->
  instruction is absent and rejected is absent) or (nextEvent -> instruction exists
  and businessEvent is absent and rejected is absent) or (rejected exists and businessEvent
  is absent and nextEvent is absent) or (proposedEvent exists and nextEvent is absent
  and rejected is absent) or (previousWorkflowStep exists and action = ActionEnum
  -> Cancel)'
- 'Rosetta condition: CounterpartyPositionBusinessEventOrBusinessEventOrProposedEventChoice
   required choice counterpartyPositionBusinessEvent, businessEvent, proposedEvent'
- 'Rosetta func: Create_WorkflowStep  Function to create a workflow step with a business
  event and associated details about the message, identifiers, event timestamps, parties
  and accounts involved in the step. The function should be used when there is already
  a fully formed business event with the action set to signify that the step is new,
  or a correction/cancellation of a previous step. The action is constrained so that
  when a previous workflow step is specified, the valid actions are as follows; New
  -> New, New -> Correct, New -> Cancel, Correct -> Correct and Correct -> Cancel.
  When a previous workflow is not specified, the action must be New.'
- 'Rosetta func: Create_AcceptedWorkflowStep  Represents the acceptance of a proposed
  instruction that results in a workflow step containing a business event, message
  details, identifiers, event timestamps, parties and accounts. The previous workflow
  step input must exist to provide workflow lineage. The instruction from the previous
  workflow step should be used with a [creation BusinessEvent] function to create
  the input business event passed into this function e.g. PartyChangeInstruction from
  the previous step is used with Create_PartyChange to produce the business event
  which should used as an input to this step.'
- 'Rosetta func: Create_AcceptedWorkflowStepFromInstruction  Represents the acceptance
  of a proposed instruction that results in a workflow step containing a business
  event, message details, identifiers, event timestamps, parties and accounts. The
  previous workflow step input must exist to provide workflow lineage. The instruction
  from the previous workflow step should be used with a [creation BusinessEvent] function
  to create the input business event passed into this function e.g. PartyChangeInstruction
  from the previous step is used with Create_PartyChange to produce the business event
  which should used as an input to this step.'
- 'Rosetta func: Create_ProposedWorkflowStep  Represents the proposal to create a
  business event that results in a workflow step containing an instruction, message
  details, identifiers, event timestamps, parties and accounts. The optional previous
  workflow step input provides workflow lineage to where there has been a correction
  or cancellation to the proposed step. The action is constrained so that when a previous
  workflow step is specified, the valid actions are as follows; New -> Correct and
  Correct -> Cancel. When a previous workflow is not specified, the action must be
  New.'
- 'Rosetta func: Create_RejectedWorkflowStep  Represents the rejection of a proposed
  instruction that results in a workflow step containing the rejection flag, message
  details, identifiers, event timestamps, parties and accounts involved in the step.
  The previous workflow step input must exist to provide workflow lineage. This function
  will be further developed to provide the reasons for rejection.'
- 'Rosetta func: Create_Workflow  Function to create a Workflow from a list of WorkflowStep.'
in_subset:
- cdm_event_workflow
from_schema: https://w3id.org/lmodel/common-domain-model
slots:
- businessEvent
- counterpartyPositionBusinessEvent
- proposedEvent
- rejected
- approval
- previousWorkflowStep
- nextEvent
- messageInformation
- timestamp
- eventIdentifier
- action
- party
- account
- lineage
- creditLimitInformation
- workflowState
slot_usage:
  messageInformation:
    name: messageInformation
    description: 'Contains all information pertaining the FpML messaging header '
  timestamp:
    name: timestamp
    description: The set of timestamp(s) associated with the event as a collection
      of [dateTime, qualifier].
    range: EventTimestamp
    multivalued: true
  party:
    name: party
    description: The specification of the event parties. This attribute is optional,
      as not applicable to certain events (e.g. most of the observations).
    range: Party
    multivalued: true
  account:
    name: account
    description: Optional account information that could be associated to the event.
    multivalued: true
  lineage:
    name: lineage
    description: The lineage attribute provides a linkage among lifecycle events through
      the globalKey hash value. One example is when a given lifecycle event is being
      corrected or cancelled. In such case, each subsequent event will have lineage
      into the prior version of that event. The second broad use case is when an event
      has a dependency upon either another event (e.g. the regular payment associated
      with a fix/float swap will have a lineage into the reset event, which will in
      turn have a lineage into the observation event for the floating rate and the
      contract) or a contract (e.g. the exercise of an option has a lineage into that
      option).
    deprecated: Deprecated in CDM
    required: false
tree_root: true
rules:
- postconditions:
    exactly_one_of:
    - slot_conditions:
        counterpartyPositionBusinessEvent:
          name: counterpartyPositionBusinessEvent
          required: true
    - slot_conditions:
        businessEvent:
          name: businessEvent
          required: true
    - slot_conditions:
        proposedEvent:
          name: proposedEvent
          required: true
  description: Choice rule to control that either positionBusinessEvent is present,
    businessEvent is present or proposedEvent is present, but not more than one at
    the same time.

Induced

name: WorkflowStep
annotations:
  metadata_key:
    tag: metadata_key
    value: true
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"Create_WorkflowStep","description":"Function to create a workflow
      step with a business event and associated details about the message, identifiers,
      event timestamps, parties and accounts involved in the step. The function should
      be used when there is already a fully formed business event with the action
      set to signify that the step is new, or a correction/cancellation of a previous
      step. The action is constrained so that when a previous workflow step is specified,
      the valid actions are as follows; New -> New, New -> Correct, New -> Cancel,
      Correct -> Correct and Correct -> Cancel. When a previous workflow is not specified,
      the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"0..1"}],"output":{"name":"workflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStep","description":"Represents
      the acceptance of a proposed instruction that results in a workflow step containing
      a business event, message details, identifiers, event timestamps, parties and
      accounts. The previous workflow step input must exist to provide workflow lineage.
      The instruction from the previous workflow step should be used with a [creation
      BusinessEvent] function to create the input business event passed into this
      function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange
      to produce the business event which should used as an input to this step.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"},{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_AcceptedWorkflowStepFromInstruction","description":"Represents
      the acceptance of a proposed instruction that results in a workflow step containing
      a business event, message details, identifiers, event timestamps, parties and
      accounts. The previous workflow step input must exist to provide workflow lineage.
      The instruction from the previous workflow step should be used with a [creation
      BusinessEvent] function to create the input business event passed into this
      function e.g. PartyChangeInstruction from the previous step is used with Create_PartyChange
      to produce the business event which should used as an input to this step.","inputs":[{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"acceptedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_ProposedWorkflowStep","description":"Represents
      the proposal to create a business event that results in a workflow step containing
      an instruction, message details, identifiers, event timestamps, parties and
      accounts. The optional previous workflow step input provides workflow lineage
      to where there has been a correction or cancellation to the proposed step. The
      action is constrained so that when a previous workflow step is specified, the
      valid actions are as follows; New -> Correct and Correct -> Cancel. When a previous
      workflow is not specified, the action must be New.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"party","type":"Party","cardinality":"0..*"},{"name":"account","type":"Account","cardinality":"0..*"},{"name":"previousWorkflowStep","type":"WorkflowStep","cardinality":"0..1"},{"name":"action","type":"ActionEnum","cardinality":"1..1"},{"name":"proposedEvent","type":"EventInstruction","cardinality":"1..1"},{"name":"approval","type":"WorkflowStepApproval","cardinality":"0..*"}],"output":{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_RejectedWorkflowStep","description":"Represents
      the rejection of a proposed instruction that results in a workflow step containing
      the rejection flag, message details, identifiers, event timestamps, parties
      and accounts involved in the step. The previous workflow step input must exist
      to provide workflow lineage. This function will be further developed to provide
      the reasons for rejection.","inputs":[{"name":"messageInformation","type":"MessageInformation","cardinality":"0..1"},{"name":"timestamp","type":"EventTimestamp","cardinality":"1..*"},{"name":"eventIdentifier","type":"Identifier","cardinality":"1..*"},{"name":"proposedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}],"output":{"name":"rejectedWorkflowStep","type":"WorkflowStep","cardinality":"1..1"}},{"name":"Create_Workflow","description":"Function
      to create a Workflow from a list of WorkflowStep.","inputs":[{"name":"steps","type":"WorkflowStep","cardinality":"1..*"}],"output":{"name":"workflow","type":"Workflow","cardinality":"1..1"}}]'
description: A workflow step represents the state of a business event. The workflow
  step contains a reference to a previous WorkflowStep in order to preserve lineage.
  A workflow step is accepted if it contains a business event, proposed if proposedEvent
  is present and is rejected if the rejected flag is set.
comments:
- 'Rosetta condition: WorkflowStepStatus  (businessEvent exists and nextEvent ->
  instruction is absent and rejected is absent) or (nextEvent -> instruction exists
  and businessEvent is absent and rejected is absent) or (rejected exists and businessEvent
  is absent and nextEvent is absent) or (proposedEvent exists and nextEvent is absent
  and rejected is absent) or (previousWorkflowStep exists and action = ActionEnum
  -> Cancel)'
- 'Rosetta condition: CounterpartyPositionBusinessEventOrBusinessEventOrProposedEventChoice
   required choice counterpartyPositionBusinessEvent, businessEvent, proposedEvent'
- 'Rosetta func: Create_WorkflowStep  Function to create a workflow step with a business
  event and associated details about the message, identifiers, event timestamps, parties
  and accounts involved in the step. The function should be used when there is already
  a fully formed business event with the action set to signify that the step is new,
  or a correction/cancellation of a previous step. The action is constrained so that
  when a previous workflow step is specified, the valid actions are as follows; New
  -> New, New -> Correct, New -> Cancel, Correct -> Correct and Correct -> Cancel.
  When a previous workflow is not specified, the action must be New.'
- 'Rosetta func: Create_AcceptedWorkflowStep  Represents the acceptance of a proposed
  instruction that results in a workflow step containing a business event, message
  details, identifiers, event timestamps, parties and accounts. The previous workflow
  step input must exist to provide workflow lineage. The instruction from the previous
  workflow step should be used with a [creation BusinessEvent] function to create
  the input business event passed into this function e.g. PartyChangeInstruction from
  the previous step is used with Create_PartyChange to produce the business event
  which should used as an input to this step.'
- 'Rosetta func: Create_AcceptedWorkflowStepFromInstruction  Represents the acceptance
  of a proposed instruction that results in a workflow step containing a business
  event, message details, identifiers, event timestamps, parties and accounts. The
  previous workflow step input must exist to provide workflow lineage. The instruction
  from the previous workflow step should be used with a [creation BusinessEvent] function
  to create the input business event passed into this function e.g. PartyChangeInstruction
  from the previous step is used with Create_PartyChange to produce the business event
  which should used as an input to this step.'
- 'Rosetta func: Create_ProposedWorkflowStep  Represents the proposal to create a
  business event that results in a workflow step containing an instruction, message
  details, identifiers, event timestamps, parties and accounts. The optional previous
  workflow step input provides workflow lineage to where there has been a correction
  or cancellation to the proposed step. The action is constrained so that when a previous
  workflow step is specified, the valid actions are as follows; New -> Correct and
  Correct -> Cancel. When a previous workflow is not specified, the action must be
  New.'
- 'Rosetta func: Create_RejectedWorkflowStep  Represents the rejection of a proposed
  instruction that results in a workflow step containing the rejection flag, message
  details, identifiers, event timestamps, parties and accounts involved in the step.
  The previous workflow step input must exist to provide workflow lineage. This function
  will be further developed to provide the reasons for rejection.'
- 'Rosetta func: Create_Workflow  Function to create a Workflow from a list of WorkflowStep.'
in_subset:
- cdm_event_workflow
from_schema: https://w3id.org/lmodel/common-domain-model
slot_usage:
  messageInformation:
    name: messageInformation
    description: 'Contains all information pertaining the FpML messaging header '
  timestamp:
    name: timestamp
    description: The set of timestamp(s) associated with the event as a collection
      of [dateTime, qualifier].
    range: EventTimestamp
    multivalued: true
  party:
    name: party
    description: The specification of the event parties. This attribute is optional,
      as not applicable to certain events (e.g. most of the observations).
    range: Party
    multivalued: true
  account:
    name: account
    description: Optional account information that could be associated to the event.
    multivalued: true
  lineage:
    name: lineage
    description: The lineage attribute provides a linkage among lifecycle events through
      the globalKey hash value. One example is when a given lifecycle event is being
      corrected or cancelled. In such case, each subsequent event will have lineage
      into the prior version of that event. The second broad use case is when an event
      has a dependency upon either another event (e.g. the regular payment associated
      with a fix/float swap will have a lineage into the reset event, which will in
      turn have a lineage into the observation event for the floating rate and the
      contract) or a contract (e.g. the exercise of an option has a lineage into that
      option).
    deprecated: Deprecated in CDM
    required: false
attributes:
  businessEvent:
    name: businessEvent
    description: Life cycle event for the step.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: BusinessEvent
  counterpartyPositionBusinessEvent:
    name: counterpartyPositionBusinessEvent
    description: Documents the life cycle event for a position.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: CounterpartyPositionBusinessEvent
  proposedEvent:
    name: proposedEvent
    description: The proposed event for a workflow step.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: EventInstruction
  rejected:
    name: rejected
    description: Flags this step as rejected.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: boolean
  approval:
    name: approval
    description: Optional party approvals for the current workflow step. A workflow
      step can have any number of parties associated to it, thus this object is represented
      as a list. All parties that are expected to provide approval should have an
      item in this list that references them.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: WorkflowStepApproval
    multivalued: true
    inlined: true
    inlined_as_list: true
  previousWorkflowStep:
    name: previousWorkflowStep
    annotations:
      metadata_reference:
        tag: metadata_reference
        value: true
    description: Optional previous workflow step that provides lineage to workflow
      steps that precedes it.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: WorkflowStep
  nextEvent:
    name: nextEvent
    description: The intended next event can be specified, even if the instructions
      are not known yet.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: EventInstruction
  messageInformation:
    name: messageInformation
    description: 'Contains all information pertaining the FpML messaging header '
    from_schema: https://w3id.org/lmodel/common-domain-model
    close_mappings:
    - fpml_5_10:AvailableInventory.messageInformation
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - AvailableInventory
    - WorkflowStep
    range: MessageInformation
  timestamp:
    name: timestamp
    description: The set of timestamp(s) associated with the event as a collection
      of [dateTime, qualifier].
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - Valuation
    - WorkflowStepApproval
    - WorkflowStep
    range: EventTimestamp
    required: true
    multivalued: true
  eventIdentifier:
    name: eventIdentifier
    description: The identifier(s) that uniquely identify a lifecycle event. The unbounded
      cardinality is meant to provide the ability to associate identifiers that are
      issued by distinct parties. As an example, each of the parties to the event
      may choose to associate their own identifiers to the event.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: Identifier
    required: true
    multivalued: true
    inlined: true
    inlined_as_list: true
  action:
    name: action
    description: Specifies whether the event is a new, a correction or a cancellation.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: ActionEnum
  party:
    name: party
    description: The specification of the event parties. This attribute is optional,
      as not applicable to certain events (e.g. most of the observations).
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - DebtRedemption
    - Trade
    - MarginCallBase
    - CounterpartyPosition
    - AggregationParameters
    - AvailableInventory
    - WorkflowStepApproval
    - WorkflowStep
    - UmbrellaAgreementParty
    - UmbrellaAgreementSet
    - AdditionalRepresentationElection
    - CalculationAgentTerms
    - CalculationCurrencyElection
    - ValuationCalculationDateLocationElection
    - CollateralManagementAgreementElection
    - ControlAgreementElections
    - ControlAgreementNecEventElection
    - CustodianElection
    - CustodianRiskElection
    - ElectiveAmountElection
    - FrenchLawAddendumElection
    - HoldingAndUsingPostedCollateralElection
    - NotificationTimeElection
    - PostingObligationsElection
    - RecalculationOfValueElection
    - RegimeTerms
    - PledgeeRepresentativeRider
    - SecuredPartyRightsEventElection
    - SecurityProviderRightsEventElection
    - SensitivityMethodologiesPartyElection
    - SubstitutedRegimeTerms
    - SubstitutionPartyElection
    - TerminationCurrencyElection
    - AdditionalObligations
    - SecurityInterestForObligations
    - SinglePostingParty
    - ThresholdElection
    - MinimumTransferAmountElection
    - ValuationAgent
    - LegacyExposureScopeElection
    - CreditSupportDocumentElection
    - CreditSupportProviderElection
    - SpecifiedOrAccessConditionPartyElection
    - LegacyIndependentAmountParty
    - AutomaticEarlyTerminationElection
    - PartyTerminationCurrencySelection
    - SpecifiedEntity
    - EventsOfDefaultElection
    - EligibleCollateralSpecification
    range: Party
    multivalued: true
  account:
    name: account
    description: Optional account information that could be associated to the event.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - Party
    - Trade
    - WorkflowStep
    - TransferContactInformation
    range: Account
    multivalued: true
  lineage:
    name: lineage
    description: The lineage attribute provides a linkage among lifecycle events through
      the globalKey hash value. One example is when a given lifecycle event is being
      corrected or cancelled. In such case, each subsequent event will have lineage
      into the prior version of that event. The second broad use case is when an event
      has a dependency upon either another event (e.g. the regular payment associated
      with a fix/float swap will have a lineage into the reset event, which will in
      turn have a lineage into the observation event for the floating rate and the
      contract) or a contract (e.g. the exercise of an option has a lineage into that
      option).
    deprecated: Deprecated in CDM
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - PortfolioState
    - WorkflowStep
    range: Lineage
    required: false
  creditLimitInformation:
    name: creditLimitInformation
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: CreditLimitInformation
  workflowState:
    name: workflowState
    description: The event workflow information, i.e. the workflow status, the associated
      comment and the partyCustomisedWorkflow which purpose is to provide the ability
      to associate custom workflow information to the CDM.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: WorkflowStep
    domain_of:
    - WorkflowStep
    range: WorkflowState
tree_root: true
rules:
- postconditions:
    exactly_one_of:
    - slot_conditions:
        counterpartyPositionBusinessEvent:
          name: counterpartyPositionBusinessEvent
          required: true
    - slot_conditions:
        businessEvent:
          name: businessEvent
          required: true
    - slot_conditions:
        proposedEvent:
          name: proposedEvent
          required: true
  description: Choice rule to control that either positionBusinessEvent is present,
    businessEvent is present or proposedEvent is present, but not more than one at
    the same time.