Создание схемы классификации

Прежде чем назначить схему классификации своей организации, ее необходимо создать, определив опции конфигурации для классификации в корректном файле JSON. Создаваемая схема классификации должна соответствовать грамматике классификации, схеме JSON, входящей в Portal for ArcGIS, которая описывает и проверяет схемы классификации.

В зависимости от потребностей вашей организации можно создать простую схему, которая, как минимум, определяет только требуемые свойства, или сложную схему, использующую выражения ArcGIS Arcade для высокодетализированной классификации элементов. См. полный пример схемы классификации ниже или загрузите пример схемы из репозитория ArcGIS/Classification GitHub.

Примечание:

Приведенные ниже примеры и образцы схем в репозитории ArcGIS/Classification GitHub предназначены для использования в качестве справочных материалов при создании схемы классификации, отвечающей потребностям вашей организации.

При создании схемы классификации начните с определения следующих свойств:

Примечание:

Свойство является необязательным, если не указано иное.

Примечание:

Выражения Arcade не поддерживают символы < и >.

  • name — Обязательное свойство, идентифицирующее имя схемы классификации.
  • version — Обязательное свойство, идентифицирующее версию схемы классификации.
  • grammarVersion — Обязательное свойство, указывающее версию грамматики классификации, которой придерживается схема. Версию грамматики классификации можно найти, перейдя в раздел Организация > Настройки > Элементы > Классификация элементов на веб-сайте портала.
  • helpToolTip — Текст справки, который появляется при наведении курсора на кнопку Информация Информация в верхней части формы классификации.
  • helpURL — URL-адрес документа справки схемы, который открывается на новой вкладке при нажатии кнопки Информация Информация в верхней части формы классификации.
  • bannerExpression — Информация о классификации, которая появляется в разделе Классификация на странице элемента. Можно использовать выражения Arcade для создания текста баннера или задать значение пустой строки для реализации общей логики кодировки, определенной для uiElements в форме классификации (например, bannerOrder, bannerLabel, и labelDelimiter).
    Примечание:

    Если пропустить это свойство или определить его как пустую строку, у вас должен быть хотя бы один атрибут с определенным bannerOrder для реализации общей логики кодировки.

  • selectionTextExpression — Информация о классификации, которая появляется в диалоговом окне Редактировать классификацию. Можно использовать выражения Arcade для создания текста баннера или задать значение пустой строки для реализации общей логики кодировки, определенной для uiElements в форме классификации (например, selectionDisplayOrder, selectionDisplayLabel, и labelDelimiter).
    Примечание:

    Если вы пропускаете это свойство или определяете его как пустую строку, у вас должен быть хотя бы один атрибут с определенным selectionDisplayOrder для реализации общей логики кодировки.

  • attributeCategories — Список категорий атрибутов, которые появляются в виде разделов или вкладок в форме классификации.
    Примечание:

    Слово default является зарезервированным ключевым словом и не может использоваться в качестве категории атрибута.

{ 
  "name": "academic-institution-classification-schema", 
  "version": "2.0", 
  "grammarVersion": "2.0", 
  "helpURL": "https://ansible.hynes.com/portal/home/schema_help.pdf", 
  "helpTooltip": "Click to open the schema help document", 
  "bannerExpression": "", 
  "selectionTextExpression": "", 
  "attributeCategories": [] 
}

Определение classificationMetadata

Обязательный объект classificationMetadata может включать следующие свойства:

  • primaryAttribute — Обязательное свойство, идентифицирующее атрибут, который появляется как основное поле классификации в форме классификации.
  • defaultValue — Обязательное свойство, которое определяет значение по умолчанию для свойства primaryAttribute.
  • classificationValueProperties — Обязательный массив объектов, в котором каждый объект представляет опцию классификации атрибута, идентифицированного как значение primaryAttribute, и определяет конкретные свойства для опции. Для каждой опции классификации можно определить следующие свойства:
    • value — Обязательное свойство, которое определяет надпись для опции, используемой в форме классификации.
    • acronym — Акроним опции.
    • textColor — Когда опция выбрана, ее надпись отображается этим цветом в разделе Текущие выборки в форме классификации. Цвет можно указать с помощью предварительно заданных названий цветов или значений RGB и HEX.
    • backgroundColor — Когда опция выбрана, ее надпись выделяется этим цветом в разделе Текущие выборки в форме классификации. Цвет можно указать с помощью предварительно заданных названий цветов или значений RGB и HEX.
{ 
... 
 
"classificationMetadata": { 
    "primaryAttribute": "classification", 
    "defaultValue": "Public Data", 
    "classificationValueProperties": [ 
      { 
        "value": "Public Data", 
        "acronym": "Public Data", 
        "backgroundColor": "Green", 
        "textColor": "Black" 
      }, 
      { 
        "value": "Restricted", 
        "acronym": "Restricted", 
        "backgroundColor": "Yellow", 
        "textColor": "Black" 
      }, 
      { 
        "value": "Confidential", 
        "acronym": "Confidential", 
        "backgroundColor": "Red", 
        "textColor": "Black" 
      } 
    ] 
  } 
}

Определение атрибутов

Каждый атрибут, определенный в обязательном объекте attributes, соответствует входному полю в форме классификации. Для каждого атрибута можно определить следующие свойства:

  • label — Обязательное свойство, которое определяет надпись для атрибута, используемого в форме классификации.
  • description — Описание, используемое в качестве заполнителя во входном поле.
  • type — Обязательное свойство, определяющее тип данных атрибута. Поддерживаемые типы данных: строка, дата, целое число, число с плавающей точкой и Булев тип.
  • isRequired — Булево значение (истина или ложь), указывающее, является ли атрибут обязательным. Его нельзя определить как пустую строку.
  • uiElement — Обязательное свойство, которое идентифицирует тип элемента пользовательского интерфейса атрибута в форме классификации. Возможны следующие семь значений:
    • text — Однострочное текстовое поле.
    • checkbox — Стандартное поле отметки.
    • date — Выбор даты, позволяющий выбрать дату из календаря в формате ДД/ММ/ГГГГ.
    • single-select — Ниспадающее меню, позволяющее выбрать одну опцию.
    • multi-select — Ниспадающее меню, позволяющее выбрать несколько опций.
    • multi-grouped-select — Ниспадающее меню, позволяющее выбрать отдельные параметры из групп связанных опций, но не сами группы высшего уровня.
    • multi-grouped-select-nested — Ниспадающее меню, позволяющее выбрать группы связанных опций или отдельные опции из этих групп.
  • defaultValue — Значение по умолчанию, назначенное атрибуту. Это свойство может быть задано только для типов uiElement с одиночным выбором, множественным выбором, множественным групповым выбором и множественным групповым вложенным выбором.
  • defaultDateTimeline — Используется в сочетании с defaultDateTimelineUnits для установки даты по умолчанию для атрибута. Это свойство можно задать только для типа даты uiElement.
  • defaultDateTimelineUnits — Используется в сочетании с defaultDateTimeline для установки даты по умолчанию для атрибута. Возможные значения: годы, месяцы и дни. Это свойство можно задать только для типа даты uiElement.
  • validValues — Список опций, который появляется в ниспадающих меню типа uiElement с одиночным или множественным выбором в форме классификации. Его можно определить как пустую строку, если опции создаются выражением Arcade для valueExpression.
  • validValuesMap — Карта опций, которая появляется в ниспадающих меню типа uiElement с множественным групповым выбором и множественным групповым вложенным выбором в форме классификации. Его можно определить как пустую строку, если опции создаются выражением Arcade для valueExpression.
  • valueExpression — Выражение Arcade, которое возвращает список опций, когда validValues и validValuesMap не определены или определены как пустые строки.
  • isAttributeEnabled — Выражение Arcade, которое возвращает Булево значение, указывающее, будет ли атрибут появляться или будет скрытым в форме классификации.
  • attributeValidation — Выражение Arcade, которое возвращает либо пустую строку, либо сообщение об ошибке на основе значения, выбранного для атрибута в форме классификации.
  • arcadeResultLookup — Карта ключей и значений, которая позволяет выражению Arcade, определенному для valueExpression, создавать список.
  • attributeCategory — Секция или вкладка attributeCategories, в которой атрибут появляется в форме классификации.
  • selectionDisplayOrder — Порядок, в котором атрибут появляется в тексте selectionTextExpression.
    Примечание:

    Необходимо определить это свойство хотя бы для одного атрибута в классификации, если вы пропустите selectionTextExpression или определите его как пустую строку.

  • selectionDisplayLabel — Надпись для атрибута, используемого в тексте selectionTextExpression.
  • bannerOrder — Порядок, в котором атрибут появляется в тексте bannerExpression.
    Примечание:

    Необходимо определить его хотя бы для одного атрибута в классификации, если вы пропустите bannerExpression или определите его как пустую строку.

  • bannerLabel — Надпись для атрибута, используемого в тексте bannerExpression.
  • labelDelimiter — Разделитель, который разделяет надпись атрибута и его значение в текстах selectionTextExpression и ​​bannerExpression.
  • valueDelimiter — Разделитель, который разделяет значения, выбранные в типе uiElement с множественным выбором, когда они появляются в текстах selectionTextExpression и bannerExpression​​.
  • attributeDelimiter — Разделитель, который разделяет атрибут и предшествующий ему атрибут в текстах selectionTextExpression и bannerExpression​​.
  • labelTooltip — Текст справки, который появляется при наведении курсора на кнопку Информация Информация рядом с надписью атрибута.
{ 
... 
 
"attributes": { 
    "classification": { 
      "label": "Classification", 
      "description": "Classification", 
      "type": "string", 
      "uiElement": "single-select", 
      "validValues": [{"label": "Public Data", "value": "Public Data"}, {"label": "Restricted", "value": "Restricted"}, {"label": "Confidential", "value": "Confidential"}], 
      "selectionDisplayOrder": 1, 
      "bannerOrder": 1, 
      "labelDelimiter": "", 
      "valueDelimiter": "-", 
      "attributeDelimiter": ";" 
    }, 
    "program": { 
      "label": "Program", 
      "description": "Program", 
      "type": "string", 
      "uiElement": "single-select", 
      "valueExpression": "function getProgramValidValues(schemaJsonString, valueJsonString, attributeId) {\n    var valueJson = Dictionary(valueJsonString)\n    var schemaJson = Dictionary(schemaJsonString)\n    if (!HasKey(valueJson, \"classification\"))\n        return null;\n    if (valueJson.classification == \"Public Data\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Public_Data_List\"];\n    if (valueJson.classification == \"Restricted\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Restricted_List\"];\n    if (valueJson.classification == \"Confidential\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Confidential_List\"];\n    return null;\n}\ngetProgramValidValues(schemaJsonString, valueJsonString, attributeId)", 
      "arcadeResultLookup": { 
        "Public_Data_List": [{"label": "Intra-agency", "value": "Intra-agency"}, {"label": "Marketing", "value": "Marketing"}, {"label": "Promotional", "value": "Promotional"}], 
        "Restricted_List": [{"label": "Compliance", "value": "Compliance"}, {"label": "Financial", "value": "Financial"}, {"label": "Human Resources", "value": "Human Resources"}, {"label": "Market Data", "value": "Market Data"}, {"label": "PII", "value": "PII"}, {"label": "Proprietary", "value": "Proprietary"}], 
        "Confidential_List": [{"label": "Intellectual Property", "value": "Intellectual Property"}, {"label": "Legal", "value": "Legal"}, {"label": "Security", "value": "Security"}] 
      }, 
      "selectionDisplayOrder": 2, 
      "bannerOrder": 2, 
      "labelDelimiter": "", 
      "valueDelimiter": "-", 
      "attributeDelimiter": ";" 
    } 
  } 
}

Определение компоновок

Обязательный объект layouts определяет порядок, в котором атрибуты появляются в форме классификации. Он может включать следующее:

  • default — Объект, включающий в себя сведения о конкретной компоновке. Можно определить следующее свойство внутри объекта:
    • layoutElements — Обязательный объект, который сопоставляет атрибуты и их порядок в форме классификации. Для каждого атрибута в объекте можно определить следующее свойство:
      • formDisplayOrder — Обязательное целое число, определяющее порядок, в котором атрибут появляется в форме классификации.
{ 
... 
 
"layouts": { 
    "default": { 
      "layoutElements": { 
        "classification": { 
          "formDisplayOrder": 1 
        }, 
        "program": { 
          "formDisplayOrder": 2 
        } 
      } 
    } 
  } 
}

Полный пример

Ниже приведен полный пример схемы классификации:

Примечание:

Приведенный ниже пример схемы и образцы схем в репозитории ArcGIS/Classification GitHub предназначены для использования в качестве справочных материалов при создании схемы классификации, отвечающей потребностям вашей организации.

{  
  "name": "academic-institution-classification-schema",  
  "version": "2.0",  
  "grammarVersion": "2.0",  
  "helpURL": "https://ansible.hynes.com/portal/home/schema_help.pdf",  
  "helpTooltip": "Click to open the schema help document",  
  "bannerExpression": "",  
  "selectionTextExpression": "",  
  "attributeCategories": [], 
  "classificationMetadata": {  
    "primaryAttribute": "classification",  
    "defaultValue": "Public Data",  
    "classificationValueProperties": [  
      {  
        "value": "Public Data",  
        "acronym": "Public Data",  
        "backgroundColor": "Green",  
        "textColor": "Black"  
      },  
      {  
        "value": "Restricted",  
        "acronym": "Restricted",  
        "backgroundColor": "Yellow",  
        "textColor": "Black"  
      },  
      {  
        "value": "Confidential",  
        "acronym": "Confidential",  
        "backgroundColor": "Red",  
        "textColor": "Black"  
      }  
    ]  
  }, 
  "attributes": {  
    "classification": {  
      "label": "Classification",  
      "description": "Classification",  
      "type": "string",  
      "uiElement": "single-select",  
      "validValues": [{"label": "Public Data", "value": "Public Data"}, {"label": "Restricted", "value": "Restricted"}, {"label": "Confidential", "value": "Confidential"}],  
      "selectionDisplayOrder": 1,  
      "bannerOrder": 1,  
      "labelDelimiter": "",  
      "valueDelimiter": "-",  
      "attributeDelimiter": ";"  
    },  
    "program": {  
      "label": "Program",  
      "description": "Program",  
      "type": "string",  
      "uiElement": "single-select",  
      "valueExpression": "function getProgramValidValues(schemaJsonString, valueJsonString, attributeId) {\n    var valueJson = Dictionary(valueJsonString)\n    var schemaJson = Dictionary(schemaJsonString)\n    if (!HasKey(valueJson, \"classification\"))\n        return null;\n    if (valueJson.classification == \"Public Data\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Public_Data_List\"];\n    if (valueJson.classification == \"Restricted\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Restricted_List\"];\n    if (valueJson.classification == \"Confidential\")\n        return schemaJson.attributes[attributeId].arcadeResultLookup[\"Confidential_List\"];\n    return null;\n}\ngetProgramValidValues(schemaJsonString, valueJsonString, attributeId)",  
      "arcadeResultLookup": {  
        "Public_Data_List": [{"label": "Intra-agency", "value": "Intra-agency"}, {"label": "Marketing", "value": "Marketing"}, {"label": "Promotional", "value": "Promotional"}],  
        "Restricted_List": [{"label": "Compliance", "value": "Compliance"}, {"label": "Financial", "value": "Financial"}, {"label": "Human Resources", "value": "Human Resources"}, {"label": "Market Data", "value": "Market Data"}, {"label": "PII", "value": "PII"}, {"label": "Proprietary", "value": "Proprietary"}],  
        "Confidential_List": [{"label": "Intellectual Property", "value": "Intellectual Property"}, {"label": "Legal", "value": "Legal"}, {"label": "Security", "value": "Security"}]  
      },  
      "selectionDisplayOrder": 2,  
      "bannerOrder": 2,  
      "labelDelimiter": "",  
      "valueDelimiter": "-",  
      "attributeDelimiter": ";"  
    }  
  }, 
  "layouts": {  
    "default": {  
      "layoutElements": {  
        "classification": {  
          "formDisplayOrder": 1  
        },  
        "program": {  
          "formDisplayOrder": 2  
        }  
      }  
    }  
  } 
}