martes, 2 de junio de 2015

Invocar WorkflowProcessManager desde shell

En ocasiones se realizan desarrollos los cuales incluyen la ejecución de algún job, en el proyecto en el que me encuentro se desarrolló un requerimiento en el cual se cargan registros en una tabla y posteriormente por medio de un job se buscaban los registros dentro de esa tabla. 

Sin embargo el ambiente de Siebel ya tiene diversos jobs programados que se ejecutan día con día, y el programar un job más no era algo conveniente, además de que no era necesario que el proceso estuviera corriendo diario ya que dicho job se tiene que ejecutar únicamente al momento en el cuál se llena la tabla.

La carga de la tabla se realiza mediante un proceso ETL que lee un archivo y envía los registros. Viendo este tipo de requerimientos se definió que lo más conveniente era que el ETL al momento de terminar la carga de los registros se hiciera el llamado de un shell, el cual ayudaría a ejecutar el componente del Workflow. El shell se construye de la siguiente manera:
  • Crear una variable la cuál servirá para indicar la ruta en donde se guardará el log, esto es opcional pero en ocasiones se desea tener el log de ese proceso en alguna ruta en especifico, para este caso yo si mandare el log a una ruta en donde deseo que se almacene el log.

                   export LOG_FILE=/siebel/siebsrvr/proceso/logs

  • Dirigirse a la ruta del siebel server
                  cd  /siebel/siebsrvr/

  • Ejecutar las variables de ambiente
                     . ./siebenv.sh

  • Cambiarse de ruta y dirigirse a la carpeta bin, recordemos que ya nos encontramos posicionados en la ruta /siebel/siebsrvr/ por lo tanto únicamente se debe bajar un nivel mas para ir a la carpeta bin
                  cd bin

  • Ejecutar el Server Manager (srvrmgr), recordando los siguientes parámetros
    • /s  server
    • /e  enterprise
    • /g  gateway
    • /u  user
    • /p  pass
    • /c  indica el componente que se va a ejecutar
      srvrmgr /s proy_uno /e proy_uno /g dc3vl214:3320 /u SADMIN /p S4#DM&1_N /c "run task for component WfProcMgr with ProcessName = 'Proceso_WF', ErrorFlags=1,SQLFlags=8,TraceFlags=3,LogDir=$OutDir"

La estructura del shell quedaría de la siguiente manera:


#********************************************************************************************************************
#  Author        : Manuel Sanchez
#********************************************************************************************************************

#********************************************************************************************************************
# Setting the environment shell variables.
#********************************************************************************************************************
export LOG_FILE=/siebel/siebsrvr/proceso/logs

cd  /data03/siebel/siebsrvr/

. ./siebenv.sh

cd bin

srvrmgr /s proy_uno /e proy_uno /g dc3vl214:3320 /u SADMIN /p S4#DM&1_N /c "run task for component WfProcMgr with ProcessName = 'Proceso_WF', ErrorFlags=1,SQLFlags=8,TraceFlags=3,LogDir=$OutDir"


Esa es toda la estructura del shell y como podemos ver se está invocando el Workflow Process Manager WfProcMgr si se requiere podemos llamar el componente Workflow Process Batch Manager para hacer esto únicamente se tiene que cambiar el parámetro del componente y poner WfProcBatchMgr.

Espero que esto les pueda ser de ayuda, saludos.

0 comentarios:

Publicar un comentario