Ir para o conteúdo

Componente de chave-valor do Jitterbit Connector SDK

Visão geral

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

Pares de Chave-Valor

Recursos do componente

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

JSON do componente

O componente Chave-Valor tem um type de "object" com um array 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 do componente

Para usar um valor em um conector, obtenha o valor das propriedades do conector usando código como mostrado nesses trechos.

As propriedades do conector (props) são passadas para a fábrica do conector pelo método creatConnnection() da ConnectionFactory, mostrado aqui para um ExampleConnector fictício:

  @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 método 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 parser JSON (como Jackson, retornado pela chamada a 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 interface do usuário e o nome do campo realvalue do enum.

No exemplo acima, as strings OPTIONAL_SETTINGS_CONFIGURATION e JOB_STATUS_MAX_RETRIES seriam:

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