Crear un esquema de clasificación

Antes de poder asignar un esquema de clasificación a su organización, debe crearlo definiendo las opciones de configuración de la clasificación en un archivo JSON válido. El esquema de clasificación que cree debe adherirse a la gramática de clasificación, un esquema JSON incluido con Portal for ArcGIS, que describe y valida los esquemas de clasificación.

En función de las necesidades de su organización, puede crear un esquema sencillo que, como mínimo, defina solo las propiedades necesarias o un esquema complejo que utilice expresiones de ArcGIS Arcade para una clasificación muy detallada de los elementos. Vea un ejemplo completo de un esquema de clasificación a continuación o descargue esquemas de muestra del repositorio ArcGIS/Classification GitHub.

Nota:

Los ejemplos que aparecen a continuación y los esquemas de muestra del repositorio ArcGIS/Classification GitHub deben utilizarse como referencia para crear un esquema de clasificación que satisfaga las necesidades de su organización.

Al crear un esquema de clasificación, comience por definir las siguientes propiedades:

Nota:

Una propiedad es opcional a menos que se especifique lo contrario.

Nota:

La expresiones de Arcade no admiten los caracteres < y >.

  • name: propiedad obligatoria que identifica el nombre del esquema de clasificación.
  • version: propiedad obligatoria que identifica la versión del esquema de clasificación.
  • grammarVersion: propiedad obligatoria que especifica la versión de la gramática de clasificación a la que se adhiere el esquema. Puede encontrar la versión de la gramática de clasificación accediendo a Organización > Ájustes > Elementos > Clasificación de elementos en el sitio web del portal.
  • helpToolTip: El texto de ayuda que aparece al pasar el ratón por encima del botón Información Información situado en la parte superior del formulario de clasificación.
  • helpURL: URL del documento de ayuda del esquema que se abre en una nueva pestaña al pulsar el botón Información Información en la parte superior del formulario de clasificación.
  • bannerExpression: la información de clasificación que aparece en Clasificación en la página del artículo. Puede utilizar expresiones de Arcade para crear texto de banner o establecer el valor en una cadena vacía para aplicar la lógica de codificación genérica definida para uiElements en el formulario de clasificación (por ejemplo, bannerOrder, bannerLabel y labelDelimiter).
    Nota:

    Si omite esta propiedad o la define como una cadena vacía, debe tener al menos un atributo con bannerOrder definido para implementar la lógica de codificación genérica.

  • selectionTextExpression: información de clasificación que aparece en el cuadro de diálogo Editar clasificación. Puede utilizar expresiones de Arcade para crear texto de banner o establecer el valor en una cadena vacía para aplicar la lógica de codificación genérica definida para uiElements en el formulario de clasificación (por ejemplo, selectionDisplayOrder, selectionDisplayLabel y labelDelimiter).
    Nota:

    Si omite esta propiedad o la define como una cadena vacía, debe tener al menos un atributo con selectionDisplayOrder definido para implementar la lógica de codificación genérica.

  • attributeCategories: lista de categorías de atributos que aparecen como secciones o pestañas en el formulario de clasificación.
    Nota:

    La palabra default es una palabra clave reservada y no puede utilizarse como categoría de atributo.

{ 
  "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": [] 
}

Definir classificationMetadata

El objeto requerido classificationMetadata puede incluir las siguientes propiedades:

  • primaryAttribute: propiedad obligatoria que identifica el atributo que aparece como campo de clasificación principal en el formulario de clasificación.
  • defaultValue: propiedad obligatoria que especifica el valor predeterminado de la propiedad primaryAttribute.
  • classificationValueProperties: matriz requerida de objetos en la que cada objeto representa una opción de clasificación del atributo identificado como el valor primaryAttribute y define propiedades específicas para la opción. Se pueden definir las siguientes propiedades para cada opción de clasificación:
    • value: propiedad obligatoria que especifica la etiqueta de la opción utilizada en el formulario de clasificación.
    • acronym: acrónimo de la opción.
    • textColor: cuando se selecciona la opción, su etiqueta aparece en este color bajo Selecciones actuales en el formulario de clasificación. El color puede especificarse con nombres de color predefinidos o con valores RGB y HEX.
    • backgroundColor: cuando se selecciona la opción, su etiqueta se resalta en este color en Selecciones actuales en el formulario de clasificación. El color puede especificarse con nombres de color predefinidos o con valores RGB y 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" 
      } 
    ] 
  } 
}

Definir atributos

Cada atributo definido en el objeto requerido attributes corresponde a un campo de entrada del formulario de clasificación. Se pueden definir las siguientes propiedades para cada atributo:

  • label: propiedad obligatoria que especifica la etiqueta del atributo utilizado en el formulario de clasificación.
  • description: descripción utilizada como marcador de posición en el campo de entrada.
  • type: propiedad obligatoria que identifica el tipo de datos del atributo. Los tipos de datos admitidos son cadena, fecha, entero, flotante y booleano.
  • isRequired: valor booleano (verdadero o falso) que especifica si el atributo es obligatorio. No puede definirse como una cadena vacía.
  • uiElement: propiedad obligatoria que identifica el tipo de elemento UI del atributo en el formulario de clasificación. Los siete valores posibles son los siguientes:
    • text: cuadro de texto de una sola línea.
    • checkbox: casilla de verificación estándar.
    • date: selector de fechas que permite seleccionar una fecha del calendario en el formato DD/MM/AAAA.
    • single-select: menú desplegable que permite seleccionar una única opción.
    • multi-select: menú desplegable que permite seleccionar varias opciones.
    • multi-grouped-select: menú desplegable que permite seleccionar opciones individuales de grupos de opciones relacionadas, pero no los propios grupos de nivel superior.
    • multi-grouped-select-nested: menú desplegable que permite seleccionar grupos de opciones relacionadas u opciones individuales de esos grupos.
  • defaultValue: valor predeterminado asignado al atributo. Esta propiedad solo puede establecerse para los tipos de uiElement de selección individual, selección múltiple, selección multiagrupada y selección anidada multiagrupada.
  • defaultDateTimeline: se utiliza en combinación con defaultDateTimelineUnits para establecer la fecha predeterminada del atributo. Esta propiedad solo puede establecerse para el tipo uiElement de fecha.
  • defaultDateTimelineUnits: se utiliza en combinación con defaultDateTimeline para establecer la fecha predeterminada del atributo. Los valores posibles son años, meses y días. Esta propiedad solo puede establecerse para el tipo uiElement de fecha.
  • validValues: la lista de opciones que aparecen en los menús desplegables de tipo de uiElement de selección única o selección múltiple en el formulario de clasificación. Puede definirse como una cadena vacía si las opciones se generan mediante la expresión de Arcade para valueExpression.
  • validValuesMap: el mapa de opciones que aparecen en los menús desplegables de tipo de uiElement de selección multiagrupada o selección anidada multiagrupada en el formulario de clasificación. Puede definirse como una cadena vacía si las opciones se generan mediante la expresión de Arcade para valueExpression.
  • valueExpression: expresión de Arcade que devuelve una lista de opciones cuando validValues y validValuesMap no están definidos o lo están como cadenas de caracteres vacías.
  • isAttributeEnabled: expresión de Arcade que devuelve un valor booleano que especifica si el atributo aparecerá o estará oculto en el formulario de clasificación.
  • attributeValidation: expresión de Arcade que devuelve una cadena de caracteres vacía o un mensaje de error en función del valor seleccionado para el atributo en el formulario de clasificación.
  • arcadeResultLookup: mapa de claves y valores que permite a la expresión de Arcade definida para generar la lista de valueExpression.
  • attributeCategory: sección o pestaña de attributeCategories en la que aparece el atributo en el formulario de clasificación.
  • selectionDisplayOrder: orden en que aparece el atributo en el texto de selectionTextExpression.
    Nota:

    Debe definir esta propiedad al menos para un atributo de la clasificación si omite selectionTextExpression o la define como una cadena de caracteres vacía.

  • selectionDisplayLabel: etiqueta del atributo utilizado en el texto de selectionTextExpression.
  • bannerOrder: orden en que aparece el atributo en el texto de bannerExpression.
    Nota:

    Debe definir esto al menos para un atributo de la clasificación si omite bannerExpression o la define como una cadena de caracteres vacía.

  • bannerLabel: etiqueta del atributo utilizado en el texto de bannerExpression.
  • labelDelimiter: delimitador que separa la etiqueta y el valor del atributo en los textos de selectionTextExpression y bannerExpression.
  • valueDelimiter: delimitador que separa los valores seleccionados en un tipo de uiElement de selección múltiple cuando aparecen en los textos de selectionTextExpression y bannerExpression.
  • attributeDelimiter: delimitador que separa el atributo y su atributo precedente en los textos de selectionTextExpression y bannerExpression.
  • labelTooltip: texto de ayuda que aparece al pasar el ratón por encima del botón Información Información situado junto a la etiqueta del atributo.
{ 
... 
 
"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": ";" 
    } 
  } 
}

Definir diseños

El objeto requerido layouts especifica el orden en que aparecen los atributos en el formulario de clasificación. Puede incluir lo siguiente:

  • default: objeto que incluye los detalles de un diseño específico. Puede definir la siguiente propiedad dentro del objeto:
    • layoutElements: objeto obligatorio que asigna atributos y su orden en el formulario de clasificación. Se puede definir la siguiente propiedad para cada atributo del objeto:
      • formDisplayOrder: número entero obligatorio que identifica el orden en que aparece el atributo en el formulario de clasificación.
{ 
... 
 
"layouts": { 
    "default": { 
      "layoutElements": { 
        "classification": { 
          "formDisplayOrder": 1 
        }, 
        "program": { 
          "formDisplayOrder": 2 
        } 
      } 
    } 
  } 
}

Ejemplo completo

A continuación se muestra un ejemplo completo de un esquema de clasificación:

Nota:

El esquema de ejemplo que aparecen a continuación y los esquemas de muestra del repositorio ArcGIS/Classification GitHub deben utilizarse como referencia para crear un esquema de clasificación que satisfaga las necesidades de su organización.

{  
  "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  
        }  
      }  
    }  
  } 
}