Los parámetros de las operaciones pueden estar configurados como un diccionario, o pueden utilizarse los parámetros con tipo. La ventaja de los parámetros con tipo es que permiten al usuario escoger o introducir valores concretos, facilitando la configuración de las operaciones o minimizando errores introduciendo datos.
Para empezar, existe una operación llamada helloworld (athentose/custom/operations/helloworld.py) que contiene ejemplos de los parámetros. Antes de continuar leyendo, examina el contenido de ese fichero.
He aquí un ejemplo de parámetros:
La clave de este diccionario es el nombre del parámetro que podemos utilizar para obtener su valor.
Los campos que hay que rellenar son:
- label: Etiqueta que va a tener el parámetro en la operación.
- help_text: Texto de ayuda al usuario.
- type: Indica el tipo de objeto que nos va a devolver ese parámetro.
- subtype (opcional): Si el parámetro es CHOICE, indica el tipo de elecciones que se van a presentar al usuario. En este ejemplo se presentan usuarios.
- is_multiple (opcional): Indica si se pueden escoger varios valores.
Para el campo type las opciones disponibles son:
TEXT: el parámetro es un texto.
INTEGER: el parámetro es un número entero.
FLOAT: el parámetro es un número con decimales.
EVALUABLE: el parámetro es una cadena de texto que se evalúa como código Python.
BOOLEAN: el parámetro es un valor booleano (activado/desactivado).
DATE: el parámetro es una fecha.
DATETIME: el parámetro es una fecha y hora.
CHOICE: el parámetro presenta una serie de opciones a escoger según el subtype.
Para el campo subtype las opciones disponibles son:
CUSTOM: se permite definir dentro del parámetro las opciones que hay disponibles.
METADATA_TYPE: se permite escoger entre los tipos de campo disponibles.
USER: se permite escoger entre los usuarios disponibles.
DOCUMENT_TYPE: se permite escoger entre los formularios disponibles
En el caso de escoger como type CHOICE y como subtype CUSTOM, se pueden definir los valores personalizados añadiendo una llave "choices" a la configuración de este parámetro, como en este ejemplo:
'my-custom-choice-key': {
'label': 'Custom choice parameter',
'help_text': 'My custom choice parameter',
'choices': [{"label": "Custom label A", "value": "value_a"},
{"label": "Custom label B", "value": "value_b"}],
'type': ProcessOperationParameterType.CHOICE.value[0],
'subtype': ProcessOperationParameterChoiceType.CUSTOM.value[0],
'is_multiple': False,
}
Siendo "label" la etiqueta que se muestra en la interfaz de configuración para el usuario y "value" el valor interno que va a utilizar la operación.
Para, desde el código de la operación, obtener el valor de un parámetro concreto se puede hacer params.get('my-user-parameter-key') y esto devuelve un valor cuyo tipo depende de la configuración (para el ejemplo, devuelve un objeto de la clase User).
No existe un método automático para cambiar los parámetros de las operaciones para utilizar este tipo de parámetros, dado que cada operación utiliza los parámetros de una forma diferente.
A grandes rasgos, los pasos a seguir son (tomo como ejemplo la operación op_start_lifecycle):
- Examinar los parámetros que existen
PARAMS = {'life_cycle_name': '', 'parallel':''}
- Estudiar en el código de la operación su tipo y su uso.
En este ejemplo concreto vemos que 'life_cycle_name' es el nombre de un ciclo de vida, y 'parallel' se utiliza como boolean. - Escribir los parámetros en una variable variable llamada CONFIGURATION_PARAMETERS.
CONFIGURATION_PARAMETERS = {
'life_cycle_name': {
'label': 'Life cycle Name',
'help_text': 'Name of the life cycle',
'type': ProcessOperationParameterType.TEXT.value[0],
},
'parallel': {
'label': 'Parallel',
'help_text': 'Select to indicate if the life cycle is parallel',
'type': ProcessOperationParameterType.BOOLEAN.value[0],
},
} - Hacer el uso de params.get() donde convenga, y comprobar que la operación funciona.
Por último, es posible que algunas operaciones que estén previamente instaladas en algún servidor y a la que se cambien los parámetros no se muestren adecuadamente. El motivo es que los parámetros estarán guardados en forma de diccionario y hay que actualizarlos.
Se ha creado el siguiente comando que recorre cada operación instalada y configurada, y trata de transformar los PARAMS en forma de diccionario a parámetros configurables. Tras ejecutarlo conviene revisar que los parámetros creados son correctos puesto que no siempre se puede deducir adecuadamente el tipo:
python manage.py migrate_operation_parameters
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.