- entityDefinitions:
  - IDI_Task_Class_Create: '{6626b5df-3a2e-4255-92c9-a6ee1ee01805}'
  - IDE_Class_Create: '{71c8536a-8150-4b63-985f-63e42315100d}'
  - IDE_Class_Create_Start: '{708483ff-151c-4b0a-8d78-c30fcebdd99d}'
  - IDE_Class_Create_Subedit: '{aaa045ca-2c73-4894-8e73-d94bdc0adf7d}'
    
# fixme: actually implement `create class` by calling a
# GSS/get instance set by system routine `create instance` and using that instance 
  
- library: '&IDL_MochaBaseSystem;'
  instances:
  - element: '&IDE_Class_Create_Start;'
    name: 'class definition'
    # processedByCTMethod: '&IDM_ClassCreateStart;'
    elementContents:
    - globalIdentifier: '{c9fb7b84-a6d5-4211-a632-64cfe2cfcf6f}'
      defaultDataType: '&IDE_Class_Definition;'

  - sequenceTask: '&IDI_Task_Class_Create;'
    name: 'Create Class'

    # the element displayed when the task is directly executed with no additional parameters
    # (usually, allows selecting the related instance for the task, or the parms for a report display)
    # upon related task execution,
    #   - this element is automatically "filled in"
    #   - execution passes to the element's "processed by CT" method
    # 
    initiatingElement: '&IDE_Class_Create_Start;'
    taskCategory: '&IDI_TaskCategory_Class;'
    
  - processRelatedUpdatesMethod: '&IDM_Class_Edit_Metadata_PRU;'
    usesExecutableForPUMB:
    - globalIdentifier: '{26f2bf55-fc68-4fe5-adaa-a679f6ae4bc1}'
      executesMethod:
      - globalIdentifier: '{0cd3577e-453b-4a55-811f-a1392d5d67df}'
        name: 'PU for class edit metadata'
        forClassId: '&IDC_Class;'
        hasPUMProcess:
        - globalIdentifier: '{e40fb1fc-c329-4563-8d00-fe8f3e34e876}'
          invokesExecuteUpdateMethodBindings:
          - type: '&IDC_ExecuteUpdateMethodBinding;'
            globalIdentifier: '{373f5824-5480-45a1-94c0-a8cc6a2c2298}'
            executesMethod:
            - type: '&IDC_UpdateBySystemRoutineMethod;'
              globalIdentifier: '{9c4b4c29-ae89-4f99-8093-6b84e27795a8}'
              forClassId: '&IDC_Class;'
              name: 'Create Instance'
              systemUpdateRoutineId: '&IDI_SystemUpdateRoutine_CreateInstance;'
            parameterAssignments:
            # !!! FIXME !!!
            - globalIdentifier: '{8ee2e866-1f97-4a2d-862c-fb2d97f60c16}'
              assignsToParameter: '&IDC_Class;'
              assignsFromWorkData: '&IDC_Class;'
          - type: '&IDC_AssignAttributeMethod;'
            globalIdentifier: '{d3c868d3-53ba-4a20-98bb-0980bf711ee9}'
      
  - element: '&IDE_Class_Create_Subedit;'
    name: 'class create subedits'
    # these should be processed by the same PRU that updates the Edit task
    processedByPRUMethod: '&IDM_Class_Edit_Metadata_PRU;'
    elementContents:
    - globalIdentifier: '{ad59104a-08aa-44e7-80c8-4ba4069eac40}'
      defaultDataType: '&IDC_Class;'
      displayOptions:
      - instance: '&IDI_DisplayOption_DoNotShow;'
    - globalIdentifier: '{1d3d90b2-4330-4ba3-9e1b-f8f8fb4b0e35}'
      defaultDataType: '&IDA_Name;'
    - globalIdentifier: '{4520268c-701b-437e-8398-d4c12a5b78fd}'
      defaultDataType: '&IDR_Instance__for__Module;'
      label: 'Module'
      # displayOptions:
      # - instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
      # - instance: '&IDI_DisplayOption_Singular;'

    - globalIdentifier: '{4fca077c-c7b7-4208-a103-3d1cf84dcf99}'
      defaultDataType: '&IDR_Metadata_With_Access_Modifier__has__Access_Modifier;'
      label: 'Access'
      # displayOptions:
      # - instance: '&IDI_DisplayOption_ShowSubelementsVertically;'
      # - instance: '&IDI_DisplayOption_Singular;'
