i

Please enable JavaScript to view this site.

Documentación 8.3

La clase modelo contiene las propiedades con sus métodos getter y setter, mientras que la clase servicio contiene las operaciones a realizar sobre el modelo.

 

Por ejemplo, si se usa el proceso "Request Payment", al descargar los fuentes Java del proceso, se genera un archivo requestPayment.java con los métodos del modelo y otro archivo requestPaymentService.java con las operaciones disponibles del servicio.

Contenido de la Clase Modelo

 

El modelo de un caso contiene:

 

Constructor del modelo.

Métodos getter y setter de las propiedades del caso.

Métodos getter para obtener los formularios relacionados.

Métodos getter para obtener las actividades en ejecución.

Métodos getter para obtener el proceso correspondiente al caso.

 

Métodos getter y setter de las propiedades del caso

 

La clase modelo de un caso contiene un conjunto de métodos getter y setter para las propiedades del caso.

 

 

Operación

Descripción

Parámetros

getCdCase()

Obtiene el identificador del caso.


setCdCase(casenumber)

Permite asignar el valor del identificador del caso.

String casenumber: Número del caso

getCdState()

Obtiene el estado del caso.

 

Valores posibles:

ACTIVE - Activo

CANCELLED - Cancelado

ENDEDCASE - Finalizado


getDsCase()

Obtiene la descripción del caso.


getDtEnded()

Obtiene la fecha de finalización del caso.


getDtExpiration()

Obtiene la fecha de vencimiento del caso.


getDtInitiated()

Obtiene la fecha de inicio del caso.


getPriority()

Obtiene la prioridad del caso.

 

Valores posibles:

1 - Urgente

2 - Alta

3 - Media

4 - Baja


setLastPressedButton(button)

Permite configurar el último botón presionado.

String button: Nombre del último botón presionado

getLastPressedButton()

Obtiene el último botón presionado.


get + <Nombre de la clase del formulario> + Entity()

Obtiene una instancia de la clase del formulario relacionado al proceso.


getLsVinculatedForms()

Obtiene una lista de instancias de formularios relacionados al caso.


getVinculatedFormByIdEntity(idEntity)

Obtiene una instancia del formulario relacionado al caso.

String idEntity: Identificador de la instancia del  formulario

getProcess()

Obtiene el proceso correspondiente al caso.


getLsExecutedActivities()

Obtiene las actividades finalizadas del caso.


getLsCurrentActivities()

Obtiene las actividades en ejecución del caso.


 

Método getter para obtener los formularios relacionados

 

Dado un caso, se pueden utilizar los valores de los campos de los formularios relacionados al mismo, de la misma manera que se haría si las actividades se ejecutaran manualmente.  

 

La clase modelo tiene un método getter para cada formulario relacionado al proceso, con la estructura “get + <Nombre de la clase del formulario> + Entity()”. Una vez recuperada una instancia la misma se utiliza de igual manera que para formularios.

 

Ejemplo

Si se modela el proceso “Request Payment” relacionados a los formularios “Payment” y “Report”, la clase RequestPayment tiene los métodos:

 

getPaymentEntity(): Retorna una instancia de la clase Payment, que corresponde al formulario "Payment" relacionado al caso.

 

getReportEntity(): Retorna una instancia de la clase Report, que corresponde al formulario "Report" relacionado al caso.

 

 

El caso no puede tener asociados formularios con el mismo nombre de clase, aunque pertenezcan a distintas aplicaciones.

 

Métodos getter para obtener las actividades en ejecución

 

Dado un caso, se puede acceder a la lista de sus actividades en ejecución, utilizando el método de las propiedades del caso getLsCurrentActivities() de la clase modelo, que retorna una lista de objetos “ExecutedActivity” con sus métodos.

 

 

Operación

Descripción

Parámetros

getCdActivity()

Obtiene el código de la actividad.


getDsNameActivity()

Obtiene el nombre de la actividad.


getCdState()

Obtiene el estado de la actividad.

 

Valores posibles:

EXEC - En ejecución

CANCELLEDACT - Cancelada

ENDEDACT - Finalizada


getPriority()

Obtiene la prioridad de la actividad.

 

Valores posibles:

1 - Urgente

2 - Alta

3 - Media

4 - Baja


getDtEnded()

Obtiene la fecha de finalización de la actividad.


getDtExpiration()

Obtiene la fecha de vencimiento de la actividad.


getDtInitiated()

Obtiene la fecha de inicio de la actividad.


getCdUserExec()

Obtiene el código del usuario que ejecutó la actividad.


getCdUserInit()

Obtiene el código del usuario que inició la actividad


getNuDurationSeconds()

Obtiene la duración en segundos de la ejecución de la actividad.


getTpActivity()

Obtiene el tipo de la actividad.

 

Valores posibles:

TP_GATEWAY  - Compuerta

TP_STANDARD - Estándar

TP_ABSTRACT - Abstracta


getTpParticipant()

Obtiene el tipo de participante de la actividad.

 

Valores posibles:

USER - Usuario

ORG_UNIT - Unidad organizacional

ROLE - Rol

THING - Usuario cosa

 


getLsExecutedActions()

Obtiene una lista de acciones ejecutadas por la actividad.


 

Método getter para obtener el proceso correspondiente al caso

 

El proceso correspondiente a un caso se puede obtener mediante el método getProcess() de la clase modelo, que retorna una instancia de la clase “Process” con sus métodos.

 

 

Operación

Descripción

Parámetros

getCdProcess()

Obtiene el código del proceso.


getCdVersion()

Obtiene la versión del proceso.


getIdApplication()

Obtiene el identificador de la aplicación del proceso.


getCdFirstActivity()

Obtiene un objeto Activity con la primera actividad del proceso,


getDsComment()

Obtiene el comentario del proceso.


getDsDescription()

Obtiene la descripción del proceso.


getDsName()

Obtiene el nombre del proceso.


 

Contenido de la Clase Servicio

 

El servicio permite realizar las siguientes operaciones sobre los casos:

 

 

Operación

Descripción

Parámetros

startCase(case)

 

 

 

 

startCase(case, user)

 

Inicia un caso, ejecutando la actividad inicial del proceso relacionado. Retorna el código del caso creado.

 

Case case: Modelo del caso a iniciar. Los campos del formulario relacionado deben tener valores

 

 

Case case: Modelo del caso a iniciar. Los campos del formulario relacionado deben tener valores

 

String user: Código del usuario que ejecuta la actividad. Se debe especificar cuando el responsable de la actividad es un rol

startCase(case. moveCase)

 

 

 

 

 

 

 

startCase(case, user, moveCase)

 

 

Inicia un caso, con la posibilidad de no ejecutar la actividad inicial del proceso relacionado. Retorna el código del caso creado.

 

 

Case case: Modelo del caso a iniciar. Los campos del formulario relacionado deben tener valores

 

Boolean moveCase: Configurar con valor false, para indicar que no tiene que ejecutar la actividad inicial del proceso

 

Case case: Modelo del caso a iniciar. Los campos del formulario relacionado deben tener valores

 

String user: Código del usuario que ejecuta la actividad. Se debe especificar cuando el responsable de la actividad es un rol

 

Boolean moveCase: Configurar con valor false, para indicar que no tiene que ejecutar la actividad inicial del proceso

execute(case)

 

 

execute(case, user)

Ejecuta la actividad actual de un caso.

Retorna el estado del caso actualizado.

Case case: Modelo del caso con número de caso asignado

 

 

Case case: Modelo del caso con número de caso asignado

 

String user: Código del usuario que ejecuta la actividad. Se debe especificar cuando el responsable de la actividad es un rol

execute(case,activity)

 

 

 

 

 

 

execute(case,activity,user)

 

 

 

Ejecuta la actividad de un caso indicada en el parámetro.

Retorna el estado del caso actualizado.

 

 

Case case: Modelo del caso con número de caso asignado

 

ExecutedActivity activity: Actividad recuperada de la lista de actividades en ejecución del caso

 

 

Case case: Modelo del caso con número de caso asignado

 

ExecutedActivity activity: Actividad recuperada de la lista de actividades en ejecución del caso

 

String user: Código del usuario que ejecuta la actividad. Se debe especificar cuando el responsable de la actividad es un rol

read(case)

Lee un caso.

Case case: Modelo del caso con número de caso asignado

cancelCase(case, observation)

Cancela un caso.

Case case: Modelo del caso con número de caso a cancelar. La cancelación se realiza con el usuario online que ejecuta la regla sdk

 

String observation: Motivo de la cancelación

reasignCase(case, reasignUser)

 

Asigna la tarea en ejecución del caso.

Case case: Modelo del caso con número de caso cuya tarea se asigna

 

String reasignUser: Código del usuario al que se le asigna la tarea del caso

 

Ejemplos de Uso

 

En los ejemplos se utiliza el proceso “Request Payment” y cada ejemplo contiene el uso de la clase modelo “RequestPayment” y la clase servicio “RequestPaymentService”.

 

Además se utilizan las clases “Request” y “Report” que representan a los modelos de los formularios vinculados al proceso “Request Payment”.

 

Los ejemplos detallan cómo iniciar un caso, leerlo, ejecutar y asignar sus actividades, finalizarlo y cancelarlo.

 

Diagrama del Proceso para los Ejemplos del 1 al 7

 

 

CM0050~1_img1

 

 

1.Inicio de un caso

 

Para iniciar el caso, se ejecuta la primera actividad “Fill Request”. El caso pasa a la actividad “Evaluate Request” bajo responsabilidad del usuario “Afarias”, configurado en el lane “Authorizer”.

 

La ejecución de la actividad “Fill Request” realiza la operación “Crear” sobre el formulario “Request” con los valores asignados a sus campos.

 

Se crea una instancia de la clase modelo “RequestPayment”, al formulario “Request” obtenido mediante el método getRequestEntity() se le asignan valores a sus campos con los correspondientes métodos setter. Utilizando la clase servicio “RequestPaymentService” se inicia el caso con el método startCase(myFirstPaymentCase).

 

 

RequestPayment myFirstPaymentCase = new RequestPayment();

myFirstPaymentCase.getRequestEntity().setAmount(new Double(200));

 

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

myFirstPaymentCase.getRequestEntity().setDueDate(new Date(format.parse("2020-06-28").getTime()));

myFirstPaymentCase.getRequestEntity().setMessage("This is my first payment request.. i need to buy more coffee!!");

 

RequestPaymentService myService = new RequestPaymentService(getApiClient());

String cdCase = myService.startCase(myFirstPaymentCase);

 

 

 

2.Inicio de un caso sin ejecutar la primera actividad

 

Se utiliza el proceso del Ejemplo 1.

Utilizando la clase servicio “RequestPaymentService” se inicia el caso con el método startCase(case.moveCase) con el segundo parámetro en false para que no ejecute la primera actividad “Fill Request”.

 

 

RequestPaymentService myService = new RequestPaymentService(getApiClient());

String cdCase = myService.startCase(myFirstPaymentCase,false);

 

 

 

3.Lectura del caso

 

Se crea una instancia de la clase modelo “RequestPayment”, se le asigna el número de caso generado por el método startCase(myFirstPaymentCase) de la clase servicio “RequestPaymentService”, en el ejemplo anterior.

 

Se lee el caso con el método read(myFirstPaymentCase) de la clase servicio “RequestPaymentSercice” y el número de caso .

 

 

RequestPayment myPaymentCase = new RequestPayment();

myPaymentCase.setCdCase(cdCase);

myPaymentCase = myService.read(myFirstPaymentCase);

 

 

 

4.Ejecución de una actividad que define botones modelados

 

El caso está en la actividad “Evaluate Request”, que tiene dos botones modelados. La siguiente actividad que se ejecute depende del botón que se seleccione, en este ejemplo se elige “Approve”. Si no se indica ningún botón se sigue el flujo modelado como predeterminado.

 

Se asigna el botón “Approve” a la clase modelo “Request Payment” mediante el correspondiente método setter. Se ejecuta la actividad “Evaluate Request” con el método execute(myPaymentCase) de la clase servicio “RequestPaymentService”.

 

Como resultado, el caso se encuentra en la actividad “Fill Report” y su estado es “ACTIVE”,

 

 

myPaymentCase.setLastPressedButton("Approve");

myService.execute(myPaymentCase);

 

 

 

5.Ejecución de una actividad que no define botones modelados

 

El caso está en la actividad “Fill Report”. La ejecución de esta actividad crea el formulario “Report”. Este formulario tiene un campo llamado “request” que está relacionado a la entidad “Request”.

 

Se completa el campo “request” mediante el correspondiente método setter, con el identificador de la entidad “Request” relacionada al caso y que es obtenido mediante el método getRequestEntity().

 

Se completa el resto de los campos y se ejecuta la actividad “Fill Report” con el método execute(myPaymentCase) de la clase servicio “RequestPaymentService”.

 

El caso se envía al evento de fin “Request approved” y su estado es finalizado.

 

 

Integer requestId = myPaymentCase.getRequestEntity().getRequestId();

 

myPaymentCase.getReportEntity().setRequest(requestId.toString());

myPaymentCase.getReportEntity().setPaymentMethod("Credit");

myPaymentCase.getReportEntity().setSummary("Filling the report using the SDK.");

myService.execute(myPaymentCase);

 

 

6.Cancelación de un caso

 

Se crea una instancia de la clase modelo “RequestPayment”, se le asigna el número de caso a cancelar.

Se ingresa el motivo de cancelación en el parámetro “observation” y se cancela el caso con el método cancelCase(myPaymentCase, observation) de la clase servicio “RequestPaymentService”.

 

 

RequestPaymentService myService = new RequestPaymentService(getApiClient());

RequestPayment myPaymentCase = new RequestPayment();

myPaymentCase.setCdCase("0000000091120000");

myService.cancelCase(myPaymentCase,"Duplicate case");

 

 

7.Asignación de la tarea en ejecución de un caso

 

Se crea una instancia de la clase modelo “RequestPayment” indicando el número de caso cuya tarea se asigna.

Se ingresa el código del usuario en el parámetro “reasignUser” y se asigna la tarea con el método reasignCase(myPaymentCase, reasignUser) de la clase servicio “RequestPaymentService”.

 

Cuando se asigna la tarea de un caso se utiliza el usuario on line que ejecuta la regla sdk. El mismo puede asignar sus propias tareas, las de su equipo y las de los participantes de un rol, si fuera coordinador de los mismos.

 

 

RequestPaymentService myService = new RequestPaymentService(getApiClient());

RequestPayment myPaymentCase = new RequestPayment();

myPaymentCase.setCdCase("0000000091120000");

myService.reasignCase(myPaymentCase,"JPEREZ");");

 

Diagrama del Proceso para el Ejemplo 8

 

 

EjemploProcesoCasoSDK

 

 

8.Ejecución de una actividad específica

 

Las actividades "Evaluate request" (9) y "Evaluate manager request" (11) se envían para evaluar por dos autorizantes.

Se ejecuta la actividad "Evaluate manager request" (11). El usuario JPAZ es el autorizante y en este caso la rechaza.

 

Se crea una instancia de la clase modelo “RequestPayment2Authorizer”, se le asigna el número de caso a leer.

Se lee el caso con el método read(xMyCase) de la clase servicio “RequestPayment2AuthorizerService” y el número de caso.

 

Se recorre cada una de las actividades en ejecución con el método getLsCurrentActivities() y se instancia un objeto ExecutedActivity.

Si la actividad es "Evaluate manager request" (11), se asigna el botón “Reject” mediante el correspondiente método setter y se ejecuta la actividad con el método execute(xMyCase. xActivity, user) de la clase servicio “RequestPayment2AuthorizerService”.

 

 

RequestPayment2AuthorizerService xRequestPaymentService = new                   RequestPayment2AuthorizerService(getApiClient());

RequestPayment2Authorizer xMyCase = new RequestPayment2Authorizer();

 

xMyCase.setCdCase(idCase);

xMyCase = xRequestPaymentService.read(xMyCase);

 

for (int i = ; i < xMyCase.getLsCurrentActivities().size(); i++) {

    ExecutedActivity xActivity = xMyCase.getLsCurrentActivities().get(i);

 

    if (xActivity.getCdActivity()== 11 [);i

()                         xMyCase.setLastPressedButtom("Reject");

       xRequestPaymentService.execute(xMyCase, xActivity, "JPAZ" );

}       }

      }

Búsqueda

 

Las búsquedas de casos de un proceso se pueden realizar mediante la interacción de los siguientes objetos.

 

Criteria: representa criterios para realizar búsquedas sobre los datos de los casos. Se compone de elementos que pueden ser propiedades y valores, conectados por operadores.

 

 

Identificador de Propiedades

Descripción

Case.searchCdState

Estado del caso

Case.searchPriority

Prioridad del caso

Case.searchDsCase

Descripción del caso

Case.searchDtInitiated

Fecha de inicio del caso

Case.searchDtEnded

Fecha de fin del caso

Case.searchCdActivity

Código de actividad

Case.searchCdCase

Número de caso

 

 

Operador

Descripción

eq

Igual

gt

Mayor

lt

Menor

betweene

Entre y admite iguales

like

Contiene

 

 

Valores posibles del estado del caso:

 

Identificador

Descripción

Case.stateActive

Activo

Case.stateCancelled

Cancelado

Case.stateEnded

Finalizado

 

 

Valores posibles de la prioridad del caso:

 

Identificador

Descripción

Case.priorityUrgent

Urgente

Case.priorityHigh

Alta

Case.priorityMedia

Media

Case.priorityLow

Baja

 

 

SearchCriteria: objeto que agrupa las condiciones de búsqueda (objeto Criteria), además permite parametrizar el orden del resultado, el tamaño de la página de lectura y la cantidad de páginas que se van a recuperar. La lectura por páginas se utiliza dado que el volumen de datos de un proceso puede ser muy grande.

 

Servicio del Proceso: clase servicio del proceso sobre el que se está haciendo la búsqueda de casos. Contiene la operación search(searchCriteria) que debe recibir como parámetro el objeto SearchCriteria y retorna el objeto SearchResult.

Ejemplo:

SearchResult searchResult = accionesService.search(searchCriteria);

 

SearchResult: objeto que contiene los resultados de la búsqueda. Contiene una lista de casos del proceso, por ejemplo “Acciones”. Este objeto permite conocer la cantidad total de páginas de lectura resultantes de la búsqueda, el tamaño de cada página y la cantidad de páginas a recuperar.

Ejemplos de Búsqueda

 

1. Búsqueda

 

En este ejemplo se recupera una lista de casos del proceso “Acciones” con estado activo, donde la propiedad estado corresponde al identificador “Case.searchCdState” y el valor activo al identificador “Case.stateActive”. También se define el número de páginas a recuperar.

 

 

AccionesService xaccionservice = new AccionesService(getApiClient());

SearchCriteria searchCriteria = new SearchCriteria();
Criteria criteria1 =
          Criteria.eq(Case.searchCdState,Case.stateActive);
searchCriteria.addCriteria(criteria1);
searchCriteria.setPage(1);
 
SearchResult searchResult =
             xaccionservice.search(searchCriteria);
List<Acciones> instancesResult = searchResult.getResult();
 

 

 

2. Tipos de constructores para los criterios de búsquedas

 

En este ejemplo se crea un objeto Criteria y se definen diferentes condiciones de búsqueda utilizando los operadores "entre y admite iguales", "contiene" y "mayor".

 

 

 

// Entre y admite iguales. Las fechas tienen que tener formato año-mes-dia

// SearchCriteria searchCriteria = new SearchCriteria();

// SimpleDateFormat format =
//      new SimpleDateFormat("yyyy-MM-dd");
// Date dateFrom =
//      new Date(format.parse( "2020-01-01" ).getTime());
// Date dateTo =
//      new Date(format.parse( "2021-01-01" ).getTime());

//
// Criteria  criteriaDate =  Criteria.betweene(Case.searchDtInitiated,
// DateFrom, DateTo);

// searchCriteria.addCriteria(criteriaDate);

 
// Contiene. La descripción del caso contiene la palabra prueba
// Criteria criteriaLike = Criteria.like(Case.searchDsCase,"prueba");

 
// Mayor. Número de caso mayor a 80
// Criteria criteria = Criteria.gt (Case.searchCdCase, "80") ;

 

 

Deyel utiliza para los campos con tipo “fecha” el tipo de dato java.sql.Date, por lo que se debe hacer la transformación de java.util.Date a java.sql.Date, cuando se requiere crear un objeto con este tipo de dato.

 

 

3. Operaciones sobre el objeto de resultados

 

El objeto SearchResult es un objeto iterativo y como tal se puede recorrer de distintas formas.

En el ejemplo se utiliza una sentencia FOR para iterar sobre los casos que cumplen con las condiciones de búsqueda del ejemplo 1 (estado activo) , recuperando la fecha de inicio del caso y la prioridad.

 

 

AccionesService xaccionservice = new AccionesService(getApiClient());

SearchCriteria searchCriteria = new SearchCriteria();

// Casos con estado activo

Criteria criteria1 = Criteria.eq(Case.searchCdState,"ACTIVE");

    searchCriteria.addCriteria(criteria1);

    searchCriteria.setPageSize(10);

    searchCriteria.setPage(1);

 

    SearchResult searchResult = xaccionservice.search(searchCriteria);

 

    List<Case> instancesResult =searchResult.getResult();

    // Recorro la lista de casos

    String log = "";

    for (Case cases :instancesResult){

        log = cases.getDtInitiated() +" - "+ cases.getPriority();

    }

 

Envianos tu comentario
Compartir en Twitter Compartir en Linkedin Enviar por Email Imprimir