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.
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";