Ir para o conteúdo

Componente de Valor-chave

Visão geral

O componente Key-Value é usado para definir conjuntos de propriedades que um usuário que configura um conector pode inserir como pares de chave e valor.

Pares chave-valor

Recursos do componente

No exemplo acima, do Harmony Integration Studio Zendesk Connector, uma chave (jobStatusMaxRetries) está associado a um valor de exibição (enumValue). Os botões Adicionar e Remover são adicionados automaticamente pela IU do Integration Studio. Observe que, quando exibido pela primeira vez, não haverá valores até que um usuário os adicione usando o botão Adicionar.

Componente JSON

O componente Key-Value tem um type de "object" com uma matriz de propriedades, conforme mostrado aqui:

{
  "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 um valor em um conector, obtenha o valor das propriedades do conector usando o código mostrado nestes snippets.

As propriedades do conector (props) são repassados para a fábrica do conector pelo ConnectionFactory de creatConnnection() método, mostrado aqui para um fictício 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));
  }

Esse createConnnection() é onde você pode acessar as propriedades, recuperar valores especificados e, em seguida, passá-los para o método de conexão de um 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;
    }
  }
}

O código acima depende do uso de um analisador JSON (como Jackson, retornado pela chamada para createMapper()) para converter o JSON em um objeto Java. As propriedades são organizadas e chamadas usando a notação “ponto”, passando o nome do elemento da UI e o nome do enum’s realvalue campo.

No exemplo acima, as strings OPTIONAL_SETTINGS_CONFIGURATION e JOB_STATUS_MAX_RETRIES seria:

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