<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contentHaul xmlns:a="http://www.appian.com/ae/types/2009">
    <rule>
        <name>${interface_createUpdateRecord_name}</name>
        <uuid>${interface_createUpdateRecord_uuid}</uuid>
        <description>${interface_createUpdateRecord_desc}</description>
        <parentUuid>${folder_rulesAndConstants}</parentUuid>
        <visibility>
            <advertise>false</advertise>
            <hierarchy>true</hierarchy>
            <indexable>true</indexable>
            <quota>false</quota>
            <searchable>true</searchable>
            <system>false</system>
            <unlogged>false</unlogged>
        </visibility>
        <definition>a!localVariables(
  local!creating: a!refreshVariable(
    value: isnull(ri!record),
    refreshOnReferencedVarChange: false
  ),
  local!oldRecord: a!refreshVariable(
    value: ri!record,
    refreshOnReferencedVarChange: false
  ),
  local!oldDocuments: a!refreshVariable(
    value: a!defaultValue(ri!documents, todocument({})),
    refreshOnReferencedVarChange: false
  ),
  #&quot;SYSTEM_SYSRULES_formLayout_v1&quot;(
    label: if(
      local!creating,
      &quot;${createRecord_header}&quot;,
      &quot;${update_record}&quot;
    ),
    contents: {
      #&quot;${interface_MAIN_uuid}&quot;(
        record: ri!record,
        documents: ri!documents,
        deletedDocuments: ri!deletedDocs,
        creating: local!creating,
        readOnly: false
      )
    },
    buttons: #&quot;SYSTEM_SYSRULES_ButtonLayout&quot;(
      primaryButtons: {
        if(
          local!creating,
          #&quot;SYSTEM_SYSRULES_ButtonWidgetSubmit&quot;(
            label: &quot;${createRecord_submit}&quot;,
            style: &quot;PRIMARY&quot;,
            saveInto: {
              a!save(ri!record.createdOn, now()),
              a!save(ri!record.createdBy, loggedInUser()),
              a!save(ri!record.updatedOn, now()),
              a!save(ri!record.updatedBy, loggedInUser()),
              a!save(ri!documents, reject(fn!isnull, ri!documents))
            }
          ),
          #&quot;SYSTEM_SYSRULES_ButtonWidgetSubmit&quot;(
            label: &quot;${update_record}&quot;,
            style: &quot;PRIMARY&quot;,
            saveInto: {
              a!save(ri!record.updatedOn, now()),
              a!save(ri!record.updatedBy, loggedInUser()),
              a!save(ri!oldRecord, local!oldRecord),
              a!save(ri!documents, reject(fn!isnull, ri!documents)),
              a!save(ri!addedDocs, reject(fn!isnull, difference(ri!documents, local!oldDocuments))),
              a!save(ri!oldDocs, local!oldDocuments)
            }
          )
        )
      },
      secondaryButtons: {
        if(
          local!creating,
          ${interface_createUpdateRecord_cancelButton},
          #&quot;SYSTEM_SYSRULES_ButtonWidgetSubmit&quot;(
            label: &quot;${cancel}&quot;,
            style: &quot;NORMAL&quot;,
            value: true,
            saveInto: {
              ri!cancel,
              a!save(ri!addedDocs, reject(fn!isnull, difference(ri!documents, local!oldDocuments))),
              a!save(ri!deletedDocs, append(difference(ri!deletedDocs, local!oldDocuments), ri!addedDocs))
            },
            skipValidation: true
          )
        )
      }
    )
  )
)</definition>
        <namedTypedValue>
            <name>record</name>
            <type>
                <name>${cdt_main_name}</name>
                <namespace>${cdt_namespace}</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>oldRecord</name>
            <type>
                <name>${cdt_main_name}</name>
                <namespace>${cdt_namespace}</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>documents</name>
            <type>
                <name>CollaborationDocument?list</name>
                <namespace>http://www.appian.com/ae/types/2009</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>addedDocs</name>
            <type>
                <name>CollaborationDocument?list</name>
                <namespace>http://www.appian.com/ae/types/2009</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>deletedDocs</name>
            <type>
                <name>CollaborationDocument?list</name>
                <namespace>http://www.appian.com/ae/types/2009</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>oldDocs</name>
            <type>
                <name>CollaborationDocument?list</name>
                <namespace>http://www.appian.com/ae/types/2009</namespace>
            </type>
        </namedTypedValue>
        <namedTypedValue>
            <name>cancel</name>
            <type>
                <name>boolean</name>
                <namespace>http://www.w3.org/2001/XMLSchema</namespace>
            </type>
        </namedTypedValue>
        <preferredEditor>interface</preferredEditor>
        <offlineEnabled>false</offlineEnabled>
    </rule>
    <roleMap public="true">
        <role allowForAll="false" inherit="true" name="readers">
            <users/>
            <groups/>
        </role>
        <role allowForAll="false" inherit="true" name="authors">
            <users/>
            <groups/>
        </role>
        <role allowForAll="false" inherit="true" name="administrators">
            <users/>
            <groups/>
        </role>
        <role allowForAll="false" inherit="false" name="denyReaders">
            <users/>
            <groups/>
        </role>
        <role allowForAll="false" inherit="false" name="denyAuthors">
            <users/>
            <groups/>
        </role>
        <role allowForAll="false" inherit="false" name="denyAdministrators">
            <users/>
            <groups/>
        </role>
    </roleMap>
</contentHaul>
