Herramientas de usuario

Herramientas del sitio


ada:tips:sicoferp:general:pbtows:procesos:workflowpb

PBtoWS - Proceso: WorkFlow de Servicios de Componentes

A continuación se explicará el proceso de creación de los workflow de los servicios de los componentes del backend

¿Que es un Workflow Backend?

Existen muchas definiciones asociadas al concepto, sin embargo el enfoque utilizado en el backend para este tipo de funcionalidades se basará en procesos internos de sistemas informaticos y tecnologias de la información.

Segun https://serviceaide.atlassian.net/wiki/spaces/CloudSMGoldfishES/pages/3638305/C+mo+crear+un+workflow

“Un workflow es un grupo de tareas que automatiza las tareas de TI complejas y repetitivas.
Por lo general, cada workflow es un conjunto de tareas específicas que utiliza conectores, acciones basadas en scripts y
temporizadores de retraso.”

Para el proyecto de migración SICOF se utilizará el concepto workflow backend el cual se define como un grupo de servicios que estan relacionados y representan funcionalidades de SICOF ERP.

Consideraciones

  • Un workflow está asociado a un componente
  • Un workflow por menos debe contener un paso de ejecución

Tipos de Workflow

Se han definido los siguientes tipos de workflow para describir las interacciones entre servicios y componentes.

  • Window Workflow (WW): Este tipo de workflow es el utilizado para describir las acciones que pueden generar las ventanas que son llamadas desde los menus Usuario y CRUD (Maestros). Se caracterizan por tener un conjunto de pasos que son identificados por tag (referencias) los cuales son registradas por las ventanas en lanzadores de acciones (Botones, Clicks, Tabs) de esta manera se pueden encadenar acciones que son representadas por servicios (Web Services).
  • Component Workflow (CW):Este tipo de workflow puede ser implementado en interacciones especiales que no estan relacionadas con el menu principal de la aplicación, por lo general presenta caminos de ejecución y permite la evaluacion de expresiones para determinar los flujos.

Notas

  • El tipo de workflow CW solo esta implementado en el componente Login.
  • El tipo de workflow WW es el que se debe implementar en todas las opciones una vez iniciada la sesión en el sistema.

Definiciones Generales

A continuación se definen algunos conceptos generales que se aplican a los workflow backend SICOF. Tener presente que algunas definiciones no se describen en este apartado ya que son obvias en el contexto de los desarrolladores de la fabrica y proyecto de migración SICOF. Si el lector requiere aclaración de algun tema, favor comunicarse con el equipo de desarrollo backend.

  • WorkFlow - Path: Representa un camino de ejecución dentro de un workflow.
  • WorkFlow - Step: Representa un paso dentro de un camino de un workflow. Esta compuesto por una relación Origen - Destino.
  • WorkFlow - Source/Target (Relación Origen/Destino): Representa los puntos de origen/destino de un paso.
  • Component: Referencia del componente.
  • Service: Referencia del servicio.
  • GUI: Tipo de representación gráfica.
  • Action: Tipo de conector entre el origen/destino (ver explicación a continuación).

Acción de Conectores

Las acciones de conectores indican la relación entre el origen/destno. A continuación se describen las acciones utiizadas en los pasos de los caminos de un workflow:

  • END: Finaliza un camino de ejecución
  • BIFURCATE: Indica que ese paso permite bifurcaciones de ejecución y a continuación tendra por lo menos 2 pasos siguientes asociados. Solo aplica para el destino del paso.
  • CONNECT: Indica que ese paso puede conectar con el destino sin embargo no establece tiempo ni obligatoriedad. Solo aplica para el origen del paso.
  • CONTINUE: Indica que el paso actual es intermedio en un camino, es decir requiere al menos otro paso en la secuencia de ejecución.
  • NEXT: Indica que este paso es obligatorio en el flujo es decir que el origen/destino debe ejecutarse.

Configuración DB

Los workflow requieren de configuración las cuales deben realizarse en las siguientes tablas del esquema:

  • TBL_CONFIG_LAUNCHER_TYPE: Permite configurar los tipos de lanzadores que se utilizarán (Botones, Click, etc).
  • TBL_CONFIG_WORKFLOW_ACTI: Permite configurar los tipos de acciones.
  • TBL_CONFIG_WORKFLOW_RGUI: Permite configurar los tipos de representaciones gráficas.
  • TBL_CONFIG_WORKFLOW_TYPE: Permite configurar los tipos de workflow (Esta configuración no se debe modificar).
  • TBL_WORKFLOW: Tabla principal de la configuración permite configurar los encabezados de los workflow.
  • TBL_WORKFLOW_COMPONENT: Tabla principal de la configuración permite configurar las interaciones de los servicios.

Pasos para crear un workflow

No todas las tablas son requeridas para la creación de un workflow porque por defecto ya existe una configuración basica realiza. Para crear un workflow debe seguir los siguientes pasos:

  1. Configurar Metadata de consumo y respuesta de los servicios
  2. Configurar el cataogo del componente con sus servicios
  3. Crear encabezado del workflow (Por concenso se recomienda utilizar el mismo nombre del componente)
  4. Crear los pasos que definen el servicio y registrar adecuadamente los tag de identificación de los lanzadores de acciones.

Una vez finalizada la configuración el workflow estará listo para vincularlo (según su tipo) a los procesos del ERP.

Consumo de Workflow

La funcionaidad de los workflow puede ser consumida por un servicio SOAP el cual en el ambiente de desarrollo está registrado en la url: http://10.1.40.170:88/ws00_workflow/n_ws00_workflow.asmx el cual cuenta con 2 operaciones expuestas:

  • ws_get: Versión inicial (obsoleta, se mantiene por compatibilidad de validaciones) la cual solo soporta workflow de tipo CW.
  • ws_get2: Versión actual (estable) la cual soporta todos los tipos de workflow.

Ejemplo de consumo SOAP

  • ws_get: {“workflow_code”:“NOVEDAD_DESCUENTO”, “workflow_path”: “-1”, “workflow_component”: “-1”}
  • ws_get2: {“workflow_code”:“NOVEDAD_DESCUENTO”, “workflow_component”: “-1”}

Notas

  • Los argumentos de consumo son requeridos, sin embargo sin algun argumento no quiere utilizarse en el filtro debe enviar un valor de -1 en el atributo (según su tipo).

Ejemplo visual (SOAP-UI)

Ejemplo estructura de respuesta (JSON)

{
    "return_code": "1",
    "return_user_message": "Flujo de trabajo generado correctamente",
    "return_technical_message": "consulta de datos existosa",
    "return_response_date": "11/12/2019 16:14:01",
    "return_object":     {
        "workflow_code": "NOVEDAD_DESCUENTO",
        "workflow_description": "Flujo de trabajo para los procesos del componente: novedad_descuento",
        "workflow_type": "WINDOW_COMPONENT_WORKFLOW",
        "workflow_component_code": "NOVEDAD_DESCUENTO",
        "workflow_service_code": "NOVEDAD_DESCUENTO_LISTAR",
        "step": [
        {
            "step_number": 1,
            "step_order": 0,
            "step_tag": null,
            "step_launcher_type": null,
            "step_launcher_tag": "list_novedad",
            "step_source":             {
                "step_source_component": "",
                "step_source_service": "",
                "step_source_gui": "",
                "step_source_action": "",
                "step_source_endpoint": ""
            },
            "step_target":             {
                "step_target_component": "NOVEDAD_DESCUENTO",
                "step_target_service": "NOVEDAD_DESCUENTO_LISTAR",
                "step_target_gui": "GRID",
                "step_target_action": null,
                "step_target_endpoint": ""
            }
        },
        {
            "step_number": 2,
            "step_order": 10,
            "step_tag": null,
            "step_launcher_type": null,
            "step_launcher_tag": "show_novedad",
            "step_source":             {
                "step_source_component": "",
                "step_source_service": "",
                "step_source_gui": "",
                "step_source_action": "",
                "step_source_endpoint": ""
            },
            "step_target":             {
                "step_target_component": "NOVEDAD_DESCUENTO",
                "step_target_service": "NOVEDAD_DESCUENTO_CONSULTAR_DETALLE_NOVEDADES",
                "step_target_gui": "TABULAR",
                "step_target_action": null,
                "step_target_endpoint": ""
            }
        },
        {
            "step_number": 3,
            "step_order": 20,
            "step_tag": null,
            "step_launcher_type": null,
            "step_launcher_tag": "edit_novedad",
            "step_source":             {
                "step_source_component": "",
                "step_source_service": "",
                "step_source_gui": "",
                "step_source_action": "",
                "step_source_endpoint": ""
            },
            "step_target":             {
                "step_target_component": "NOVEDAD_DESCUENTO",
                "step_target_service": "NOVEDAD_DESCUENTO_CONSULTAR_DETALLE_NOVEDADES",
                "step_target_gui": "FORM",
                "step_target_action": null,
                "step_target_endpoint": ""
            }
        },
        {
            "step_number": 4,
            "step_order": 30,
            "step_tag": null,
            "step_launcher_type": null,
            "step_launcher_tag": "save_novedad",
            "step_source":             {
                "step_source_component": "",
                "step_source_service": "",
                "step_source_gui": "",
                "step_source_action": "",
                "step_source_endpoint": ""
            },
            "step_target":             {
                "step_target_component": "NOVEDAD_DESCUENTO",
                "step_target_service": "NOVEDAD_DESCUENTO_GUARDAR_NOVEDADES_DESCUENTO",
                "step_target_gui": null,
                "step_target_action": null,
                "step_target_endpoint": ""
            }
        },
        {
            "step_number": 5,
            "step_order": 40,
            "step_tag": null,
            "step_launcher_type": null,
            "step_launcher_tag": "cancel_novedad",
            "step_source":             {
                "step_source_component": "",
                "step_source_service": "",
                "step_source_gui": "",
                "step_source_action": "",
                "step_source_endpoint": ""
            },
            "step_target":             {
                "step_target_component": "NOVEDAD_DESCUENTO",
                "step_target_service": "NOVEDAD_DESCUENTO_LISTAR",
                "step_target_gui": "GRID",
                "step_target_action": null,
                "step_target_endpoint": ""
            }
        }
        ]
    },
    "return_workflow_step_tag": "",
    "return_execution_time": "282",
    "metadata_json__": "GENERIC_METADATA_RESPONSE"
}
ada/tips/sicoferp/general/pbtows/procesos/workflowpb.txt · Última modificación: 2019/12/11 19:17 por 181.132.229.96