category: Tutorial
name: Orchestration
persistence: true
api_generation: true
abstract: false
attributes:
  local_fields:
    - field_name: systemA
      field_type: <AxisAtom.ShadowA>
      field_persistence: true
      field_nullable: false
      field_immutable: false
      field_unique: false
      field_default: atom.ShadowA(name=uuid.uuid1().hex)
    - field_name: systemB
      field_type: <AxisAtom.ShadowB>
      field_persistence: true
      field_nullable: false
      field_immutable: false
      field_unique: false
      field_default: atom.ShadowB(name=uuid.uuid1().hex)
    - field_name: status
      field_type: string
      field_persistence: true
      field_nullable: true
      field_immutable: false
      field_unique: false
      field_fsm:
        created:
          execution_method: create
          failure_transition: deleted
        deleted:
          execution_method: delete
      field_metadata:
        POST: false
        PUT: false
  ref_fields: []
  identifier:
    field_name: id
    field_type: string
    field_persistence: true
    field_immutable: true
    field_metadata:
      POST: false
      PUT: false
methods:
  class_methods: []
  instance_methods:
    - method_body: |-
        def initialize(self, *args, **kwargs):
            if not self.id:
                self.id = uuid.uuid1().hex
      propagation_mode: false
      topdown: true
      auto_rollback: true
      multiplexable_number: 1
      field_order: ascend
    - method_body: |-
        async def create(self, *args, **kwargs):
            pass
      propagation_mode: true
      topdown: true
      auto_rollback: true
      multiplexable_number: 1
      field_order: ascend
    - method_body: |-
        async def delete(self, *args, **kwargs):
            pass
      propagation_mode: true
      topdown: false
      auto_rollback: true
      multiplexable_number: 1
      field_order: descend