Paso de parámetros en Connect:Direct

Transferencias administradas de archivos

Empleo de parámetros para realizar transferencias administradas de archivos a traves de Connect:Direct, de entradas como programas shell, File Agent o procesos de negocio.

Arturo N. López, Software Specialist Sterling Commerce, IBM

Ingeniero en Computación con Maestría en Tecnologías Información y Administración. Experiencia en Procesos de negocios, aplicaciones SOA, redes. Con más de 15 años de experiencia en el sector financiero y gobierno, habiendo laborado en bancos y secretarías de estado como Petróleos Mexicanos, Banco de México y la Secretaría de la Función Pública.



19-12-2011

El uso de transferencias administradas es un recurso muy utilizado por los intercambios o procesos de información que los generan. El movimiento de un archivo de un nodo a otro siempre obedece a una necesidad de negocio, por lo cual muchas veces para llegar a un archivo final, varias plataformas de información deben hacer procesamientos con programas desarrollados o software comercial.

Mediante el uso de herramientas para la transferencia administrada de archivos, se pueden añadir niveles de servicio y seguridad a este movimiento de archivos. IBM Sterling Connect:Direct permite la transferencia de archivos de manera administrada entre distintas plataformas, permitiendo automatizar las transferencias y asegurando que el archivo llega de forma íntegra.

Procesos de IBM Sterling Connect: Direct.

Para lograr esta automatización, IBM Sterling Connect:Direct permite la creación de procesos. Un proceso en IBM Sterling Connect:Direct es un conjunto de instrucciones que se ejecutan una vez establecida la sesión entre el nodo primary y secondary. Este conjunto de instrucciones nos permite transferir archivos, ejecutar otros procesos de forma síncrona o asíncrona y procesos dentro del sistema operativo de los nodos en la sesión. Cada una de estas instrucciones se identifica mediante una etiqueta, en el ejemplo mostramos un proceso, toma un archivo de un directorio en Windows y lo mueve a un directorio en Unix, la etiqueta "DEMO" refiere al proceso Connect:Direct, la etiqueta "STEP1" refiere a la instrucción que copia el archivo del Windows a Unix, la etiqueta "STEP2" se refiere a la instrucción que ejecuta un comando del sistema operativo Windows con, pasando el número 1 como parámetro.

/*BEGIN_REQUESTER_COMMENTS

$PNODE$="CD-DEMO" $PNODE_OS$="Windows"

$SNODE$="CD-DEMO" $SNODE_OS$="Windows"

$OPTIONS$="WDOS"

END_REQUESTER_COMMENTS*/

DEMO PROCESS

SNODE=CD-DEMO

STEP1 COPY

FROM (

FILE=C:\CDWindowsDemo\TestData\testData.txt

)

TO (

FILE=C:\CDWindowsDemo\TestData\testData.out

DISP=RPL

)

COMPRESS Extended

STEP2 RUN TASK SNODE (PGM=WINNT)

SYSOPTS="pgm(C:\CDWindowsDemo\TestData\ExtractData.exe) args(1)"

PEND

Del ejemplo, podemos ver que el paso de parámetros es necesario ya que las aplicaciones necesitan datos de entrada para la lógica con la cual se programaron. De igual forma, podemos disparar un proceso desde otro programa y enviar parámetros.

El archivo conecta.sh, va a ejecutar un proceso de Connect:Direct en un equipo Unix, al archivo conecta le vamos a dar como parámetros la ruta del archivo origen y destino.

La ejecución dentro de Unix es:

$ conecta.sh /export/home/ceadmin/telmex/testdata.in C:\CDWindowsDemo\TestData\testData.out

El contenido de conecta.sh es:

NDMAPICFG=/export/home/ceadmin/guillermo/cd40/ndm/cfg/cliapi/ndmapi.cfg

set -v

/export/home/ceadmin/guillermo/ndm/bin/ndmcli -x <<EOJ

submit file=/export/home/ceadmin/telmex/variable.cd &entrada=$1 &salida=$2;

EOJ

El proceso variable.cd recibe los parámetros.

variables process

&entrada=$1

&salida=$2

snode = Windows2003

snodeid(Software,Sterling1)

primero copy

from (file=&entrada)

to (file=&salida

disp=rpl )

pend


Uso de parámetros en File Agent.

Para permitir la automatización de las transferencias tenemos el uso de scripts, sin embargo muchas veces la creación de archivos puede ocurrir en distintos directorios simultáneamente o en distintos tiempos. File Agent permite monitorear directorios, para esto se aplican reglas sobre los directorios, una vez que la regla se cumple en algún directorio, file agent inicia sesión en el IBM Sterling Connect:Direct (mediante el puerto API) y ejecuta un proceso, el proceso de File Agent necesita conocer en donde se encuentra el archivo a transferir, así como información adicional.

En la pantalla del File Agent. El paso de los parámetros se define:

La asignación de las variables, ocurre asignando otras variables, en el ejemplo a la variable arch se le asigna FA_FILE_FOUND, esta variable la genera file agent y guarda el nombre del archivo (con la ruta como parte del nombre) que cumplió la regla definida, ahora bien la variable FA_NOT_PATH guarda la información del archivo sin la ruta. Estas variables permiten que los procesos de Connect:Direct tengan la información necesaria para aplicarla en la lógica de la transferencia, la lista de variables de file agent son:

  • %FA_FILE_FOUND. On Windows and UNIX, the default value is the path and file name of the file detected in a watched directory. On OS/390, the default value is the entire name of the file that changed, including any member name. Partitioned Data Set Extended (PDSE) long member names are supported. For example, the following member name is valid: CUST.BENEFITS(PAYROLLPDSELONGNAME)
  • %FA_MEMBER_FOUND. The default value is "." This variable is only valid for PDS on OS/390 operating systems. PDSE long member names are supported. For example, the following member name is valid: PAYROLLPDSELONGNAME
  • %FA_BASEFILE_FOUND. The default value is the name of the file that changed, without the member name. This variable is only valid for a PDS on OS/390 operating systems. Example: CUST.BENEFITS.
  • %FA_DRIVE_FOUND. On Windows, the default value is the drive of the file that changed, for example, C:.
  • %FA_PATH_FOUND. On Windows and UNIX, the path to the file that changed, for example, on Windows, C:\watch\, and on UNIX, /home/user/watch/.
  • %FA_NAME_FOUND. On Windows and UNIX, the name of the file that changed, for example, myfile.
  • %FA_EXT_FOUND. On Windows and UNIX, the file extension of the added file, including the period (.). For example, if File Agent detects the file.txt file, .txt is passed.
  • %FA_EXT_FOUND_NP. On Windows and UNIX, the file extension of the file detected, but without the period before it. For example, if File Agent detects the file.txt file, only txt, the extension with no period is passed.
  • %FA_NOT_PATH. On Windows and UNIX, the file name with the file extension, without any path. For example, if the full file name is /usr/watch/test file.active.txt, then %FA_NOT_PATH. is test file.active.txt.
  • %FA_FDATE. The date a file was last modified. This value has 8 characters representing year, month, and day, for example, 20040903.
  • %FA_FTIME. The time a file was last modified. This value has 6 characters representing hour, minutes, and seconds (hhmmss) using a 24-hour clock, for example, 153842.
  • %FA_FDATE_DAY. The day a file was last modified, for example, 21.
  • %FA_FDATE_MONTH. The month in which a file was last modified, for example, 09.
  • %FA_FDATE_YEAR. The year in which a file was last modified, for example, 2004.
  • %FA_FTIME_HOUR. The hour a file was last modified, for example, 22.
  • %FA_FTIME_MINUTES. The minute a file was last modified, for example, 24.
  • %FA_FTIME_SECONDS. The second a file was last modified, for example, 35.
  • %FA_DATE. The current date. This value has 8 characters representing year, month, and day, for example, 20040131.
  • %FA_TIME. The current time. This value has 6 characters representing hour, minutes, and seconds (hhmmss) using a 24-hour clock, for example, 13245.
  • %FA_DATE_DAY. The current day of the month, for example, 31.
  • %FA_DATE_MONTH. The current month, for example, 01.
  • %FA_DATE_YEAR. The current year, for example, 2006.
  • %FA_TIME_HOUR. The current hour, for example, 13.
  • %FA_TIME_MINUTES. The current minute, for example, 24.
  • %FA_TIME_SECONDS. The current second, for example, 35.
  • %FA_NUM. The millisecond timestamp. If multiple files are sent within the same second, they will get different millisecond values, for example, 13143512345, 13143512346, and 13143512347.
  • %FA_0-99. These variables represent the individual components of the file name, delimited by the file delimiter. For example, if the full file name is /usr/watch/test file.active.txt, then %FA_0 is usr, %FA_1 is watch, and so on.

De esta manera File Agent proporciona la información suficiente para que los procesos de Connect:Direct realicen transferencias en base a características del archivo, por ejemplo su extensión, fecha de creación, minutos, horas.

Uso de parámetros en Sterling B2B Integrator con el Connect:Direct server adapter.

El Sterling B2B Integrator tiene en su lista de componentes el Connect:Direct server adapter, el Connect:Direct server adapter contiene todas las funcionalidades de un servidor de Connect:Direct , a diferencia del Connect:Direct el adaptador dentro del Sterling B2B Integrator utiliza el BMPL, por lo que la información puede generarse de forma dinámica a traves de la información del Process Data. En el siguiente ejemplo tenemos un Process Data que muestra la información generada por los servicios que hicieron un query a los mailboxes que guardan archivos, esta información la genero el servicio Mailbox query.

<ProcessData>

<RoutingRequest>

<RoutingRequest>

<RuleId>-29e5194e:13322f447ce:-7d35</RuleId>

<MessageId>8016</MessageId>

</RoutingRequest>

</RoutingRequest>

<Message>

<MessageId>8016</MessageId>

<DocumentId>scidemosuite1:node1:13341040e1f:53645</DocumentId>

<MessageSize>7536</MessageSize>

<CreateDateTime>2011-10-26 13:17:27.92</CreateDateTime>

<MessageName>PO_POS53446_AN01000425880_20111013031600004.xml</MessageName>

<MailboxPath>/DEMO_BUZON</MailboxPath>

<ContentType>application/data</ContentType>

<ContentEncrypted>false</ContentEncrypted>

<Extractable>true</Extractable>

<CurrentlyExtractable>true</CurrentlyExtractable>

</Message>

</ProcessData>

Para poder hacer la transferencia, necesitamos tomar el archivo del mailbox y hacerlo el current document del proceso de negocio. Para esto utilizamos el servico mailbox extract con una sentencia Xpath. Para nuestro ejemplo la sentencia es:

/Processdata/MessageId/text()

La sentencia está tomando al archivo del mailbox a través del número que lo identifica (MessageId). Ahora bien, tal vez dentro de nuestro proceso de negocio, necesitamos mandar ejecutar un proceso Connect:Direct en un nodo remoto, o tal vez un comando del sistema operativo con un paso de parámetros. Siguiendo el flujo, ejecutamos una sentencia runtask o runjob con un paso de parámetros.

A diferencia de Connect:Direct, el Sterling Integrator cuenta con herramientas para manejar XML tales como Xpath, de esta manera el runtask puede generar sus parametros mediante sentencias Xpath. En nuestro ejemplo, vamos a ejecutar un runtask para un nodo remoto, nuestro runtask va a llamar al programa concilia.exe y va a mandar como parámetro la fecha de creación del archivo. De nuestro Process Data, tenemos que la etiqueta CreateDateTime contiene la fecha y hora de creación del archivo dentro del mailbox pero el programa concilia.exe solo necesita la fecha y no la hora. Para esto aplicamos la siguiente expresión Xpath sobre esta etiqueta.

/ProcessData/CreateDateTime/text()

Ahora bien, esto aplicado dentro del servicio runtask quedaria:

<process name="default">

<sequence>

<operation name="CD Server Run Task Service">

<participant name="CDServerRunTask"/>

<output message="CDServerRunTaskServiceTypeInputMessage">

<assign to="." from="*"></assign>

<assign to="SystemOpts">concilia.exe(/Processdata/CreateDateTime/text())</assign>

</output>

<input message="inmsg">

<assign to="." from="*"></assign>

</input>

</operation>

</sequence>

</process>

Una ventaja que nos ofrece Xpath es que podemos utilizar funciones de caracteres sobre el contenido text(), las funciones son de uso de cadenas de caracteres, aritméticas, booleanas y nodos. De nuestro texto que es la fecha de creación, podemos usar la función substring before() o substring after() para solo mandar la fecha sin mes o el año sin mes a partir del separador de mes año y día.

El uso de parámetros nos permite proveer la información necesaria a los distintos procesos involucrados en las transferencias de archivos, de esta forma si en el flujo de transferencias hay programas heredados o scripts de sistema operativo, podremos proveerles de los parámetros que afectan sus lógicas de programación. Debido a que el alcance de Connect:Direct es proveer de una transferencia administrada de archivos, sus procesos no están pensados en dar la capacidad de un lenguaje de programación completo. Los adaptadores de Connect:Direct dentro del Sterling B2B Integrator permiten aplicar un flujo de procesos en el cual pueden tomarse decisiones, mandar llamar subprocesos, sin embargo estos adaptadores son parte de una solución SOA, la cual tiene un alcance mucho mayor al de un servidor Connect:Direct y al de un lenguaje de programación.

Al momento de diseñar las transferencias administradas de archivos dentro de una organización, es necesario tomar en cuenta que el movimiento de archivos obedece a razones de negocio y estas razones deben cumplir con niveles de servicio, estos niveles de servicios son respecto a los horarios en los cuales las transferencias se realizan, de ahí la importancia de las funcionalidades de Connect:Direct, que permiten que los archivos lleguen íntegros sin importar las plataformas involucradas.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=781508
ArticleTitle=Paso de parámetros en Connect:Direct
publish-date=12192011