i
Casos
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 getProccess() 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 con los valores asignados a los campos del formulario relacionado
String user: Código del usuario que ejecuta la actividad. Se debe especificar cuando el responsable de la actividad es un rol |
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 |
read(case) |
Lee un caso. |
Case case: Modelo del caso con número de caso asignado |
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 sus actividades y finalizarlo.
Diagrama del Proceso
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.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);
|
3.Ejecución de 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.setLastPresedButton("Approve"); myService.execute(myPaymentCase);
|
4.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);
|