Saltar al contenido

Componente de Valor Clave

Descripción general

El componente clave-valor se utiliza para definir conjuntos de propiedades que un usuario que configura un conector puede ingresar como pares de clave y valor.

Pares clave-valor

Características de los componentes

En el ejemplo anterior, desde Harmony Cloud Studio Zendesk Connector, una llave (jobStatusMaxRetries) está asociado con un valor de visualización (enumValue). La interfaz de usuario de Cloud Studio agrega automáticamente los botones Agregar y Eliminar. Tenga en cuenta que cuando se muestra por primera vez, no habrá valores hasta que un usuario los agregue usando el botón Agregar.

Componente JSON

El componente clave-valor tiene un type de "object" con una serie de propiedades, como se muestra aquí:

{
  "name": "key_value_pairs_example",
  "displayName": "Example Key Value Pairs",
  "type": "object",
  "default": "",
  "multiple": true,
  "properties": [
    {
      "name": "name",
      "displayName": "Name",
      "enumValues": [
        {
          "enumValue": "Job Status Maximum Retries",
          "realValue": "jobStatusMaxRetries"
        }
      ],
      "validators": [
        {
          "name": "required"
        }
      ]
    },
    {
      "name": "value",
      "displayName": "Value",
      "type": "number",
      "defaultValue": "300",
      "validators": [
        {
          "name": "required"
        }
      ]
    }
  ]
}

Valores de componentes

Para usar un valor en un conector, obtenga el valor de las propiedades del conector usando un código como el que se muestra en estos fragmentos.

Las propiedades del conector (props) son pasados a la fábrica del conector por el ConnectionFactory‘s creatConnnection() método, que se muestra aquí para un ficticio ExampleConnector:

  @Override
  public Connection createConnection(Map<String, String> props) {
    return new ExampleConnectorConnection(props.get(COMPANY_URL),
                                 props.get(API_TOKEN),
                                 props.get(EMAIL),
                                 getJobStatusMaxRetries(props));
  }

Este createConnnection() El método es donde puede acceder a las propiedades, recuperar valores específicos y luego pasarlos al método de conexión de un conector:

private String getJobStatusMaxRetries(Map<String, String> props) {
  if (!Objects.isNull(props.get(OPTIONAL_SETTINGS_CONFIGURATION + "." + JOB_STATUS_MAX_RETRIES))) {
    return props.get(OPTIONAL_SETTINGS_CONFIGURATION + "." + JOB_STATUS_MAX_RETRIES);
  } else {
    String config = props.get(OPTIONAL_SETTINGS_CONFIGURATION);
    if (StringUtils.isEmpty(config) || config.equals("[]")) {
      return null;
    }
    config = config.substring(1, config.length() - 1);
    ObjectMapper mapper = createMapper();
    try {
      NameValue nv = mapper.readValue(config, NameValue.class);
      return nv.getValue();
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }
}

El código anterior se basa en el uso de un analizador JSON (como Jackson, devuelto por la llamada a createMapper()) para convertir el JSON en un objeto Java. Las propiedades se organizan y llaman usando la notación de “puntos”, pasando el nombre del elemento de la interfaz de usuario y el nombre de la enumeración. realvalue campo.

En el ejemplo anterior, las cadenas OPTIONAL_SETTINGS_CONFIGURATION y JOB_STATUS_MAX_RETRIES sería:

String OPTIONAL_SETTINGS_CONFIGURATION = "key_value_pairs_example";
String JOB_STATUS_MAX_RETRIES = "jobStatusMaxRetries";