<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Validation.V1.xml">
    <edmx:Include Alias="Validation" Namespace="Org.OData.Validation.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="WorkflowService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="Workflows" EntityType="WorkflowService.Workflows">
          <NavigationPropertyBinding Path="approvalLevels" Target="WorkflowApprovalLevels"/>
          <NavigationPropertyBinding Path="conditions" Target="WorkflowConditions"/>
        </EntitySet>
        <EntitySet Name="WorkflowApprovalLevels" EntityType="WorkflowService.WorkflowApprovalLevels">
          <NavigationPropertyBinding Path="workflow" Target="Workflows"/>
        </EntitySet>
        <EntitySet Name="WorkflowConditions" EntityType="WorkflowService.WorkflowConditions">
          <NavigationPropertyBinding Path="workflow" Target="Workflows"/>
          <NavigationPropertyBinding Path="approvalLevel" Target="WorkflowApprovalLevels"/>
        </EntitySet>
        <ActionImport Name="createWorkflow" Action="WorkflowService.createWorkflow"/>
        <ActionImport Name="updateWorkflow" Action="WorkflowService.updateWorkflow"/>
        <ActionImport Name="deleteWorkflow" Action="WorkflowService.deleteWorkflow"/>
      </EntityContainer>
      <EntityType Name="Workflows">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="workflowType" Type="Edm.String" MaxLength="50"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="appliesTo" Type="Edm.String"/>
        <Property Name="hideSkippedStepsFromEmployee" Type="Edm.Boolean" DefaultValue="false"/>
        <Property Name="skipIfAlreadyApproved" Type="Edm.Boolean" DefaultValue="false"/>
        <NavigationProperty Name="approvalLevels" Type="Collection(WorkflowService.WorkflowApprovalLevels)" Partner="workflow">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="conditions" Type="Collection(WorkflowService.WorkflowConditions)" Partner="workflow">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="createdBy_ID" Type="Edm.Guid"/>
        <Property Name="updatedBy_ID" Type="Edm.Guid"/>
      </EntityType>
      <EntityType Name="WorkflowApprovalLevels">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="workflow" Type="WorkflowService.Workflows" Nullable="false" Partner="approvalLevels">
          <ReferentialConstraint Property="workflow_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="workflow_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="orderLevel" Type="Edm.Int32" Nullable="false"/>
        <Property Name="levelName" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="roleCode" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="WorkflowConditions">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="workflow" Type="WorkflowService.Workflows" Nullable="false" Partner="conditions">
          <ReferentialConstraint Property="workflow_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="workflow_ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="approvalLevel" Type="WorkflowService.WorkflowApprovalLevels" Nullable="false">
          <ReferentialConstraint Property="approvalLevel_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="approvalLevel_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="conditionName" Type="Edm.String" MaxLength="150" Nullable="false"/>
        <Property Name="conditionJson" Type="Edm.String"/>
        <Property Name="actionType" Type="Edm.String" MaxLength="30" Nullable="false"/>
        <Property Name="actionTargetUser_ID" Type="Edm.Guid"/>
        <Property Name="emailRecipient" Type="Edm.String" MaxLength="150"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <Action Name="createWorkflow" IsBound="false">
        <Parameter Name="payload" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="updateWorkflow" IsBound="false">
        <Parameter Name="payload" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="deleteWorkflow" IsBound="false">
        <Parameter Name="id" Type="Edm.Guid"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Annotations Target="WorkflowService.Workflows/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.Workflows/workflowType">
        <Annotation Term="Validation.Minimum" String="expense"/>
        <Annotation Term="Validation.Maximum" String="travel"/>
      </Annotations>
      <Annotations Target="WorkflowService.Workflows/created_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.Workflows/updated_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowApprovalLevels/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowApprovalLevels/created_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowApprovalLevels/updated_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowConditions/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowConditions/created_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="WorkflowService.WorkflowConditions/updated_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>