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.
// 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);
//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.
