IBM Content Manager, Versión 8.5      Soporta:  Oracle, DB2, C++, Java

Definición de un proceso nuevo y ruta asociada

La clase DKProcessICM representa una definición de proceso que contiene una colección de rutas interconectadas que describen los pasos y flujos de un proceso (además de otros atributos como el límite de tiempo) y una descripción de un proceso. La clase DKRouteListEntryICM define la rutna que un proceso puede seguir (como De o A).

Un objeto de proceso (DKProcessICM) contiene una colección de objetos de entrada de ruta (DKRouteListEntryICM). Determinados campos (regla de decisión y prioridad) facilitan la creación de reglas de decisión para las rutas que salen de los nodos de decisión.

Un proceso de direccionamiento de documentos consta de las rutas definidas que sigue un paquete de trabajo. Varios procesos de direccionamiento pueden reutilizar los mismos nodos y pueden utilizarse varias rutas entre los nodos.

Es posible crear directamente definiciones de proceso de direccionamiento de documentos con la API. Pero si es posible, es preferible evitar hacerlo. Puesto que la creación del proceso de direccionamiento de documentos con las API supone un riesgo de un comportamiento inesperado (como, por ejemplo, crear una construcción de direccionamiento paralelo ilegal) y puede dañar el sistema, el creador del flujo de trabajo gráfico lo evita validando un proceso, antes de que se guarde en el servidor de biblioteca.
Consejo: Puede escribir un programa que haga uso de las API para recuperar y examinar el valor definido por el creador gráfico, pero defina usted mismo esas reglas de decisión, pues corre el riesgo de crear una regla de decisión no válida.

Ejemplo: Java™

// Crear una definición de proceso nueva
DKProcessICM process = new DKProcessICM();  
process.setName("S_claimProcess");
process.setDescription("Process for an Insurance Claim"); 

// Definir todas las rutas posibles. 

// Crear una lista de todas las rutas posibles entre nodos.
dkCollection routes = new DKSequentialCollection();

// Conectar los nodos de trabajo utilizando entradas de lista de direccionamiento.
// Una ruta simple
//entre dos nodos de trabajo se especifica asociando un trabajo 'Desde' 
a un nodo de trabajo 'A'.
// Una entrada de lista de direccionamiento simplemente conecta
// dos nodos mediante una dirección implícita.
// Pueden existir varias rutas entre nodos. Se puede seleccionar una ruta específica
// mediante una palabra clave "selection" definida por el usuario.
// Por ejemplo "Continue", "Go",
"Accept", "Reject", "Complete", etc.
// Crear una conexión nueva entre dos nodos.
DKRouteListEntryICM nodeRoute = new DKRouteListEntryICM();

// Cada proceso debe iniciarse con el nodo de inicio.
nodeRoute.setFrom(DKConstantICM.DK_ICM_DR_START_NODE);
nodeRoute.setTo("S_fillClaim");
// Elegir cualquier nombre definido por el usuario para una acción que realizará la 
//transición del primer nodo al segundo
nodeRoute.setSelection("Continue");  

// Añadir la ruta individual a la colección de todas las rutas posibles.
routes.addElement(nodeRoute);
nodeRoute = new DKRouteListEntryICM(); 
nodeRoute.setFrom("S_fillClaim");  
nodeRoute.setTo("S_gatherAll");
// Elegir cualquier nombre definido por el usuario para una acción que realizará la
// transición. 
nodeRoute.setSelection("Continue");

// Añadir la ruta individual a la colección de todas las rutas posibles. 
routes.addElement(nodeRoute);   
nodeRoute = new DKRouteListEntryICM(); 
nodeRoute.setFrom("S_gatherAll");
nodeRoute.setTo(DKConstantICM.DK_ICM_DR_END_NODE);

// Elegir cualquier nombre definido por el usuario para una acción 
// que hará que la transición tenga lugar.
nodeRoute.setSelection("Complete");
// Añadir la ruta individual a la colección de todas las rutas posibles.
routes.addElement(nodeRoute);
// Definir la ruta en el proceso.
process.setRoute(routes);
// Añadir el proceso a la Gestión de direccionamiento.
routingMgmt.add(process);

Ejemplo: C++

//Un proceso de direccionamiento de documentos es las rutas definidas que 
//seguirá un paquete que se está direccionando.
// Es posible que varios procesos de direccionamiento 
//reutilicen los mismos nodos y es posible que se utilicen varias rutas entre nodos.

// Crear una definición de proceso nueva
DKProcessICM* process = new DKProcessICM();  
process->setName("Buy_Book");
process->setDescription("Purchase a book online"); 
// Definir todas las rutas posibles. 

// Crear una lista de todas las rutas posibles entre nodos.
dkCollection* routes = new DKSequentialCollection();       

// Conectar los nodos de trabajo utilizando entradas de lista de direccionamiento.
// Una ruta simple
entre dos nodos de trabajo se especifica asociando un nodo de
// trabajo
'Desde' con un nodo de trabajo 'A'.
// Una entrada de lista de direccionamiento simplemente conecta
// dos nodos mediante una dirección implícita.
// Pueden existir varias rutas entre nodos.
// Se puede seleccionar una rutina específica mediante una palabra clave "selection"
// definida por el usuario. Por ejemplo "Continue", "Go",
// "Accept", "Reject", "Complete", etc.

// Crear una conexión nueva entre dos nodos.
DKRouteListEntryICM* nodeRoute = new DKRouteListEntryICM();  

// Cada proceso debe iniciarse con el nodo de inicio.
nodeRoute->setFrom(DK_ICM_DR_START_NODE);
nodeRoute->setTo("ValidateCreditCard");
// Elegir cualquier nombre definido por el usuario para una acción que
// realizará la transición del primer nodo al segundo
nodeRoute->setSelection("Continue");  

// Añadir la ruta individual a la colección
// de todas las rutas posibles.
routes->addElement(nodeRoute);

nodeRoute = new DKRouteListEntryICM();
nodeRoute->setFrom("ValidateCreditCard"); 
nodeRoute->setTo("GatherShippingDetails");  

// Elegir cualquier nombre definido por el usuario para una acción que
// realizará la transición. 
nodeRoute->setSelection("Continue"); 

// Añadir la ruta individual a la colección de todas las rutas posibles. 
routes->addElement(nodeRoute);
nodeRoute = new DKRouteListEntryICM();  
nodeRoute->setFrom("GatherOrderDetails");
nodeRoute->setTo(DK_ICM_DR_END_NODE);

// Elegir cualquier nombre definido por el usuario para una acción que
// realizará la transición.
nodeRoute->setSelection("Complete");

// Añadir la ruta individual a la colección de todas las rutas posibles.
routes->addElement(nodeRoute);        
// Definir la ruta en el proceso.
process->setRoute(routes);

// Añadir el proceso a la Gestión de direccionamiento.
routingMgmt->add(process);

delete(process);

Para obtener el ejemplo completo, consulte el ejemplo SDocRoutingDefinitionCreationICM.



Comentarios

Última actualización: Diciembre de 2013
dcmar011.htm

© Copyright IBM Corp. 2013.