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.
Recursos do componente¶
No exemplo acima, do Harmony Cloud 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 Cloud 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";