diff --git a/README.md b/README.md index 3e62ace..5d8d2f9 100644 --- a/README.md +++ b/README.md @@ -5,38 +5,35 @@ The main objective of this training is to familiarize yourself with concepts and Bonita Camp include both theoretical knowledge and hands on with exercises that let you build your first Bonita application. Bonita Camp comes with: -- A set of slides commented in a [series of videos](https://www.youtube.com/playlist?list=PLvvoQatxaHOMHRiP7hFayNXTJNdxIEiYp) (also available in [French](https://www.youtube.com/playlist?list=PLvvoQatxaHOPSATzZe-zPh-LrSNGfpQEf) and [Spanish](https://www.youtube.com/playlist?list=PLvvoQatxaHOOgWEMHZjk5rjc9qsCnh7bi)) or during live sessions - A set of exercises described on a [dedicated web site](http://bonitasoft-community.github.io/bonita-camp/) - [Exercises solutions](https://github.com/Bonitasoft-Community/bonita-camp/releases/latest) +- [Outdated - based on Bonita 2021.2] A set of slides commented in a [series of videos](https://www.youtube.com/playlist?list=PLvvoQatxaHOMHRiP7hFayNXTJNdxIEiYp) (also available in [French](https://www.youtube.com/playlist?list=PLvvoQatxaHOPSATzZe-zPh-LrSNGfpQEf) and [Spanish](https://www.youtube.com/playlist?list=PLvvoQatxaHOOgWEMHZjk5rjc9qsCnh7bi)) or during live sessions If you need assistance you can: -- Ask your question on our dedicated **Bonita Camp Discord channel** if you have attended a live session - Ask your question on **[Bonitasoft Community forum](https://community.bonitasoft.com/questions-and-answers)** - [Get in touch with Bonitasoft](https://www.bonitasoft.com/contact-us) to get more information about [support offering](https://www.bonitasoft.com/support) and additional features of Enterprise Edition Content is currently available in: -- English (Bonita Camp 2021.2) -- Français (Bonita Camp 2021.2) -- Español (Bonita BPM 2021.2) +- English +- Français +- Español - -## For Bonita Camp contributors +## For Bonita Camp Contributors ### Sources All sources are available on [Bonita Camp GitHub repository](https://github.com/Bonitasoft-Community/bonita-camp/): - -- Slides are created using reveal.js and are located in the [slides](https://github.com/Bonitasoft-Community/bonita-camp/tree/master/slides) folder +- Source files of slides based on h5p and generated htmls are located in the [h5p](https://github.com/Bonitasoft-Community/bonita-camp/tree/master/h5p) folder - Exercises are hosted using GitHub Pages. Source are located in the [docs](https://github.com/Bonitasoft-Community/bonita-camp/tree/master/docs) folder and content is available for users at **[http://bonitasoft-community.github.io/bonita-camp/](http://bonitasoft-community.github.io/bonita-camp/)** ### Build instructions for slides +Refer to h5p documentation at **[https://h5p.org/](https://h5p.org//)** + +### Archive +- Previous versions of slides are located in the [slides](https://github.com/Bonitasoft-Community/bonita-camp/tree/master/slides) folder + + + -1. Download and unzip [reveal.js](https://github.com/hakimel/reveal.js/archive/master.zip) -1. Paste the content of the `slides/THE_LANGUAGE/` folder into your `reveal.js` directory -1. Paste the content of the `slides/theme` folder in your `reveal.js/css/theme/source` folder -1. Run `npm install` -1. Run `npm install -g grunt-cli` -1. Run `grunt package` -1. Use the built zip package to share and run the presentation diff --git a/docs/en/images/self-contained-app-tomcat.png b/docs/en/images/self-contained-app-tomcat.png new file mode 100644 index 0000000..f946431 Binary files /dev/null and b/docs/en/images/self-contained-app-tomcat.png differ diff --git a/docs/en/images/self-contained-app.png b/docs/en/images/self-contained-app.png new file mode 100644 index 0000000..a46d9b2 Binary files /dev/null and b/docs/en/images/self-contained-app.png differ diff --git a/docs/es/00-introduction.md b/docs/es/00-introduction.md index 595b1ad..8758d64 100644 --- a/docs/es/00-introduction.md +++ b/docs/es/00-introduction.md @@ -5,15 +5,15 @@ title: Introducción El objetivo de los ejercicios es lograr producir un proceso básico de solicitud de vacaciones. El proceso será el siguiente: -1. Un empleado presenta una solicitud de licencia -1. El gerente del empleado decide si aprueba o no la solicitud. +1. Un empleado presenta una solicitud de vacaciones +1. El responsable directo del empleado decide si aprueba o no la solicitud. Para ello, tomaremos un enfoque iterativo alternando contenido teórico y ejercicios prácticos. Cada ejercicio proporciona una versión ejecutable cada vez más completa del proceso. Cada ejercicio se divide en 3 secciones: 1. **Objetivo**: presenta los conceptos claves a los que se dirige el ejercicio -1. **Resumen de instrucciones**: contiene los pasos principales para llevar a cabo el ejercicio -1. **Instrucciones paso a paso**: proporciona una descripción detallada paso a paso de los pasos para realizar el ejercicio +1. **Instrucciones resumidas**: contiene los pasos principales para llevar a cabo el ejercicio +1. **Instrucciones paso a paso**: proporciona una descripción detallada paso a paso de los pasos a seguir para realizar el ejercicio [Empezar el primer ejercicio](01-bpmn-design.md) diff --git a/docs/es/01-bpmn-design.md b/docs/es/01-bpmn-design.md index 820efce..eef61c6 100644 --- a/docs/es/01-bpmn-design.md +++ b/docs/es/01-bpmn-design.md @@ -1,5 +1,5 @@ --- -title: Ejercicio 1 - Modelado de procesos BPMN +title: Ejercicio 1 - Modelización de un proceso simple --- ## Objetivo @@ -7,15 +7,15 @@ title: Ejercicio 1 - Modelado de procesos BPMN El objetivo de este ejercicio es crear una primera versión "básica" del diagrama del proceso de solicitud de vacaciones. En esta etapa, el proceso es ejecutable pero aún no presenta interés funcional porque no tiene formularios ni datos. -Lo completaremos en los siguientes ejercicios. +Los completaremos en los siguientes ejercicios. -Nota: la validación de los diagramas en Bonita Studio debe activarse manualmente. Si corrigas un error o un mensaje de advertencia, debes ir a la pestaña **Estado de validación** y hacer clic en el botón **Refrezcar** o ir al menú **Archivo** y hacer clic en el botón **Validar**. +> Nota: la validación de los diagramas en Bonita Studio debe activarse manualmente. Si corriges un error o un mensaje de advertencia, debes ir a la pestaña **Estado de validación** y hacer clic en el botón **Refrescar** o ir al menú **Archivo**. -## Resumen de las instrucciones +## Instrucciones resumidas -Para hacer el ejercicio, crea un diagrama *DiagramaSolicitudVacaciones* que contenga un proceso *SolicitudVacaciones* en la versión *1.0.0*. +1. Crea un diagrama *DiagramaSolicitudVacaciones* que contenga un proceso *SolicitudVacaciones* en la versión *1.0.0*. -El grupo de procesos debe incluir los siguientes elementos BPMN: +1. Agrega a la definición de dicho proceso los siguientes elementos BPMN: * Un evento de inicio *Ingresar solicitud* * Una tarea humana *Validar solicitud* * Una puerta exclusiva *¿Solicitud aprobada?* @@ -29,63 +29,96 @@ El grupo de procesos debe incluir los siguientes elementos BPMN: ## Instrucciones paso a paso 1. Inicia Bonita Studio -1. En la página de inicio de Studio, haz clic en **Nuevo proyecto** en el menú Diseño. -1. Ingrese el nombre del proyecto _"SolicitudVacaciones"_. -1. Crea un nuevo diagrama de procesos +1. En la página de inicio de Studio o desde el menú **Archivo**, haz clic en **Nuevo proyecto**. +1. Ingresa el nombre del proyecto _"SolicitudVacaciones"_. +1. Deja los valores de los otros campos vacíos o los que vienen por defecto +1. Haz clic en **Crear** + +> Nota: Tienes la posbilidad de elegir de agregar *Extensiones* desde la creación del rpoyecto. Esto puede ser útil en un proyecto real pero en nuestro ejemplo, las extensiones las abordaremos más tarde. + +### Crea un diagrama *DiagramaSolicitudVacaciones* que contenga un proceso *SolicitudVacaciones* en la versión *1.0.0* + +1. Crea un nuevo diagrama de procesos. + - Ya sea desde la vista general del proyecto, sección _Diagrama de procesos_, haciendo clic en **Crear**, y después en **Crear un nuevo diagrama de procesos** + + ![Nouveau diagramme](images/ex01/ex1_11.png) + - O ya sea desde la barra de herramientas, haciendo clic en **Nuevo** y seleccionando **Diagrama de proceso**: ![nuevo diagrama de proceso](images/ex01/ex1_10.png) 1. Especifica el nombre del diagrama y el del proceso: - - Haz clic en el menú **Archivo / Renombrar Diagrama...** en la parte superior del Studio - - Ingresa *DiagramaSolicitudVacaciones* para el nombre del diagrama y *SolicitudVacaciones* para el del pool y *1.0.0* para la versión del diagrama y del pool + - En el **Explorador de proyectos**, selecciona el diagrama, da clic derecho con tu ratón y selecciona **Renombrar...** + - Ingresa *DiagramaSolicitudVacaciones* para el nombre del diagrama y *SolicitudVacaciones* para el de la *Pool* y *1.0.0* para la versión del diagrama y de la *Pool* ![ventana emergente para cambiar el nombre y la versión del diagrama y del pool](images/ex01/ex1_01.png) -1. Cambia el nombre del evento de inicio a *Ingresar solicitud*: + +### Agrega a la definición de dicho proceso los elementos BPMN + +1. Cambia el nombre del evento de inicio : - Selecciona el evento de inicio presente en el diagrama - - Navega a la pestaña **General / General** y luego ingrese el nuevo nombre -1. Cambia el nombre de la tarea humana a *Validar solicitud* + - Navega a la pestaña **General / General** e ingresa el nuevo nombre: *Ingresar solicitud* + +1. Siguiendo los mismos pasos, cambia el nombre de la tarea humana a *Validar solicitud* + 1. Agrega una puerta exclusiva *¿Solicitud aprobada?* Después de la tarea *Validar solicitud*: - Selecciona la tarea *Validar solicitud*, arrastra y suelta desde el icono contextual de la puerta lógica - ![creación de puerta lógica desde una tarea](images/ex01/ex1_02.png) + + ![creación de puerta lógica desde una tarea](images/ex01/ex1_02.png) - Una vez que se ha creado la puerta, usa el ícono contextual **caja de herramientas** (1) para cambiar su tipo a **Exclusivo** (2) - ![Modificación del tipo de puerta lógica](images/ex01/ex1_03.png) - - Cambia el nombre de la puerta a *¿Solicitud aprobada?* + + ![Modificación del tipo de puerta lógica](images/ex01/ex1_03.png) + - Cambia el nombre de la puerta a *¿Solicitud aprobada?* + 1. Crea una tarea automática *Notificar aprobación* desde la puerta lógica: - Selecciona la puerta lógica, arrastra y suelta desde el icono de tarea contextual (A) - ![creación de una tarea desde una puerta lógica](images/ex01/ex1_04.png) - - Una vez que se ha creado la tarea automática, cambiala el nombre + ![creación de una tarea desde una puerta lógica](images/ex01/ex1_04.png) + - Una vez creada la tarea automática, cámbiale el nombre a *Notificar aprobación* + 1. Crea una tarea automática *Notificar rechazo* desde la puerta lógica + 1. Agrega un evento de terminación *Fin - Solicitud aprobada* después de la tarea automática *Notificar aprobación*: - Selecciona la tarea automática *Notificar aprobación* - Arrastra y suelta desde el ícono de evento contextual (A) y selecciona el evento final (B) - ![creación de un evento final](images/ex01/ex1_05.png) - - Una vez que se ha creado el evento, cámbiale el nombre + ![creación de un evento final](images/ex01/ex1_05.png) + - Una vez el evento creado, cámbiale el nombre + 1. Agrega un evento de finalización *Fin - Solicitud rechazada* después de la tarea automática *Notificar rechazo* + 1. Nombra las 2 transiciones entre la puerta lógica y los pasos automáticos: - - Selecciona la transición - - Navega a la pestaña **General / General** luego ingresa el nombre - - La transición que conduce al paso *Notificar aprobación* se llamará *Sí* y la otra *No* + - Selecciona la transición a la etapa *Notificar aprobación* + - Navega a la pestaña **General / General** e ingresa *Sí* como nombre + - Repite la operación para la otra transición que se llamará *No*, para responder a la pregunta de la puerta lógica "¿Solicitud aprobada?" + - La validación es automática. Da clic en cualquier otro lado y el nuevo valor será guardado. + 1. Configura la condición en la transición *Sí* para que el flujo siga esta rama: - Selecciona la transición - Ingresa el valor `true` en el campo **Condición** (pestaña **General / General**). Si no ves el campo **Condición**, probablemente sea porque agregaste una puerta lógica paralela en lugar de una exclusiva. - ![definición de condición en una transición](images/ex01/ex1_06.png) + ![definición de condición en una transición](images/ex01/ex1_06.png) + 1. Configura la transición *No* como el flujo por defecto: - Selecciona la transición *No* - Marca la casilla **Flujo por defecto** + 1. Actualiza la validación del diagrama: - Navega en la pestaña **Estado de validación** - Haz clic en el botón **Actualizar** - - Ignora las 3 advertencias sobre los formularios + - Por el momento, ignora las 3 advertencias sobre los formularios + +1. Si lo deseas, puedes reajustar la posición de los elementos y la froma de las transiciones para mejorar la estética y legibilidad del diagrama + 1. Verifica que el diagrama se vea así: ![resultado final del diagrama](images/ex01/ex1_07.png) + 1. Guarda el proceso: - - Haz clic en el botón **Guardar** en la barra de menú superior de Bonita Studio + - Haz clic en el botón **Guardar** en la barra de herramientas de Bonita Studio + 1. Ejecuta el proceso para probarlo: - - Selecciona el pool de procesos (la forma rectangular que contiene las tareas y eventos) - - Haz clic en el botón ![Botón de inicio](images/ex01/ex1_08.png) en la barra de menú superior del Studio (si el botón está desactivado, asegúrate de que el grupo esté seleccionado) - - Tu navegador debe abrir y presentar un formulario de creación de instancias generado automáticamente - - Envía el formulario - - Deberías ser redirigido a la bandeja de entrada de tareas del Portal Bonita + - Selecciona la *Pool* del proceso (el área rectangular que contiene las tareas y eventos) + - Haz clic en el botón **Ejecutar** ![Botón de inicio](images/ex01/ex1_08.png) en la barra de herramientas del Studio (si el botón está desactivado, asegúrate de que el diagrama esté seleccionado) + - Tu navegador debe abrir y presentar un formulario de creación de instancias (generado automáticamente para pruebas) + - Envía el formulario. Esta acción creará una nueva instancia del proceso. + - Debes ser redirigido a la bandeja de entrada de tareas de la aplicación **Bonita User Application** - Selecciona la tarea *Validar solicitud* - - Haz clic en **Tomar** en la parte superior derecha de la pantalla ![asignar una tarea](images/ex01/ex1_09.png) + - Haz clic en **Tomar** en la parte superior derecha de la pantalla + ![asignar una tarea](images/ex01/ex1_09.png) - Envía el formulario para el paso *Validar solicitud* haciendo clic en el botón **Ejecutar** para completar el caso [Ejercicio siguiente: creación de datos y definición de contratos](02-data-contract.md) diff --git a/docs/es/02-data-contract.md b/docs/es/02-data-contract.md deleted file mode 100644 index 916e5cc..0000000 --- a/docs/es/02-data-contract.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Ejercicio 2 - Agregar datos y especificar contratos ---- - -## Objetivo - -El objetivo de este ejercicio es seguir con la implantación del proceso de solicitud de vacaciones mediante : - -1. La configuración de un modelo de datos de negocio comúnmente llamado BDM (Business Data Management) -1. La especificación de contratos para crear instancias del proceso y ejecutar tareas humanas - -Una vez completado, el proceso será ejecutable con formularios generados automáticamente que permiten la entrada de datos. - -> ⚠ Es importante respetar estrictamente el caso y la sintaxis de los nombres técnicos proporcionados en las instrucciones. - -## Resumen de las instrucciones - -Duplica el diagrama de proceso del ejercicio anterior para crear una versión 2.0.0. - -Crea un objeto BDM *SolicitudVacaciones* (este es un nombre técnico, por lo que debes omitir espacios, acentos y otros caracteres especiales) con los siguientes atributos (no usa la opción **Múltiple**): - -Nombre | Tipo | Múltiple | Requerido ---- | ---- | -------- | ----------- -*solicitanteId* | `Long` | ◻ | ☑ -*fechaInicio* | `Date only` | ◻ | ☑ -*numeroDias* | `Integer` | ◻ | ☑ -*estaAprobado* | `Boolean` | ◻ | ◻ - -Declara una variable empresarial *solicitud* de tipo *solicitudVacaciones* en el pool. - -Usando el asistente de Bonita Studio (es decir, **Añadir a partir de datos ...**), genera un contrato de creación de instancias, así como el script de inicialización para la variable de negocio utilizando la variable de negocio *solicitud* y por lo tanto incluya lo siguiente: - - fechaInicio - numeroDias - -Inicializa la BDM *solicitud* utilizando la generación automática del contrato. - -Agrega un contrato en el paso *Validar solicitud* utilizando el asistente con el siguiente elemento: - - estaAprobado - -## Instrucciones paso a paso - -1. Duplica el diagrama de proceso existente para crear una versión *2.0.0*: - - En el explorador del proyecto, haz clic derecha en el diagrama y **Duplicar** - - Actualiza los números de versión del proceso Y diagrama (pool) -1. Crea la BDM *SolicitudVacaciones*: - - Haz clic en el icono **Vista global** ![overview](images/ex02/ex2_13.png). Haz clic en **Crear** en la sección *Modelo de datos de la empresa*. - El editor del modelo de datos de negocio aparece. - - Cambia el nombre del objeto initializado por defecto **BusinessObject** en la lista de objetos de negocio a *SolicitudVacaciones* (A) (este es un nombre técnico, por lo que debes omitir espacios, acentos y otros caracteres especiales) - - Con el objeto *SolicitudVacaciones* seleccionado, agrega los siguientes atributos (B): - - Nombre | Tipo | Múltiple | Requerido - --- | ---- | -------- | ----------- - *solicitanteId* | `Long` | ◻ | ☑ - *fechaInicio* | `Date only` | ◻ | ☑ - *numeroDias* | `Integer` | ◻ | ☑ - *estaAprobado* | `Boolean` | ◻ | ◻ - - ![definición_del_modelo_de_datos_de_negocio](images/ex02/ex2_01.png) - - - Guardalo. El siguiente mensaje se muestra para indicar que la BDM debe ser desplegada - - ![mensaje de información despliegue BDM](images/ex02/ex2_09.png) - - - Haz clic en el botón ![icono despliegue](images/ex02/ex2_11.png) en el editor de BDM para desplegar el BDM. - - Se muestra el siguiente mensaje para confirmar el despliegue de la BDM - - ![Mensaje de información de despliegue de BDM](images/ex02/ex2_10.png) - - - Marca la opción **No volver a mostrar este mensaje** - - Haz clic en **Ok** - -1. Declara una variable de negocio de tipo *solicitudVacaciones* en el proceso: - - Selecciona el pool de procesos - - Navega en la pestaña **Datos / Variables del proceso** - - Haz clic en **Agregar ...** en la sección **Variables de negocio** - - Asigna un nombre a la variable *solicitud* y seleccione el tipo de objeto de negocio *com.company.model.SolicitudVacaciones* - - Haz clic en **Finalizar** - - ![déclaración de una variable de negocio](images/ex02/ex2_02.png) - -1. Configura el contrato de instanciación: - - Selecciona el pool de procesos - - Navega en la pestaña **Ejecución / Contrato / Entradas** - - Haz clic en el botón **Añadir desde datos ...** - - Selecciona la variable de negocio *solicitud* - - Mantenga el nombre predeterminado *solicitudInput* - - Haz clic en **Siguiente** - - Desmarca los atributos *solicitanteId* y *estaAprobado* - - ![asistente de definición de contrato](images/ex02/ex2_03.png) - - - Haz clic en **Finalizar** (no en **Finalizar y Añadir**) e ignora los mensajes de advertencia sobre la inicialización parcial de la variable de negocio - ![contrato definido para iniciar el proceso](images/ex02/ex2_04.png) - -1. Modifica la inicialización de la variable de negocio *solicitud* para poder recuperar el identificador del solicitante de la nueva petición: - - Selecciona el pool de procesos y navega a la pestaña **Datos / Variables de proceso** - - Selecciona la variable *solicitud* - - Haz clic en **Editar ...** - - Haz clic en el icono de **lápiz** asociado con el campo **Valor predeterminado** para abrir el editor de expresiones de script. - Ya se inicializó el script. - Ahora queremos recuperar la Id del solicitante arrancando la instancia de proceso actual. - - - En el menú de la izquierda, selecciona **Plantillas de código/Usuarios de Bonita** (A) y arrastra la plantilla *processInitiatorUser* - - El script para recuperar la instancia del proceso y el iniciador se crea automáticamente. - - Ingresa `solicitudVacacionesVar.solicitanteId = processInitiator.id` para recuperar el Id del iniciador de la instancia en el atributo *solicitanteId* (B) - - ![actualización de variable](images/ex02/ex2_12.png) - - El script inicializará la variable de negocio utilizando los datos del contrato y el identificador del solicitante. - - > Las etiquetas `try` y `catch se inicializan para la validación del script. Es posible eliminarlos. - - - Haz clic en el botón **Aceptar** para cerrar el editor de expresiones - - Haz clic otra vez en el botón **Aceptar** para validar la modificación de la variable de negocio. - -1. Configura el contrato para el paso *Validar solicitud*: - - Selecciona el paso *Validar solicitud* - - Navega en la pestaña **Ejecución / Contrato / Entradas** - - Haz clic en el botón **Añadir desde datos ...** - - Selecciona la variable de negocio *solicitud*, mantenga el nombre de la entrada predeterminada *solicitudInput* - - Haz clic en **Siguiente** - - Selecciona solo el atributo *estaAprobado* - - Haz clic en **Finalizar** (y no en **Finalizar y Añadir**) e ignora los mensajes de advertencia sobre la inicialización parcial de la variable de negocio - - -1. Ten en cuenta que se ha generado automáticamente una operación (**Ejecución / Operaciones**) en la tarea *Validar solicitud* para actualizar la solicitud - ![operación generada automáticamente](images/ex02/ex2_06.png) - -1. Configura la condición en la transición *Sí* desde el atributo *estaAprobado* del BDM *solicitud*: - - Selecciona la transición *Sí* - - Navega en la pestaña **General / General** - - Haz clic en el ícono de lápiz junto al campo **Condición** para abrir el editor de expresiones - - En el editor de expresiones, selecciona **Variables de negocio/estaAprobado** y arrastrarlo a la pizarra para sustituir a `true`. - - ![uso de la variable de negocio para definir la condición de una transición](images/ex02/ex2_07.png) - -1. Guarda el proceso: - - Haz clic en el botón **Guardar** en la barra de menú superior de Bonita Studio -1. Ejecuta el proceso: - - Inicia el proceso y completa los formularios generados automáticamente - -> Información: -> - para el campo *fechaInicio*, el formato de fecha esperado es AAAA-MM-DD -> - para el campo *estaAprobado*, se espera un valor booleano: `true` o` false` - - ![formulario autogenerado](images/ex02/ex2_08.png) - -[Siguiente ejercicio: crear formularios](03-forms.md) diff --git a/docs/es/07-timer.md b/docs/es/02-timers.md similarity index 67% rename from docs/es/07-timer.md rename to docs/es/02-timers.md index 42c07cd..f01f5af 100644 --- a/docs/es/07-timer.md +++ b/docs/es/02-timers.md @@ -1,48 +1,54 @@ --- -title: Ejercicio 7 - Agregar un evento de tiempo al proceso +title: Ejercicio 2 - Agregar un evento de tiempo a la tarea de validación --- ## Objetivo -El objetivo de este ejercicio es enriquecer la primera versión del diagrama del proceso de solicitud de vacaciones con un **evento de tiempo** en la tarea de validación. +El objetivo de este ejercicio es enriquecer la primera versión del diagrama del proceso de solicitud de vacaciones con un **evento de tiempo no interruptor** en la tarea de validación. Este evento de tiempo enviará automáticamente un recordatorio al validador si no realiza la tarea a tiempo, sin interrumpir el proceso. -## Resumen de las instrucciones +> ⚠ Es importante respetar estrictamente la sintaxis de los nombres técnicos (incluyendo mayúsculas, minúsculas y signos) proporcionados en las instrucciones. -Duplica el diagrama de proceso del ejercicio anterior para crear una versión 7.0.0. +## Instrucciones resumidas -Agrega un evento límite de tiempo no interruptor en la tarea *Validar solicitud*. -La duración del temporizador es de **5 segundos**. +1. Duplica el diagrama de proceso del ejercicio anterior para crear una versión 1.1.0. +1. Agrega un evento límite de tiempo (timer) no interruptor en la tarea *Validar solicitud*. + La duración del temporizador es de **5 segundos** (para efectos prácticos del ejercicio). +1. Agrega una tarea de servicio llamada *Enviar recordatorio de validación* y un evento de fin llamado *Fin - Recordatorio enviado*. -Agrega una tarea de servicio llamada *Enviar recordatorio de validación* y un evento de fin llamado *Fin - Recordatorio enviado*. - -Añade un conector de correo electrónico en la tarea de servicio *Enviar recordatorio de validación*. Enviará un correo electrónico de recordatorio al validador. +## Instrucciones paso a paso +### Duplica el diagrama de proceso del ejercicio anterior para crear una versión 1.1.0. +1. En el explorador del proyecto, haz clic derecho en el diagrama y selecciona **Duplicar...** +1. Actualiza los números de versión de ambos: del proceso y de la *pool* (el diagrama) a *1.1.0* +1. Da clic en **OK** -## Instrucciones paso a paso +### Agrega un evento límite de tiempo no interruptor en la tarea *Validar solicitud* +1. Haz clic en la tarea *Validar solicitud*. -1. Agrega un evento límite de tiempo no interruptor a la tarea *Validar solicitud*: - - Haz clic en la tarea *Validar solicitud*. - - En la caja de herramientas, agrega un evento límite +1. Abajo, en medio de dicha tarea, da clic en el ícono **Agregar un evento límite** ![Caja de herramientas de eventos límite](images/ex07/ex7_01.png) - - Selecciona el **evento de tiempo no interruptor** en la lista. Se agregara automáticamente a la tarea. + +1. Selecciona el **evento de tiempo no interruptor** en la lista. Se agregara automáticamente a la tarea. ![evento de temporizador que no interrumpe](images/ex07/ex7_02.png) 1. Crea una tarea de servicio llamada *Enviar recordatorio de validación* después del evento de límite arrastrando y soltando la tarea del evento al carril. + 1. Agrega un evento de fin llamado *Fin - recordatorio enviado* junto a la tarea de servicio recién añadida. 1. Configura el evento de tiempo: - Selecciona el evento de tiempo de límite - - Vete a la pestaña **General / General**. + - Ve a la pestaña **General / General**. - Agrega el nombre del evento de tiempo *Enviar recordatorio después de 5s*. - - Establezca la condición del evento haciendo clic en **Editar**. + - Declara la condición del evento haciendo clic en **Editar**. - En el editor, selecciona **Duración** para establecer la condición del temporizador y pon *5* en el campo **Segundos** (A) - Haz clic en **Generar expresión de duración** (B) - Haz clic en **Finalizar** ![condición del temporizador](images/ex07/ex7_03.png) - La condición del temporizador se genera automáticamente y debe aparecer en la pestaña **General** + - La condición del temporizador se genera automáticamente y debe aparecer en la pestaña **General** + + +El conector para el envio de un correo electrónico cuando el temporizador expire será configurado más adelante. -[Siguiente ejercicio: agregar restricciones a un contrato](08-data-contract-constraints.md) +[Siguiente ejercicio: Agregación de datos y especificación de contratos](03-data-contract.md) diff --git a/docs/es/03-data-contract.md b/docs/es/03-data-contract.md new file mode 100644 index 0000000..f3a5ff0 --- /dev/null +++ b/docs/es/03-data-contract.md @@ -0,0 +1,200 @@ +--- +title: Ejercicio 3 - Agregación de datos y especificación de contratos +--- + +## Objetivo + +El objetivo de este ejercicio es continuar la implementación del proceso de solicitud de vacaciones mediante: + +- La creación de un modelo de datos de negocio comúnmente llamado BDM (Business Data Model) +- La especificación de variables de negocio que unan al modelo de datos de negocio y al proceso +- La especificación de contratos entre el proceso y el formulario para crear instancias del proceso y para ejecutar tareas humanas + +Una vez completado, el proceso será ejecutable y gracias a los formularios generados automáticamente se podrán capturar datos. + +> ⚠ Es importante respetar estrictamente la sintaxis de los nombres técnicos (incluyendo mayúsculas, minúsculas y signos) proporcionados en las instrucciones. + +## Instrucciones resumidas + +1. Duplica el diagrama de proceso del ejercicio anterior para crear una versión 2.0.0. +1. Crea un objeto de negocio *SolicitudVacaciones* (al ser un nombre técnico, debes omitir espacios, acentos y otros caracteres especiales) con los siguientes atributos (sin seleccionar la opción **Múltiple**): + + Nombre | Tipo | Múltiple | Requerido + --- | ---- | -------- | ----------- + *solicitanteId* | `Long` | ◻ | ☑ + *fechaInicio* | `Date only` | ◻ | ☑ + *numeroDias* | `Integer` | ◻ | ☑ + *estaAprobado* | `Boolean` | ◻ | ◻ + +1. Declara una variable de negocio *solicitud* de tipo *SolicitudVacaciones* en la *pool*. + +1. Genera un contrato de instanciación de proceso que incluya los siguientes elementos: + + - fechaInicio + - numeroDias + + Para esto, utiliza el asistente de Bonita Studio seleccionando **Añadir desde datos ...** + +1. Modifica la inicialización de la variable de negocio *solicitud* para recuperar automáticamente *solicitanteId* + +1. Agrega un contrato en la etapa *Validar solicitud* utilizando el asistente con el siguiente elemento: + + - estaAprobado +1. Configura como condición de la transición *Sí* el atributo *estaAprobado* de la variable de negocio *solicitud* + +## Instrucciones paso a paso + +### Duplica el diagrama de proceso existente para crear una versión *2.0.0* + +1. Vuelve al Studio +1. Duplica el diagrama de proceso existente para crear una versión *2.0.0*: + - En el explorador del proyecto, haz clic derecho en el diagrama y selecciona **Duplicar...** + - Actualiza los números de versión de ambos: del proceso y de la *pool* (el diagrama) a *2.0.0* + - Da clic en **OK** + +### Crea un objeto de negocio *SolicitudVacaciones*: +1. Haz clic en el ícono **Vista global** ![overview](images/ex02/ex2_13.png). Haz clic en **+ Crear** en la sección *Modelo de datos de negocio*. + El editor del modelo de datos de negocio aparece. + +1. Cambia el nombre del objeto creado por defecto **BusinessObject** a *SolicitudVacaciones* (A). + Al ser un nombre técnico, se deben omitir espacios, acentos y otros caracteres especiales. Como es un objeto, su nombre debe empezar con mayúscula. + +1. Con el objeto *SolicitudVacaciones* seleccionado, en la sección *Atributos*, selecciona el atributo inicializado por defecto **atributo** y cambia el nombre a *solicitanteId*. + Como es un atributo, su nombre debe empezar con minúscula. + +1. Como *Tipo* selecciona **LONG**, deja libre la casilla *Múltiple* y marca la casilla *Requerido* + + Nombre | Tipo | Múltiple | Requerido + --- | ---- | -------- | ----------- + *solicitanteId* | `LONG` | ◻ | ☑ + +1. Haz clic en **Añadir** para agregar igualmente los siguientes atributos (B): + + Nombre | Tipo | Múltiple | Requerido + --- | ---- | -------- | ----------- + *fechaInicio* | `DATE ONLY` | ◻ | ☑ + *numeroDias* | `INTEGER` | ◻ | ☑ + *estaAprobado* | `BOOLEAN` | ◻ | ◻ + + ![definición_del_modelo_de_datos_de_negocio](images/ex02/ex2_01.png) + +1. Guarda los cambios. El siguiente mensaje se muestra para indicar que el modelo de datos de negocio debe ser desplegado: + + ![mensaje de información despliegue BDM](images/ex02/ex2_09.png) + +1. Haz clic en el botón ![icono despliegue](images/ex02/ex2_11.png) en el editor de BDM. + - El siguiente mensaje aparece para confirmar el despliegue del modelo de datos de negocio: + + ![Mensaje de información de despliegue de BDM](images/ex02/ex2_10.png) + +1. Marca la opción **No volver a mostrar este mensaje** + +1. Haz clic en **Ok** + + > No olvides desplegar tu modelo de datos de negocio después de cada modifciación. Esto hace que los objetos y atributos estén disponibles al generar los contratos y los scripts Groovy, y también permite al motor de ejecución BPM de tomar en cuenta los cambios al momento de probar el proceso. + +### Declara una variable de negocio *solicitud* de tipo *SolicitudVacaciones* en la *pool* +1. Vuelve al diagrama *DiagramaSolicitudVacaciones (2.0.0)* + +1. En el diagrama, selecciona la *pool* del proceso + +1. Navega a la pestaña **Datos / Variables de proceso** + +1. Haz clic en **Agregar ...** en la sección **Variables de negocio** + +1. Asigna el nombre *solicitud* a la variable y selecciona el tipo de objeto de negocio **com.company.model.SolicitudVacaciones** + +1. Haz clic en **Finalizar** + + ![déclaración de una variable de negocio](images/ex02/ex2_02.png) + +### Genera un contrato de instanciación de proceso +1. En el diagrama, selecciona la *pool* del proceso + +1. Navega a la pestaña **Ejecución / Contrato / Entradas** + +1. Haz clic en el botón **Añadir desde datos ...** + +1. Las opciones **Variable de negocio** e **Instanciar** ya aparecen seleccionadas. + +1. Selecciona la variable de negocio *solicitud* + +1. Deja el nombre de entrada predeterminado *solicitudInput* + +1. Haz clic en **Siguiente** + +1. Desmarca los atributos *solicitanteId* y *estaAprobado*. El primero será recuperado automáticamente. El segundo no es necesario para inicializarlo. + + ![asistente de definición de contrato](images/ex02/ex2_03.png) + +1. Haz clic en **Finalizar** (no en **Finalizar y Añadir**). Ignora por el momento los mensajes de advertencia sobre la inicialización parcial de la variable de negocio. + ![contrato definido para iniciar el proceso](images/ex02/ex2_04.png) + + > Al crear un contrato se genera un script de inicalización de la variable en cuestión, que será ejecutado al momento de validar el contrato después de la captura de los datos via el formulario. + +### Modifica la inicialización de la variable de negocio *solicitud* para recuperar automáticamente *solicitanteId* + *solicitanteId* es el username del usuario que ha iniciado la solicitud + +1. Selecciona la *pool* del proceso y navega a la pestaña **Datos / Variables de proceso** + +1. Selecciona la variable *solicitud* + +1. Haz clic en **Editar ...** + +1. Haz clic en el icono de **lápiz** asociado al campo **Valor predeterminado**. + +1. El editor de expresiones se abre y muestra el script que ha sido inicializado cuando se ha creado el contrato con la opción "Instanciar". + +1. En el menú de la izquierda, selecciona **Plantillas de código/Usuarios de Bonita** (A). + - Selecciona la plantilla *processInitiatorUser* y arrástrala para colocarla antes de la última línea del script (que commienza por `return`). El script permite recuperar la instancia del proceso y el iniciador se crea automáticamente. + - Antes del `}catch`, ingresa `solicitudVacacionesVar.solicitanteId = processInitiator.id` para recuperar el identificador del iniciador de la instancia en el atributo *solicitanteId* (B) + + ![actualización de variable](images/ex02/ex2_12.png) + + El script inicializará la variable de negocio utilizando los datos del contrato y el identificador del solicitante. + + > Las etiquetas `try` y `catch` se inicializan para la validación del script. Es posible eliminarlos. + + - Haz clic en el botón **Aceptar** para cerrar el editor de expresiones. + - Haz clic otra vez en el botón **Aceptar** para validar la modificación de la variable de negocio. + +### Agrega un contrato a la etapa *Validar solicitud*: +1. En la *pool*, selecciona la tarea *Validar solicitud* + +1. En la zona de propiedades, navega a la pestaña **Ejecución / Contrato / Entradas** + +1. Haz clic en el botón **Añadir desde datos ...** + +1. Las opciones *Variable de negocio* y *Editar* aparecen seleccionadas. + - La variable de negocio *solicitud* aparece seleccionada. + - Deja el valor predeterminado *solicitudInput* como nombre de la entrada + - Haz clic en **Siguiente** + - Deselecciona todos los atributos excepto *estaAprobado* + - Haz clic en **Finalizar** (y no en **Finalizar y Añadir**). Ignora por el momento los mensajes de advertencia sobre la inicialización parcial de la variable de negocio + + Nota: Ten en cuenta que se ha generado automáticamente una operación (**Ejecución / Operaciones**) en la tarea *Validar solicitud* para actualizar la solicitud + ![operación generada automáticamente](images/ex02/ex2_06.png) + +### Configura como condición de la transición *Sí* el atributo *estaAprobado* de la variable de negocio *solicitud*: +1. Selecciona la transición *Sí* +1. En la zona de propiedades, navega a la pestaña **General / General** + - Haz clic en el ícono de lápiz asociado al campo **Condición** para abrir el editor de expresiones + - En el editor de expresiones, selecciona **Variables de negocio / solicitud**. + - Selecciona **estaAprobado** y arrástrarlo a la pizarra para sustituir el `true`. + - Haz clic en **Aceptar** + + ![uso de la variable de negocio para definir la condición de una transición](images/ex02/ex2_07.png) + +1. Guarda el proceso: + - Haz clic en el botón **Guardar** en la barra de menú superior de Bonita Studio +1. Ejecuta el proceso: + - Haz clic en el botón **Ejecutar** en la barra de menú superior de Bonita Studio + - Completa los formularios generados automáticamente. Los campos mostrados sont generados a partir de los contratos creados. + +> Información: +> - para el campo *fechaInicio*, el formato de fecha esperado es AAAA-MM-DD +> - para el campo *estaAprobado*, se espera un valor booleano: `true` o` false` + + ![formulario autogenerado](images/ex02/ex2_08.png) + +[Siguiente ejercicio: crear formularios](03-forms.md) diff --git a/docs/es/03-forms.md b/docs/es/03-forms.md deleted file mode 100644 index f7cba17..0000000 --- a/docs/es/03-forms.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Ejercicio 3 - Crear formularios ---- - -## Objetivo - -El objetivo de este ejercicio es proporcionar formularios simples, fáciles de usar y adecuados para la ejecución del proceso. - -## Resumen de las instrucciones - -Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *3.0.0*. - -Crea los siguientes formularios: -- Un formulario de creación de instancias de proceso a nivel de pool que permite inicializar los atributos *fechaInicio* y *numeroDias* de la variable empresarial *solicitud* -- Se aprueba un formulario de pasos que permite mostrar la información del solicitante y los datos *fechaInicio* y *numeroDias* en modo de solo lectura y luego alimentar los datos *estaAprobado* - -## Instrucciones paso a paso -1. Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *3.0.0* -1. Crea un formulario de instanciación: - - Selecciona el pool de procesos - - Navegua en la pestaña **Formulario de ejecución / instanciación** - - Haz clic en el icono **Lápiz** en el campo **Formulario de destino** - ![creación de un formulario](images/ex03/ex3_01.png) - - Esto va a abrir el UI Designer en tu navegador web con un nuevo formulario generado automáticamente a partir de la definición del contrato de instanciación. - - ![nuevo formulario](images/ex03/ex3_02.png) -1. Cambia el nombre del formulario: - - Usa el campo de texto en la parte superior de la pantalla para cambiar el nombre del formulario de *newForm* a *ingresarSolicitudVacaciones* (este es un nombre técnico, por lo que debes omitir espacios, acentos y otros caracteres especiales) - - Haz clic en el botón **Guardar** - -1. Cambia el título del formulario: - - Selecciona el widget *Solicitud* en la parte superior del formulario. - - En la sección a la derecha de la pantalla, edita las siguientes propiedades: - - Propiedad | Valor - --------- | ------ - Texto | *Ingrese una solicitud de vacaciones* - Nivel de título | Nivel 2 - Alineación | centrado - -1. Cambia el widget *Fecha Inicio* : - - Selecciona el widget *Fecha de inicio* y edita las siguientes propiedades: - - Propiedad | Valor - --------- | ------ - Etiqueta | Fecha de inicio - Formato de fecha técnica | dd/MM/yyyy - Placeholder de la fecha | Ingrese una fecha (dd/mm/aaaa) - Etiqueta del botón Hoy: **Mostrar botón Hoy** | No - -1. Cambia el widget *Numero Dias* : - - Selecciona el widget *Numero Dias* y edite las siguientes propiedades: - - Propiedad | Valor - --------- | ------ - Etiqueta | Número de días - Valor mínimo (no debe confundirse con la propiedad **Longitud mínima**) | 1 - -1. Cambia el widget *Submit* : - - Selecciona el widget *Submit* - - Cambia su etiqueta por *Enviar* - -1. Comprueba el formulario: - - Comprueba que el formulario se ve así en el editor: - ![formulario en el UI Designer](images/ex03/ex3_05.png) - - - Haz clic en el botón **Guardar** en la parte superior de la pantalla - - Haz clic en el botón **Vista previa** en la parte superior de la pantalla - - Comprueba que la vista previa se ve así: - ![vista previa de un formulario](images/ex03/ex3_06.png) - - Ten en cuenta los siguientes puntos en la vista previa: - - El widget con el error no es visible - - Es posible probar la vista previa en diferentes dispositivos, desde teléfonos móviles hasta pantallas grandes. - - El botón *Enviar* está deshabilitado de forma predeterminada (esto se debe a la validación proporcionada por el contenedor del formulario) - - El botón *Enviar* se activa cuando el contenido del formulario es válido - - > **Nota:** no es posible enviar el formulario desde la vista previa, incluso cuando este último es válido. - -1. Cierra la ventana de vista previa. - -1. Crea un formulario para el paso *Validar solicitud*: - - En Bonita Studio, selecciona el paso *Validar solicitud* - - Navega en la pestaña **Ejecución / Formulario** - - Haz clic en el icono **Lápiz** en el campo **Formulario de destino** para abrir un nuevo formulario en el UI Designer - - Responde **Sí** a la pregunta sobre cómo agregar widgets de solo lectura - - > **Nota:** el formulario se generó automáticamente a partir de la BDM y del contrato, y muestra datos de sólo lectura de la BDM que no son esperados por el contrato en esta etapa. - - -1. Cambia el nombre del formulario: - - Desde el UI Designer, cambia el nombre del formulario a *validarSolicitudVacaciones* y guárdalo - -1. Recupera información sobre el solicitante - - Haz clic en el botón **Crear una nueva variable** para definir una variable con las siguientes propiedades: - - ![variable solicitante](images/ex03/ex3_04.png) - > **Nota:** puedes utilizar los ejemplos que te permiten recuperar automáticamente los patrones de llamadas a la API. Aquí recuperaremos `identity API` porque estamos buscando información relacionada con un usuario. - -1. Cambia el título del formulario - - Selecciona el widget **Título** (Title) ubicado en la parte superior del formulario - - Configura el widget de la siguiente manera: - - Propiedad | Valor - --------- | ------ - Texto | Validar una solicitud de vacaciones - Nivel de título | Nivel 2 - -1. Cambia el widget *Solicitante ID* para presentar el nombre y apellido del solicitante: - - Cambia el valor del campo **Etiqueta** por *Solicitante* - - Configura el widget de esta manera: `{{solicitante.firstname}} {{solicitante.lastname}}` - - ![variable solicitante nombre y apellido](images/ex03/ex3_03.png) - -1. Cambia el botón *Submit*: - - Selecciona el widget - - Cambia la etiqueta para *Validar* - -1. Comproba el formulario simple: - - Asegurate que el formulario se vea así: - ![formulario de validacion](images/ex03/ex3_07.png) ----------- -*Opción para ir más alla* -1. Agrega un widget para rechazar la solicitud: - - Arrastra un widget **Botón** y agrégualo al contenedor del formulario (área delimitada por una línea gruesa de puntos) - - Configura el widget de esta manera: - - Propiedad | Valor - --------- | ------ - Ancho | 6 - Etiqueta | Rechazar - Alineación | derecha - Estilo | danger - Datos enviados al hacer click | `{"solicitudInput":{"estaAprobado":false}}` - Valor de la respuesta fallida | `formOutput._submitError` - Dirección URL de destino en éxito | `/bonita` - -1. Borra la casilla *Está aprobado* y el botón *Submit* - -1. Añada un widget para aprobar la solicitud - - Arrastra un widget **Botón** al área "6 columnas" a la derecha del botón *Rechazar* - - Configura el widget de esta manera: - - Propiedad | Valor - --------- | ------ - Etiqueta | Aprobar - Estilo | success - Datos enviados al hacer click | `{"solicitudInput":{"estaAprobado":true}}` - Valor de la respuesta fallida | `formOutput._submitError` - Dirección URL de destino en éxito | `/bonita` - -El formulario se vera así: - ![Validación / rechazo de la solicitud de licencia](images/ex03/ex3_08.png) ---------------- - -1. Guarda el formulario: - - Usa el botón **Guardar** en el centro superior de la pantalla para guardar el formulario - -1. Prueba la ejecución del proceso: - - Inicia la ejecución del proceso a través de Bonita Studio - - Valida, a partir del historial de casos, que se ha seguido el camino correcto hasta el final del proceso - -[Ejercicio siguiente: configuración de los actores](04-actors.md) diff --git a/docs/es/04-forms.md b/docs/es/04-forms.md new file mode 100644 index 0000000..4ec54ad --- /dev/null +++ b/docs/es/04-forms.md @@ -0,0 +1,165 @@ +--- +title: Ejercicio 4 - Crear formularios +--- + +## Objetivo + +El objetivo de este ejercicio es proporcionar formularios simples, fáciles de usar y adecuados para la ejecución del proceso. + +## Instrucciones resumidas + +1. Duplica el diagrama de proceso del ejercicio anterior para crear una versión *2.1.0*. + +1. Crea un formulario de instanciación de proceso a nivel de la *pool* que permita inicializar los atributos *fechaInicio* y *numeroDias* de la variable de negocio *solicitud* +1. Crea un formulario para ejecutar la tarea de aprobacion en donde se muestre la información del solicitante y los datos *fechaInicio* y *numeroDias* en modo de solo lectura y permita la captura de *estaAprobado* + +## Instrucciones paso a paso +1. Duplica el diagrama de proceso del ejercicio anterior para crear una versión *2.1.0*: + - A partir de la versión *2.0.0, crea la versión *2.1.0* del diagrama y de la *pool*. +1. Crea un formulario de instanciación de proceso: + - Selecciona la *pool* del proceso + - en la zona de propiedades, navega a la pestaña **Ejecución / Formulario de instanciación** + - Haz clic en el ícono **lápiz** asociado al campo **Formulario de destino** + ![creación de un formulario](images/ex03/ex3_01.png) + + Esto va a abrir el UI Designer en tu navegador web con un nuevo formulario generado automáticamente a partir de la definición del contrato de instanciación. + + ![nuevo formulario](images/ex03/ex3_02.png) + - Cambia el nombre del formulario: + - Usa el campo de texto en la parte superior de la pantalla para cambiar el nombre de *newForm* a *ingresarSolicitudVacaciones*. al ser un nombre técnico, se deben omitir espacios, acentos y otros caracteres especiales. + - Haz clic en el botón **Guardar** + + - Cambia el título del formulario, visible para el usuario: + - Selecciona el widget **Title** con el valor *Solicitud* en la parte superior del formulario. + - En la sección a la derecha de la pantalla, edita las siguientes propiedades: + + Propiedad | Valor + --------- | ------ + Texto | *Ingrese una solicitud de vacaciones* + Nivel de título | Nivel 2 + Alineación | centrado + + - Cambia el widget *Fecha Inicio* : + - Selecciona el widget **Date Picker** con el valor *Fecha de inicio* y edita las siguientes propiedades: + + Propiedad | Valor + --------- | ------ + Etiqueta | Fecha de inicio + Formato de fecha técnica | dd/MM/yyyy + Placeholder | Ingrese una fecha (dd/mm/aaaa) + Etiqueta del botón Hoy: **Mostrar botón Hoy** | No + + - Cambia el widget *Numero Dias* : + - Selecciona el widget **Input** *Numero Dias* y edita las siguientes propiedades: + + Propiedad | Valor + --------- | ------ + Etiqueta | Número de días + Placeholder | Número de días a solicitar + Valor mínimo (no debe confundirse con la propiedad **Longitud mínima**) | 1 + + - Cambia el widget *Submit* : + - Selecciona el widget **Button** *Submit* + - Cambia su etiqueta por *Enviar* + + - Verifica el formulario: + - Comprueba que el formulario se ve así en el editor: + ![formulario en el UI Designer](images/ex03/ex3_05.png) + + - Haz clic en el botón **Guardar** en la parte superior de la pantalla + - Haz clic en el botón **Vista previa** en la parte superior de la pantalla + - Comprueba que la vista previa se ve así: + ![vista previa de un formulario](images/ex03/ex3_06.png) + + Ten en cuenta los siguientes puntos en la vista previa: + - El widget que muestra el error no es visible + - Es posible probar la vista previa en diferentes dispositivos, desde teléfonos móviles hasta pantallas grandes. + - El botón *Enviar* está deshabilitado de forma predeterminada (esto se debe a la validación proporcionada por el contenedor del formulario) + - El botón *Enviar* se activa cuando el contenido del formulario es válido + + > **Nota:** no es posible enviar el formulario desde la vista previa, incluso cuando este último es válido. + + - Cierra la ventana de vista previa. + +1. Crea un formulario para ejecutar la tarea *Validar solicitud*: + - En Bonita Studio, selecciona la tarea *Validar solicitud* + - En la zona de propiedades, navega a la pestaña **Ejecución / Formulario** + - Haz clic en el ícono **lápiz** relacionado con el campo **Formulario de destino** para abrir un nuevo formulario en el UI Designer + - Responde **Sí** a la pregunta sobre cómo agregar widgets de solo lectura + + > **Nota:** el formulario se generó automáticamente a partir del modelo de datos de negocio (BDM) y del contrato, y muestra los datos que no son esperados por el contrato en esta etapa en modo solo lectura. + + + - Cambia el nombre del formulario: + - Desde el UI Designer, cambia el nombre del formulario a *validarSolicitudVacaciones* y guárdalo. + + - Recupera información sobre el solicitante + - Haz clic en el botón **Crear una nueva variable** para definir una variable con las siguientes propiedades: + + ![variable solicitante](images/ex03/ex3_04.png) + > **Nota:** puedes utilizar los ejemplos que te permiten recuperar automáticamente los patrones de llamadas a la API. Aquí recuperaremos `identity API` porque estamos buscando información relacionada con un usuario. + + - Cambia el título del formulario + - Selecciona el widget **Título** (Title) ubicado en la parte superior del formulario + - Configura el widget de la siguiente manera: + + Propiedad | Valor + --------- | ------ + Texto | Validar una solicitud de vacaciones + Nivel de título | Nivel 2 + + - Cambia el widget *Solicitante ID* para presentar el nombre y apellido del solicitante: + - Cambia el valor del campo **Etiqueta** por *Solicitante* + - Configura el widget de esta manera: `{{solicitante.firstname}} {{solicitante.lastname}}` + + ![variable solicitante nombre y apellido](images/ex03/ex3_03.png) + + - Cambia el botón *Submit*: + - Selecciona el widget + - Cambia la etiqueta para *Validar* + + - Comproba el formulario simple: + - Asegurate que el formulario se vea así: + ![formulario de validacion](images/ex03/ex3_07.png) +---------- +*Opción para ir más lejos* +1. Agrega un widget para rechazar la solicitud: + - Arrastra un widget **Botón** y agrégualo al contenedor del formulario (área delimitada por una línea gruesa de puntos) + - Configura el widget de esta manera: + + Propiedad | Valor + --------- | ------ + Ancho | 6 + Etiqueta | Rechazar + Alineación | derecha + Estilo | danger + Datos enviados al hacer click | `{"solicitudInput":{"estaAprobado":false}}` + Valor de la respuesta fallida | `formOutput._submitError` + Dirección URL de destino en éxito | `/bonita` + +1. Borra la casilla *Está aprobado* y el botón *Submit* + +1. Añada un widget para aprobar la solicitud + - Arrastra un widget **Botón** al área "6 columnas" a la derecha del botón *Rechazar* + - Configura el widget de esta manera: + + Propiedad | Valor + --------- | ------ + Etiqueta | Aprobar + Estilo | success + Datos enviados al hacer click | `{"solicitudInput":{"estaAprobado":true}}` + Valor de la respuesta fallida | `formOutput._submitError` + Dirección URL de destino en éxito | `/bonita` + +El formulario se vera así: + ![Validación / rechazo de la solicitud de licencia](images/ex03/ex3_08.png) +--------------- + +1. Guarda el formulario: + - Usa el botón **Guardar** en el centro superior de la pantalla para guardar el formulario + +1. Prueba la ejecución del proceso: + - Inicia la ejecución del proceso a través de Bonita Studio + - Valida, a partir del historial de casos, que se ha seguido el camino correcto hasta el final del proceso + +[Ejercicio siguiente: configuración de los actores](04-actors.md) diff --git a/docs/es/04-actors.md b/docs/es/05-actors.md similarity index 98% rename from docs/es/04-actors.md rename to docs/es/05-actors.md index d370a46..9490ddd 100644 --- a/docs/es/04-actors.md +++ b/docs/es/05-actors.md @@ -1,5 +1,5 @@ --- -title: Ejercicio 4 - Definición de los actores +title: Ejercicio 5 - Definición de los actores --- ## Objetivo diff --git a/docs/es/05-connectors.md b/docs/es/05-connectors.md deleted file mode 100644 index acc390b..0000000 --- a/docs/es/05-connectors.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Ejercicio 5 - Notificación a través de un conector ---- - -## Objetivo - -El objetivo de este ejercicio es tratar una interacción entre el proceso y un sistema externo a través de un conector. Aquí estamos interesados en la notificación del resultado de la solicitud de licencia a través de un conector de correo electrónico. - -> ⚠ Dependiendo de la configuración de su red, su firewall o la configuración de seguridad de su servidor de correo electrónico, es posible que no esté autorizado para enviar un correo electrónico desde Bonita. -> Para evitar estas limitaciones técnicas, este ejercicio se realizará con un software que simule un servidor de correo electrónico (FakeSMTP). - -## Resumen de las instrucciones - -Recupera y inicia el servidor [FakeSMTP](http://nilhcem.github.io/FakeSMTP/downloads/fakeSMTP-latest.zip). - -Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *5.O.0*. - -Agrega un conector para enviar correos electrónicos en tareas automáticas *Notificar aprobación* y *Notificar rechazo*. Estos enviarán un correo electrónico al solicitante con el estado de validación de su solicitud. - -Hay que definir un script para recuperar el correo electrónico del solicitante en el conector. - -## Instrucciones paso a paso - -1. Implementación de FakeSMTP: - - Recupera el binario de FakeSMTP de esta URL: [http://nilhcem.github.com/FakeSMTP/downloads/fakeSMTP-latest.zip](http://nilhcem.github.com/FakeSMTP/downloads/fakeSMTP-latest.zip) - - Abre el archivo `fakeSMTP-latest.zip` - - Inicia FakeSMTP haciendo doble clic en el archivo JAR o ejecutando el siguiente comando: `java -jar fakeSMTP-2.0.jar` - - Una vez que se muestra la interfaz gráfica de FakeSMTP, configura el puerto de escucha en *2525* y haz clic en el botón **Iniciar el servidor** - -1. Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *5.0.0* - -1. Agrega un conector para enviar un correo electrónico en la tarea *Notificar aprobación*: - - Selecciona la tarea *Notificar aprobación* - - Navega en la pestaña **Ejecución / Conectores entrada** - - Haz clic en **Agregar...** - Una advertencia indica que no se ha instalado previamente ningún conector en el proyecto y pide que se haga. - - ![aviso de conector](images/ex05/ex5_00.png) - >**Nota** : Las extensiones pueden recuperarse del Bonita MarketPlace o de directorios remotos privados o públicos. Si desea ir más allá, el desarrollo y la gestión de estas extensiones se tratan en un ejercicio posterior. - - Haz clic en Aceptar para acceder al MarketPlace y selecciona el conector **Email** de la lista. - ![MarketPlace](images/ex05/ex5_02.png) - - Haz clic en **Instalar**. - - Selecciona la definición del conector **Correo electrónico**. - - Haz clic en el botón **Siguiente**. - - Especifica *enviarCorreoAprobacion* como nombre - - Vete a la página siguiente - - Completa los siguientes parámetros de conexión: - - Propiedad | Valor - --------- | ------ - Host SMTP | *localhost* - Puerto SMTP | *2525* (el puerto especificado en FakeSMTP) - SSL (en la pestaña **Seguridad**) | desmarcado - - - Haz clic en el botón **Siguiente** - - Ingresa *rh@acme.com* como dirección de correo electrónico en el campo del remitente **De** - - Usa el ícono **lápiz** para editar la expresión en el campo del destinatario **A** - - En el editor de scripts, selecciona *processInitiatorUser* en el menú **Plantillas de codigo/Usuarios de Bonita**. - - Arrastralo en la pestaña de derecha. Se crea automaticamente el script para recuperar los detalles del iniciador del proceso - ![editor script A](images/ex05/ex5_04.png) - - Selecciona *userProfessionalContaect* en el mismo menú y arrastralo en la pestaña, entre `.getStartedBy` y `}catch` - - Para poder recuperar el correo electronico del iniciador del proceso, reemplaza *userId* por *processInitiator.id* - - Tras `(processInitiator.id, false)` añade "." y selecciona *email: string* en la lista - - Cambia `def proContactData =` por `return` - - ![editor script B](images/ex05/ex5_05.png) - - - Haz clic en el botón **Aceptar** para cerrar el editor de scripts - - Vete a la página siguiente - - Especifica *Solicitud de vacaciones aprobada* como asunto - - Haz clic en **Finalizar** - - - Debería aparecer un mensaje similar al siguiente, haz clic en el botón **Aceptar**: - ![mensaje de advertencia de salida no serializable](images/ex05/ex5_00.png) - - - Asegúrate de que FakeSMTP reciba el correo electrónico como se ilustra abajo: - ![Fake SMTP con un mensaje recibido](images/ex05/ex5_01.png) - -1. Agrega un conector para enviar correo electrónico a la tarea *Notificar rechazo*: - - Repite el paso anterior nombrando el conector *enviarCorreoRechazo* y especificando *Solicitud de vacaciones rechazada* como asunto - - Alternativamente, puedes usar la funcionalidad que te permite copiar un conector configurado en una tarea a otra tarea. - -1. Prueba el proceso: - - Ejecuta el proceso dos veces para probar las diferentes rutas y asegurate de que FakeSMTP envíe e intercepte los correos electrónicos - -[Ejercicio siguiente: creación de aplicaciones](06-applications.md) diff --git a/docs/es/06-applications-en.md b/docs/es/06-applications-en.md deleted file mode 100644 index 8b644a3..0000000 --- a/docs/es/06-applications-en.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Exercise 6 - Build a leave request application ---- - -## Goal - -The goal of this exercise is to build an application for users to create and manage their leave requests. - -## Instructions overview - -Open the UI Designer and create a new **Application page** named *LeaveRequestStatus* to follow the progress of the connected user leave request. - -This page will contain one "multiple container" that list the on-going leave requests. For each request, the start date, number of days and approval status will be displayed. - -Add a link to the instantiation form to start a new leave request. - -Create a new application. Then add the *LeaveRequestStatus* page in the application. - -Deploy the application page using the **Deploy** button from the Studio. - -Access the application using the generated URL. - - -## Step by step instructions - -1. Create a new page: - - In the Studio, click on the **UI Designer** button - - Click on the **Create** button - - Select **Application page** - - Set the name to: *LeaveRequestStatus* - - Click on **Create** - - ![Application page creation](images/ex06/ex6_01.png) - - - You should now be on the designer page - -1. Add a title to your page: - - Drag the widget **Title** (A) from the palette to the top of the page (B) - - Select the widget - - On the right panel, enter *Leave request application* in the **Text** field (C) - - Select **center** for **Alignment** - - ![Widget title addition](images/ex06/ex6_02.png) - -1. Create a variable to list the leave request: - - Click on **Data model** icon ![icone-datamodel](images/ex06/ex6_00.png) - - Drag and drop *LeaveRequest* onto the page just below the main title (a dotted line should appear) - - Keep the name by default *leaveRequest* - - Select the **"Find** query - - Click on **Save** button - - A multiple container is automatically generated with a table showing the attributes of the LeaveRequest object. - ![container leaveRequest](images/ex06/ex6_14.png) - -1. Modify the container title like follows: - - Property | Value - -------- | ----- - Title | *Leave request status* - Title level | **Level 4** - Alignment | **left** - -1. Modify the labels of the widget **Table**: - - Select the widget **Table** - - In the right panel, in the **Headers** field, delete *RequestorId*. - - Replace *Leave Start* with *Start date*, *Day Count* with *Number of days*. - -1. Display the information in the columns of the table more clearly : - - In the right panel, in the field **Column keys**, delete *requestorId*. - - Delete the Input widget *RequestorId* in the details container because this information is not useful - -1. Select the **Date picker** widget called *Leave Start* and edit the following properties: - - Property | Value - -------- | ----- - Read-Only | **Yes** - Label | *Start date* - Show Today button | **No** - -1. Select the **Input** widget called *Day Count* and edit the following properties: - - Property | Value - -------- | ----- - Read-Only | **Yes** - Label | *Number of days* - - - Save the page - - The page should look like this: - - ![Application page in UI Designer](images/ex06/ex6_04.png) - - - You can preview the page at anytime by clicking on **Preview** button - - > Tip: if you are logged in the Portal in the same browser, the current leave request will be displayed. - -1. Add a new **Link** widget: - - Drag a **link** widget from the palette and place it between the two titles - - In the field **Text** enter *Create a new request* - - In the field **Type**, select **Process instanciation form** - - In the field **Process name** add *LeaveRequest* - - In the field **Alignment** select center - - In the field **Style** select **Primary** - - Save the page - -We will now deploy the application in the portal from the Studio. - -1. Add an application descriptor : - - In the Studio, in the **Development/Application Descriptor** menu select **New**. An .xml file is automatically initialized. - - Click *Add an Application Descriptor*. - - Enter *leave-request* in the field **Application URL token**. - - Enter *Leave requests application* in the field **Displayed name**. - - Click on the button **Add**. - - ![creation of an application](images/ex06/ex6_15.png) - -1. Create a new application : - - In the Navigation menu, click *Add one-page menu* (A) - - Enter *Requests follow-up* in the field **Menu**. - - Select the *custompage_LeaveRequestStatus* page in the field **Application Page** (B) - - Enter *leave-request* in the **Token** field (C) - - ![creation of an application](images/ex06/ex6_07.png) - -1. Define the *Requests follow-up* page as the application home page : - - Select the *leave-request* token from the Menu **HomePage**. - ![home page](images/ex06/ex6_16.png) - - Save - - Check that the configuration page looks like this : - - ![configuration page](images/ex06/ex6_17.png) - -1. Deploy the application in the Portal: - - Click on the link *http://localhost:8080/bonita/apps/leave-request* to access the application. (A) - - A deployment window opens. Click on *Deploy* (B) - - ![Deploy the application](images/ex06/ex6_09.png) - - - To open the application, select *Leave requests application as User*. - - Click on *Open*. - - ![opening window](images/ex06/ex6_18.png) - - The application should look like this once deployed : - - - ![application rendering](images/ex06/ex6_08.png) - -And that's it! - -You want to go further? Follow the next iteration of the project. -Next exercise: [add a timer to the process](07-timer.md) \ No newline at end of file diff --git a/docs/es/06-extensions.md b/docs/es/06-extensions.md new file mode 100644 index 0000000..efa36c1 --- /dev/null +++ b/docs/es/06-extensions.md @@ -0,0 +1,140 @@ +--- +title: Ejercicio 6 - Agregar un filtro de actor y un conector +--- + +## Objetivo + +El objetivo de este ejercicio es agregar puntos de extensión al proyecto Bonita, a través de un filtro de actor y de un conector de correo electrónico (email). + +- El filtro de actor *Gestor iniciador* será configurado para buscar dinámicamente en la organización el repsonsable del solicitante. +- El conector de correo electrónico permitirá enviar una notificación del resultado de la solicitud al solicitante. + +> ⚠ Dependiendo de la configuración de su red, su *firewall* o la configuración de seguridad de su servidor de correo electrónico, es posible que no esté autorizado para enviar un correo electrónico desde Bonita. +> Para evitar estas limitaciones técnicas, este ejercicio se realizará con un software que simule un servidor de correo electrónico (FakeSMTP). + +## Instrucciones resumidas +1. Duplica el diagrama de proceso del ejercicio anterior para crear una versión *3.1.0* +1. Configura un filtro de actor del tipo *Gestor iniciador* en la senda *Validador* +1. Agrega un conector para enviar correos electrónicos en las tareas automáticas *Notificar aprobación* y *Notificar rechazo*. + - Recupera y inicia el servidor [FakeSMTP](http://nilhcem.github.io/FakeSMTP/downloads/fakeSMTP-latest.zip). + - El suguiente código será utilizado para recuperar la dirección de correo del solicitante: + + ```groovy + BonitaUsers.getProcessInstanceInitiatorProfessionalContactInfo(apiAccessor,processInstanceId).email + ``` + +## Instrucciones paso a paso +### Duplica el diagrama de proceso del ejercicio anterior para crear una versión *3.1.0* + +### Configura un filtro de actor del tipo *Gestor iniciador* en la senda *Validador* + +1. Selecciona la senda *Validador* + +1. Navega a la pestaña **General / Actores** + +1. Selecciona el actor *Empleado actor* del menú desplegable para reemplazar el actor *validador* + +1. Un mensaje te informará de que es necesario instalar primero un filtro de actores. Haz clic en **Aceptar**. + ![filtre_extension](images/ex04/ex4_10.png) + + +1. En el Bonita MarketPlace, haz clic en *Administrador de iniciadores* y en **Instaler** + ![mercado de filtros de actores](images/ex09/ex9_01.png) + La definición del filtro es ahora parte del proyecto. + +1. En la ventana de configuración del conector en la senda, selecciona la definición del filtro **Gestor iniciador** + +1. Haz clic en **Siguiente** + +1. Nombra el filtro *responsableIniciador* + +1. Haz clic en **Finalizar** + + +### Agrega un conector para enviar correos electrónicos en las tareas automáticas *Notificar aprobación* y *Notificar rechazo* + +1. Recupera el binario e inicia el servidor FakeSMTP de esta URL: [http://nilhcem.github.com/FakeSMTP/downloads/fakeSMTP-latest.zip](http://nilhcem.github.com/FakeSMTP/downloads/fakeSMTP-latest.zip) + - Descomprimer el archivo `fakeSMTP-latest.zip` + - Inicia FakeSMTP haciendo doble clic en el archivo JAR o ejecutando el siguiente comando: `java -jar fakeSMTP-2.0.jar` + - Una vez que se muestra la interfaz gráfica de FakeSMTP, configura el puerto de escucha en *2525* y haz clic en el botón **Iniciar el servidor** + +1. Abre el diagrama de proceso versión *3.1.0* + +1. Selecciona la tarea *Notificar aprobación* + +1. Navega en la pestaña **Ejecución / Conectores entrada** +1. Haz clic en **Agregar...** + Una advertencia propone instalar un conector desde el Bonita Marketplace. + + ![aviso de conector](images/ex05/ex5_00.png) + >**Nota** : Las extensiones pueden recuperarse del Bonita MarketPlace o de directorios remotos privados o públicos. Si desea ir más allá, el desarrollo y la gestión de estas extensiones se tratan en un ejercicio posterior. + +1. Haz clic en **Aceptar** para acceder al MarketPlace y selecciona el conector **Email** de la lista. + ![MarketPlace](images/ex05/ex5_02.png) + +1. Haz clic en **Instalar**. + +1. En la ventana de configuración de la tarea *Notificar aprobación*, selecciona la definición del conector **Correo electrónico**. + +1. Haz clic en el botón **Siguiente**. + +1. Especifica *enviarCorreoAprobacion* como nombre +1. Haz clic en el botón **Siguiente**. +1. Completa los siguientes parámetros de conexión: + + Propiedad | Valor + --------- | ------ + Host SMTP | *localhost* + Puerto SMTP | *2525* (el puerto especificado en FakeSMTP) + SSL (en la pestaña *Seguridad*) | desmarcado + +1. Haz clic en el botón **Siguiente** + +1. Ingresa *rh@acme.com* como dirección de correo electrónico en el campo del remitente **De** + +1. Usa el ícono **lápiz** para editar la expresión en el campo del destinatario **A** + +1. En el editor de scripts, selecciona *processInitiatorUser* en el menú **Plantillas de codigo/Usuarios de Bonita**. + +1. Arrástralo al editor de script. Un script se agrega automaticamente para recuperar los detalles del iniciador del proceso + ![editor script A](images/ex05/ex5_04.png) + +1. Selecciona *userProfessionalContact* en el mismo menú **Plantillas de codigo/Usuarios de Bonita** y arrástralo al editor, entre `.getStartedBy` y `}catch(UserNotFoundException e){` + - Para poder recuperar el correo electronico del iniciador del proceso, reemplaza *userId* por `processInitiator.id` + - Añade "." y selecciona *email: string* en la lista + - Cambia `def proContactData =` por `return` + + ![editor script B](images/ex05/ex5_05.png) + + - Haz clic en el botón **Aceptar** para cerrar el editor de scripts + - Haz clic en el botón **Siguiente** + - Especifica *Solicitud de vacaciones aprobada* como asunto + - Haz clic en **Finalizar** + + +1. Repite el paso anterior nombrando el conector *enviarCorreoRechazo* y especificando *Solicitud de vacaciones rechazada* como asunto + + Alternativamente, puedes usar la funcionalidad que te permite copiar un conector configurado en una tarea a otra tarea. + +## Prueba el proyecto + +1. Lanza el proyecto a partir del Studio (el usuario *Walter Bates* sera utilizado) + +1. Envía el formulario de *Solicitud de vacaciones*. Los actores siendo correctamente configurados, la tarea *Validación de solicitud de vacaciones* no será propuesta a Walter Bates. + +1. En la barra superior a la izquierda, haz clic en **Walter Bates**, y después en **Cerrar sesión**: + ![desconectar del portal](images/ex04/ex4_08.png) + +1. Conéctate con el usuario *"helen.kelly"* y la contraseña *"bpm"* + +1. El filtro de actor se ha ejecutado correctamente, la tarea *Validación de solicitud de vacaciones* aparece en la lista de tareas a ejecutar. + +1. Ejecuta el proceso dos veces para probar las diferentes rutas y asegúrate de que FakeSMTP envíe e intercepte los correos electrónicos + +[Ejercicio siguiente: creación de aplicaciones](07-applications.md) diff --git a/docs/es/06-applications.md b/docs/es/07-applications.md similarity index 58% rename from docs/es/06-applications.md rename to docs/es/07-applications.md index 3f67780..b39d5a9 100644 --- a/docs/es/06-applications.md +++ b/docs/es/07-applications.md @@ -1,39 +1,41 @@ --- -title: Ejercicio 6 - Crear una aplicación de gestión de vacaciones +title: Ejercicio 7 - Crear una aplicación de gestión de vacaciones --- ## Objetivo El objetivo de este ejercicio es proporcionar a los usuarios una aplicación que permita rastrear y crear solicitudes de vacaciones. -## Resumen de las instrucciones +## Instrucciones resumidas -Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *6.O.0*. +1. Crea una nueva página en la aplicación y nómbrala *SeguimientoDeSolicitud*, que permitirá rastrear kas solicitudes creadas por el usuario conectado. + Esta página contiene un contenedor múltiple que enumera las solicitudes de vacaciones abiertas. Para cada solicitud, se muestran la fecha de inicio, el número de días y el estado de aprobación. -Abre el UI Designer y crea una nueva **Página de aplicación** llamada *SeguimientoDeSolicitud* que permite el seguimiento de las solicitudes de vacaciones iniciadas por el usuario conectado. +1. Agrega un nuevo contenedor *form container* para crear una nueva solicitud. + Este formulario contiene un widget *Fecha* y un widget *Input* para recolectar la información necesaria para la nueva solicitud. -Esta página contiene un contenedor múltiple que enumera las solicitudes de vacaciones abiertas. Para cada solicitud, se muestran la fecha de inicio, el número de días y el estado de aprobación. +1. Crea un descriptor de aplicación y agrega la nueva **Página de aplicación** llamada *SeguimientoDeSolicitud* -Agrega un enlace al formulario de instanciación para iniciar una nueva solicitud de vacaciones. +1. Despliega la aplicación y accede a ella utilizando la URL única generada. -Cree una nueva aplicación y agregue la página *SeguimientoDeSolicitud*. +## Instrucciones paso a paso -Acceda a la aplicación recién creada utilizando la URL única generada. +### Crea una nueva página en la aplicación y nómbrala *SeguimientoDeSolicitud* -## Instrucciones paso a paso +1. En tu navegador, vuelev al UI Designer + Si la ventana ha sido cerrada, vuele al Studio y haz clic en el botón **UI Designer** + +1. Haz clic en el botón **Crear** -1. Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *5.O.0*. +1. Selecciona **Página de aplicación** como tipo -1. Crea una página de aplicación: - - En el Studio, haz clic en el botón **UI Designer** - - Haz clic en el botón **Crear** - - Selecciona **Página de aplicación** - - Ingresa el nombre *SeguimientoDeSolicitudes* - - Haz clic en **Crear** +1. Ingresa el nombre *SeguimientoDeSolicitudes* + +1. Haz clic en **Crear** ![crear una página de aplicación](images/ex06/ex6_01.png) - - La vista del diseñador ahora debería mostrarse + La vista de diseñador ahora debería mostrarse 1. Agrega un título a tu página: - Arrastra el widget **Título** (A) desde la paleta y colócalo en la parte superior de la página (B) @@ -43,27 +45,58 @@ Acceda a la aplicación recién creada utilizando la URL única generada. ![agregar widget título](images/ex06/ex6_02.png) + 1. Crea una variable para guardar la información de la sesión: + - Abajo en donde se listan las variables, haz clic en **Crear una nueva variable** + - Nómbrala *"sessionInfo"* + - Elige como tipo **External API** + - En el campo **API URL**, introduce `../API/system/session/unusedId` + - Haz clic en **Guardar** + 1. Crea una variable para listar las solicitudes de vacaciones: - - Haz clic en el ícono **Modelo de datos** ![icone-datamodel](images/ex06/ex6_00.png) - - Arrastra y suelta *SolicitudVacaciones* en la página - - Mantenga el nombre predeterminado: *solicitudVacaciones* + - Haz clic en el ícono **Modelo de datos** + ![icone-datamodel](images/ex06/ex6_00.png) + - Arrastra y suelta *SolicitudVacaciones* en la página, debajo del título + - Deja el nombre predeterminado: *solicitudVacaciones* - En la sección **Consultas de "Buscar (Find)" en un atributo**, selecciona *solicitanteId* + - En la sección *Filtrar la búsqueda finByIdDemandeur* utiliza la variable: `{{sessionInfo.user_id}}` - Haz clic en el botón **Guardar** Se genera automáticamente un contenedor múltiple con una tabla que contiene los atributos del objeto SolicitudVacaciones. - + ![contenedor multiple](images/ex06/ex6_13.png) -1. Sustituir el subtítulo *SolicitudVacaciones* del contenedor y las etiquetas : - - Nómbralo *Seguimientio de solicitudes* +1. Modifica las propiedades de los widgets en el contenedor: + - Selecciona el widget subtítulo *SolicitudVacaciones* y nómbralo *Seguimientio de solicitudes* - Selecciona la opción **Nivel 4** para el parámetro **Nivel del título**. - Selecciona la opción **centrado** para el parámetro **alineación**. - - Selecciona el widget Tabla - - En el panel de la derecha, en el campo **Cabeceras**, borra *Solicitante Id*. + - Selecciona el widget Tabla, en el panel de la derecha, en el campo **Cabeceras**, borra *Solicitante Id* - Sustituye *Fecha Inicio* por *Fecha de inicio* y *Número Dias* por *Número de días*. + + + 1. Declara una nueva expresión JavaScript para formatear la columna "Estátus" de la lista: + - Haz clic en **Crear una nueva variable** + - Nómbrala *"agregarEstatusSolicitudVacaciones"* + - Elige como tipo **JavaScript expression** + - Reemplaza el valor existente por el siguiente script: + ```javascript + if($data.hasOwnProperty('solicitudVacaciones') && $data.solicitudVacaciones) { + for (let solicitud of $data.solicitudVacaciones) { + if(solicitud.esAprobada) { + demande.esAprobadaEtiqueta = "Aprobada"; + } else if(solicitud.esAprobada === false) { + demande.esAprobadaEtiqueta = "Rechazada"; + } else { + demande.esAprobadaEtiqueta = "En curso"; + } + } + } + + return $data.solicitudVacaciones; + ``` 1. Muestra la información en las columnas de la tabla de una manera más clara: - En el panel de la derecha, en el campo **Claves de columna**, elimina *solicitanteId* + - En el mismo campo, reemplaza *esAprobada* por *esAprobadaEtiqueta*, creada en la variable JavaScript - Borra el widget Input *SolicitanteId* en el contenedor de detalles porque esta información no es útil. 1. Selecciona el widget *Fecha Inicio* y cambia las siguientes propiedades: @@ -90,7 +123,7 @@ Acceda a la aplicación recién creada utilizando la URL única generada. - Puedes obtener una vista previa de la página en cualquier momento haciendo clic en **Vista previa** - > Consejo: si está conectado al portal en el mismo navegador, se mostrarán las solicitudes de vacaciones reales. + > Consejo: si estás conectado al portal en el mismo navegador, se mostrarán las solicitudes de vacaciones reales. 1. Agrega un nuevo widget de tipo **Link**: - Arrastra un widget de tipo **Link** desde la paleta y colócalo entre los dos títulos @@ -132,9 +165,5 @@ Acceda a la aplicación recién creada utilizando la URL única generada. ![vista previa de la aplicación](images/ex06/ex6_08.png) - -**¡Ya esta!** - -¿Quieres ir más allá? Sigue la siguiente iteración del proyecto. -Próximo ejercicio: [agregar un temporizador al proceso](07-timer.md) +Próximo ejercicio: [Agregar un fragmento](08-fragment.md) diff --git a/docs/es/08-fragment.md b/docs/es/08-fragment.md new file mode 100644 index 0000000..445e6d9 --- /dev/null +++ b/docs/es/08-fragment.md @@ -0,0 +1,101 @@ +--- +title: Ejercicio 8 - Agregar un fragmento +--- + +## Objetivo + +El objetivo de este ejercicio es enriquecer la aplicación para que los usuarios creen y gestionen sus solicitudes de vacaciones agregando un fragmento a la página *SeguimientoDeSolicitud*. + +## Instrucciones resumidas + +1. En el formulario *ingresarSolicitudVacaciones*, crea un fragmento con los widgets *DatePicker* et *Input* para recolectar la información al llenar una nueva solicitud. +1. Utiliza este fragmento en la página y vincula sus datos. +1. Despliega nuevamente la página de la aplicación utilizando el botón **Deploy** del descriptor de la aplicación en Bonita Studio. + +## Instrucciones paso a paso + +### En el formulario *ingresarSolicitudVacaciones*, crea un fragmento + +1. Abre el formulario + - Vuelve a la página de inicio de UI Designer + - Selecciona el formulario *ingresarSolicitudVacaciones* en la pestaña **Fomularios** y haz clic para abrirlo + +1. Crea un fragmento a partir del formulario *ingresarSolicitudVacaciones* + - Selecciona el contenedor con los 2 widgets *Fecha de ínicio* y *Número de días* + - En el panel derecho, haz clic en **...** y selecciona **Guardar como fragmento**. + ![selección de fragmentos en UI Designer](images/ex10/ex10_03.png) + + - Nómbralo *nuevaSolicitudVacacionesFragmento*. + - Haz clic en **Guardar**. Aparece una nueva pestaña de menú en la parte izquierda del UI Designer. + ![fragmento de menú en UI Designer](images/ex10/ex10_04.png) + - Guarda el formulario y vuelve a la página de inicio de UI Designer + +1. Configura el fragmento: + - Selecciona el fragmento y haz clic en **Editar...** para configurar los datos del fragmento + ![Fragmento de menú en UI Designer](images/ex10/ex10_05.png) + - Haz clic en **Crear una nueva variable** + - Nómbrala *dataExt*. + - Haz clic en **Sí** para exponer los datos del fragmento a la página y **Guardar** la variable + - Selecciona el widget *DatePicker*. + - En el campo *Valor* sustituye *formInput* por *dataExt* + - Selecciona el widget *Input* y sustituye formInput por *dataExt* en el campo *Value* + - Haz clic en **Guardar**. + +### Utiliza este fragmento en la página y vincula sus datos + +1. Utiliza este fragmento en la página + - Vuelve a la página *SeguimientoDeSolicitud* + - Borra los campos *Date Picker* e *Input* + - Arrastra y suelta el *nuevaSolicitudVacacionesFragmento* del menú de la izquierda al contenedor del formulario. + +1. Vincula los datos del fragmento con los datos de la página: + - Vuelva a la página de la aplicación *SeguimientoDeSolicitud*. + - En el panel de configuración, en *Datos de fragmento enlazable* agrega la variable *nuevaSolicitudVacaciones* + - Guarda los cambios. + - Haz clic en **Vista previa** + La página ahora debería verse así: + ![página de aplicación en UI Designer con formulario](images/ex06/ex6_05.png) + + +1. Crea una nueva variable para almacenar información relacionada con el proceso: + - Haz clic en **Crear una nueva variable** + - Nombra la variable *informacionDefinicionProceso* + - Elije el tipo **API externa** + - En el campo **API URL**, escribe: + `../API/bpm/process?p=0&c=10&f=name=SolicitudVacaciones&o=version%20desc` + +1. Agrega un botón para enviar el formulario: + - Arrastra el widget **Botón** desde la paleta y colócalo en el contenedor del formulario debajo de los dos widgets + - Ingresa *Crear una nueva solicitud* en el campo **Etiqueta** + - Selecciona **POST** de la lista desplegable **Acción** + - Haz clic en **fx** para cambiar el modo del campo **Datos enviados al hacer clic** y selecciona *nuevaSolicitudVacaciones* + - En el campo **URL para llamar**, escribe: `../API/bpm/process/{% raw %}{{informacionDefinicionProceso[0].id}}{% endraw %}/instantiation` + - En el campo **URL de destino si tiene éxito**, escribe: `/bonita/apps/solicitud-vacaciones` (de momento no se puede ir a la página porque hay que crear la aplicación de destino) + - Selecciona la opción **centrado** para el parámetro **Alineación** + - Selecciona la opción **primary** para el parámetro **Estílo** + - Guarda los cambios. La página ahora debería verse así: + + ![página de aplicación en UI Designer con formulario](images/ex06/ex6_05.png) + + - La vista previa de la página te permite verificar que funciona correctamente + + +### Despliega nuevamente la página de la aplicación utilizando el botón **Deploy** del descriptor de la aplicación en Bonita Studio. + +1. Desde Bonita Studio, haz clic en el botón **Desplegar** + Se abre una ventana de despliegue. + +1. Haz clic en *Desplegar* (B) + + ![Deploy the application](images/ex10/ex10_07.png) + +1. Para abrir la aplicación, selecciona *Aplicación de solicitud de vacaciones como usuario*. +1. Haz clic en *Abrir*. + + ![opening window](images/ex10/ex10_08.png) + +La aplicación debería tener este aspecto una vez desplegada: + + ![application rendering](images/ex06/ex6_08.png) + +¡Y ya está! ;) \ No newline at end of file diff --git a/docs/es/09-actor-filter.md b/docs/es/09-actor-filter.md deleted file mode 100644 index 16616f2..0000000 --- a/docs/es/09-actor-filter.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Ejercicio 9 - Agregar un filtro de actor ---- - -## Objetivo - -El objetivo de este ejercicio es mejorar la colaboración entre actores añadiendo un filtro de actores al carril del validador. - -## Resumen de las instrucciones - -Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *9.0.0*. - -Sustituye el actor **validador** actual por un filtro de actores de tipo **gestor de iniciadores** en el carril *Validador*. - -## Instrucciones paso a paso - -1. Dupliqua el diagrama de proceso del ejercicio anterior para crear una versión *9.0.0*. - -1. Configura un filtro de actor del tipo **Gestor iniciador** en la senda *Validador*: - - Selecciona la senda *Validador* - - Navega en la pestaña **General / Actores** - - Selecciona el actor *Empleado actor* del menú desplegable para reemplazar el actor *validador* - Un mensaje te informará de que es necesario instalar primero un filtro de actores. Haz clic en **Aceptar**. El Bonita MarketPlace se abrirá automáticamente - ![mercado de filtros de actores](images/ex09/ex9_01.png) - - Selecciona el filtro *Administrador de iniciadores*. - - Haz clic en **Instalar**. - - Selecciona la definición del filtro **Gestor iniciador** - - Haz clic en **Siguiente** - - Nombra el filtro *responsableIniciador* - - Haz clic en **Finalizar** - -1. Ejecuta el proceso con los dos actores: - - Inicia el proceso desde Studio (se usará el usuario Walter Bates) - - Envía el *Formulario de solicitud de vacaciones*. Si los actores están configurados correctamente, no se debe proponer la tarea *Validar solicitud de vacaciones* - - Cierra sesión en el portal haciendo clic en el nombre de usuario en la esquina superior derecha y luego **Cerrar sesión**: - ![cierre de sesión del portal](images/ex04/ex4_08.png) - - Conéctate con el usuario *helen.kelly* y la contraseña *bpm* - - Si el filtro de actor se ejecutó correctamente, la tarea *Validar solicitud de vacaciones* debería estar disponible en la lista de tareas - -[Último ejercicio: enriquecer una aplicación con un fragmento](10-fragment.md) diff --git a/docs/es/10-fragment.md b/docs/es/10-fragment.md deleted file mode 100644 index 48b0ad3..0000000 --- a/docs/es/10-fragment.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Ejercicio 6 - Enriquecer la aplicación con un fragmento ---- - -## Objetivo - -El objetivo de este ejercicio es enriquecer la aplicación para que los usuarios creen y gestionen sus solicitudes de vacaciones agregando un fragmento a la página *SeguimientoDeSolicitud*. - -## Resumen de las instrucciones - -Abre el UI Designer y vete a la página de la aplicación llamada *SeguimientoDeSolicitud*. - -Esta página ya contiene un "contenedor múltiple" que enumera las solicitudes de baja en curso. Vamos a configurar este contenedor para enriquecerlo. Para cada solicitud se mostrará un estado claro. - -Tambien vamos a configurar un contenedor de fragmentos para poder enviar una nueva solicitud. -Para eso, vas a crear un fragmento que contenga un widget de fecha y un widget de entrada para recoger la información de las nuevas solicitudes de vacaciones en la página. Utiliza este fragmento en la página y vincula sus datos. -A continuación, agrega un botón para iniciar una nueva solicitud de vacaciones. - -Hay que desplegar otra vez la página de la aplicación utilizando el botón **Deploy** del descriptor de la aplicación en Bonita Studio. - -## Instrucciones paso a paso - -1. Abre la página *SeguimientoDeSolicitud* en el UI Designer: - - En el Studio, haz clic en el botón **UI Designer** - - Selecciona la página ya creada *SeguimientoDeSolicitud*. Se abre el editor del UI Designer. - - Borra el widget **Link** - -1. Crea una variable para almacenar información de sesión: - - Haz clic en **Crear una nueva variable** - - Nombra la *sessionInfo* - - Elije el tipo **external API** - - Añade en el campo **API URL**: `../API/system/session/unusedId` - - ![agregar variable sessionInfo](images/ex06/ex6_03.png) - -1. Declara una nueva expresión de JavaScript para formatear la lista: - - Haz clic en **Crear una nueva variable** - - Nombra el *agregarEtiquetaEstadoSolicitud* - - Elije el tipo **JavaScript expression** - - Reemplaza el valor existente con el siguiente script: - - ```javascript - if($data.hasOwnProperty('solicitudVacaciones') && $data.solicitudVacaciones) { - for (let solicitud of $data.solicitudVacaciones) { - if(solicitud.estaAprobado) { - solicitud.estaAprobadoEtiqueta = "Aprobada"; - } else if(solicitud.estaAprobado === false) { - solicitud.estaAprobadoEtiqueta = "Rechazada"; - } else { - solicitud.estaAprobadoEtiqueta = "En curso"; - } - } - } - - return $data.solicitudVacaciones; - ``` -1. Muestra la información en las columnas de la tabla de una manera más clara: - - En el panel de la derecha, en el campo **Cabeceras** , cambia Esta Aprobado por *Estado* - - En el campo **Claves de columna**,cambia estaAprobado por *estaAprobadoEtiqueta* - -1. Añade un nuevo contenedor de formularios: - - Arrastra un contenedor de formulario desde la paleta y colóquelo entre los dos títulos - -1. Cree una nueva variable para almacenar los valores de la nueva solicitud de permiso: - - Haga clic en **Crear una nueva variable** - - Nómbrala *nuevaSolicitudDeVacaciones*. - - Elige el tipo **JSON**. - - Haga clic en **Guardar**. - -1. Crea un fragmento del formulario *ingresarSolicitudVacaciones* que se reutilizará en la página: - - Vuelve a la página de inicio de UI Designer - - Selecciona el formulario *ingresarSolicitudVacaciones* en la pestaña **Fomularios** y haz clic para abrirlo - - En el formulario *ingresarSolicitudVacaciones*, selecciona el contenedor con los 2 widgets *Fecha de ínicio* y *Número de días* - - En el panel derecho, haz clic en **...** y selecciona **Guardar como fragmento**. - ![selección de fragmentos en UI Designer](images/ex10/ex10_03.png) - - Nómbralo *nuevaSolicitudVacacionesFragmento*. - - Haz clic en **Guardar**. Aparece una nueva pestaña de menú en la parte izquierda del UI Designer. - ![fragmento de menú en UI Designer](images/ex10/ex10_04.png) - - Guarda el formulario y vuelve a la página de inicio de UI Designer - -1. Agrega el fragmento en el contenedor del formulario y configúralo: - - Vuelve a la página *SeguimientoDeSolicitud* - - Arrastra y suelta el *nuevaSolicitudVacacionesFragmento* del menú de la izquierda al contenedor del formulario. - - Selecciona el fragmento y haz clic en **Editar...** para configurar los datos del fragmento - ![Fragmento de menú en UI Designer](images/ex10/ex10_05.png) - - Haz clic en **Crear una nueva variable** - - Nómbrala *dataExt*. - - Haz clic en **Sí** para exponer los datos del fragmento a la página y **Guardar** la variable - - Selecciona el widget *DatePicker*. - - En el campo *Valor* sustituye *formInput* por *dataExt* - - Selecciona el widget *Input* y sustituye formInput por *dataExt* en el campo *Value* - - Haz clic en **Guardar**. - -1. Vincula los datos del fragmento con los datos de la página: - - Vuelva a la página de la aplicación *SeguimientoDeSolicitud*. - - En el panel de configuración, en *Datos de fragmento enlazable* agrega la variable *nuevaSolicitudVacaciones* - -1. Crea una nueva variable para almacenar información relacionada con el proceso: - - Haz clic en **Crear una nueva variable** - - Nombra la variable *informacionDefinicionProceso* - - Elije el tipo **API externa** - - En el campo **API URL**, escribe: - `../API/bpm/process?p=0&c=10&f=name=SolicitudVacaciones&o=version%20desc` - -1. Agrega un botón para enviar el formulario: - - Arrastra el widget **Botón** desde la paleta y colócalo en el contenedor del formulario debajo de los dos widgets - - Ingresa *Crear una nueva solicitud* en el campo **Etiqueta** - - Selecciona **POST** de la lista desplegable **Acción** - - Haz clic en **fx** para cambiar el modo del campo **Datos enviados al hacer clic** y selecciona *nuevaSolicitudVacaciones* - - En el campo **URL para llamar**, escribe: `../API/bpm/process/{% raw %}{{informacionDefinicionProceso[0].id}}{% endraw %}/instantiation` - - En el campo **URL de destino si tiene éxito**, escribe: `/bonita/apps/solicitud-vacaciones` (de momento no se puede ir a la página porque hay que crear la aplicación de destino) - - Selecciona la opción **centrado** para el parámetro **Alineación** - - Selecciona la opción **primary** para el parámetro **Estílo** - - Guarda los cambios. La página ahora debería verse así: - - ![página de aplicación en UI Designer con formulario](images/ex06/ex6_05.png) - - - La vista previa de la página te permite verificar que funciona correctamente - -> Consejo: si está conectado al Portal en el mismo navegador, se mostrará la solicitud de baja actual. - -1. Despliegue de nuevo la aplicación desde Bonita Studio: - - Haz clic en el botón **Desplegar** - - Se abre una ventana de despliegue. Haz clic en *Desplegar* (B) - - ![Deploy the application](images/ex10/ex10_07.png) - - - Para abrir la aplicación, selecciona *Aplicación de solicitud de vacaciones como usuario*. - - Haz clic en *Abrir*. - - ![opening window](images/ex10/ex10_08.png) - -La aplicación debería tener este aspecto una vez desplegada: - - ![application rendering](images/ex06/ex6_08.png) - -¡Y ya está! \ No newline at end of file diff --git a/docs/es/08-data-contract-constraints.md b/docs/es/100-data-contract-constraints.md similarity index 100% rename from docs/es/08-data-contract-constraints.md rename to docs/es/100-data-contract-constraints.md diff --git a/docs/es/images/ex01/ex1_02.png b/docs/es/images/ex01/ex1_02.png new file mode 100644 index 0000000..f41b5bb Binary files /dev/null and b/docs/es/images/ex01/ex1_02.png differ diff --git a/docs/es/images/ex01/ex1_10.png b/docs/es/images/ex01/ex1_10.png index bedd486..6e072d4 100644 Binary files a/docs/es/images/ex01/ex1_10.png and b/docs/es/images/ex01/ex1_10.png differ diff --git a/docs/es/images/preferences.png b/docs/es/images/preferences.png index 38d1a20..3c65853 100644 Binary files a/docs/es/images/preferences.png and b/docs/es/images/preferences.png differ diff --git a/docs/es/images/ui_designer.png b/docs/es/images/ui_designer.png new file mode 100644 index 0000000..29f0e11 Binary files /dev/null and b/docs/es/images/ui_designer.png differ diff --git a/docs/es/images/ui_designer_24x24.png b/docs/es/images/ui_designer_24x24.png index 274c37e..36b0334 100644 Binary files a/docs/es/images/ui_designer_24x24.png and b/docs/es/images/ui_designer_24x24.png differ diff --git a/docs/es/index.md b/docs/es/index.md index 4ccbd29..2b09745 100644 --- a/docs/es/index.md +++ b/docs/es/index.md @@ -4,32 +4,31 @@ title: Bonita Camp 🇪🇸 ## Presentación -Bonita Camp es una capacitación introductoria sobre el uso de Bonita Community Edition. Su propósito es permitirle familiarizarse con los conceptos y funcionalidades centrales de Bonita. -Bonita Camp incluye información teórica y una parte de puesta en práctica con ejercicios para crear una primera aplicación con Bonita. -Si necesita ayuda no dude en: -* Hacer sus preguntas en el [foro de la comunidad](https://community.bonitasoft.com/questions-and-answers) -* [Pónerse en contacto con Bonitasoft](https://es.bonitasoft.com/contactenos) para obtener más información sobre la oferta de [soporte](https://es.bonitasoft.com/soporte) y las características adicionales de la Edición Enterprise +Bonita Camp es una capacitación introductoria sobre el uso de Bonita Community Edition. Su propósito es permitirte familiarizarte con los conceptos y funcionalidades centrales de Bonita. +Bonita Camp incluye información teórica y una parte práctica con ejercicios para crear una primera aplicación con Bonita. +Si necesitas ayuda no dudes en: +* Hacer tus preguntas en el [foro de la comunidad](https://community.bonitasoft.com/questions-and-answers) +* [Ponerte en contacto con Bonitasoft](https://es.bonitasoft.com/contactenos) para obtener más información sobre la oferta de [soporte](https://es.bonitasoft.com/soporte) y las características adicionales de la edición Enterprise -Bonita Camp consiste en: +Bonita Camp contiene: * Un conjunto de diapositivas presentadas y comentadas en una [serie de videos](https://www.youtube.com/playlist?list=PLvvoQatxaHOPSATzZe-zPh-LrSNGfpQEf) o durante sesiones en vivo * Un conjunto de ejercicios descritos en este sitio web * Las [correcciones de ejercicio](https://github.com/Bonitasoft-Community/bonita-camp/releases/latest) ## Prerrequisitos -1. [Descargar](https://es.bonitasoft.com/descargas) e instalar la última versión de Studio Bonita. Para obtener más detalles, consulte la [documentación oficial](https://documentation.bonitasoft.com/bonita//bonita-studio-download-installation) +1. [Descargar](https://es.bonitasoft.com/descargas) e instalar la última versión de Bonita Studio. Para obtener más detalles, consulta la [documentación oficial](https://documentation.bonitasoft.com/bonita/latest/bonita-studio-download-installation) (en inglés). 1. Validar el correcto funcionamiento de Bonita Studio: - - Inicie el estudio - - Haga clic en el botón **Portal** ![Icono del portal](images/portal-icon.png) en la barra de herramientas de Studio: el portal debe abrirse en su navegador web - - Haga clic en el botón **UI Designer** ![Icono de UI Designer](images/ui_designer_24x24.png) en la barra de herramientas de Studio: el UI Designer debería abrirse en su navegador web - 1. También puede descargar opcionalmente las correcciones y diapositivas en formato PDF desde la [sección "release" del proyecto GitHub bonita-camp](https://github.com/Bonitasoft-Community/bonita-camp/releases/latest) - 1. Se recomienda utilizar Chrome o Firefox durante el desarrollo para beneficiarse de las herramientas de prueba de estos navegadores. Internet Explorer 11, Edge y Safari también son compatibles (soporte parcial para IE11). Para saber qué navegador Bonita Studio usa por defecto, haga clic en el botón **Portal** ![Icono del portal](images/portal-icon.png). - El portal Bonita debería abrirse con el navegador predeterminado para su sistema operativo. Puede configurar Bonita Studio para usar un navegador que no sea el predeterminado: - - En el estudio, haga clic en el botón **Preferencias** [icono de preferencias](images/preferences.png) - - En la sección **Web** haga clic en **Navegador** - - Haga clic en el botón **Nuevo...** - - Ingrese un nombre y use el botón **Examinar ...** para seleccionar el ejecutable del navegador web (por ejemplo, *C:\Archivos_de_programa(x86)\Google\Application\chrome.exe* para Chrome en Windows) + - Inicia Bonita Studio + - En el menú Ayuda, selecciona **Probar conexión con los repositorios Maven**: un mensaje de indicado prueba de conexión exitosa debe aparecer. + - Haz clic en el botón **UI Designer** ![Icono de UI Designer](images/ui_designer_24x24.png) en la barra de herramientas de Studio: el UI Designer debe abrirse en tu navegador web + + 1. Se recomienda utilizar Chrome o Firefox durante el desarrollo para beneficiar de las herramientas de prueba de estos navegadores. Internet Explorer 11, Edge y Safari también son compatibles (soporte parcial para IE11). Bonita Studio utilizará el navigador configurado como predeterminado del sistema. Si deseas que Bonita Studio utilice un navegador diferente, puedes configurarlo: + - En la barra de herramientas del Studio, haz clic en el botón **Preferencias** ![icono de preferencias](images/preferences.png) + - En la sección **Web** haz clic en **Navegador** + - Si el navegador deseado no se encuentra en la lista **Navegadores web externos**, haz clic en el botón **Nuevo...** + - Ingresa un nombre y da clic el botón **Examinar ...** para seleccionar el ejecutable del navegador web (por ejemplo, *C:\Archivos_de_programa(x86)\Google\Application\chrome.exe* para Chrome en Windows) - Haga clic en el botón **Aceptar** - - En la lista **Navegadores web externos** seleccione el navegador deseado y haga clic en el botón **Aplicar** - - Cerrar la ventana de preferencias + - En la lista **Navegadores web externos** selecciona el navegador deseado y haz clic en el botón **Aplicar** + - Cierra la ventana de preferencias [Empezar los ejercicios](00-introduction.md) diff --git a/docs/fr/01-bpmn-design.md b/docs/fr/01-bpmn-design.md index 8c79733..ff5526f 100644 --- a/docs/fr/01-bpmn-design.md +++ b/docs/fr/01-bpmn-design.md @@ -9,7 +9,7 @@ L'objectif de cet exercice est de créer une première version, simple, de la d A ce stade, le processus sera exécutable mais ne présentera pas encore "d'intérêt métier", car il ne disposera pas de données ni d'interfaces utilisateurs. Nous le compléterons dans les exercices suivants. -Note : la validation des diagrammes dans Bonita Studio doit être déclenchée manuellement : après avoir corrigé une erreur ou un avertissement, allez dans la zone de propriétés en bas du studio, puis dans l'onglet *Statut de validation* et cliquez sur le bouton **Rafraîchir**, ou allez dans le menu *Fichier* en haut du studio et cliquez sur l'option **Valider**. +> Note : la validation des diagrammes dans Bonita Studio doit être déclenchée manuellement : après avoir corrigé une erreur ou un avertissement, allez dans la zone de propriétés en bas du studio, puis dans l'onglet *Statut de validation* et cliquez sur le bouton **Rafraîchir**, ou allez dans le menu *Fichier* en haut du studio et cliquez sur l'option **Valider**. ## Instructions simples @@ -62,9 +62,9 @@ Note : la validation des diagrammes dans Bonita Studio doit être déclenchée m 1. Ajouter une porte exclusive *Demande approuvée ?* à la suite de la tâche *Valider demande* : - Depuis la tâche *Valider demande* sélectionnée, cliquer sur l'icon contextuel de porte logique, puis effectuer un glisser-déposer vers la droite. Une porte logique parallèle a été créée - ![création de porte logique depuis une tâche](images/ex01/ex1_02.png) + ![création de porte logique depuis une tâche](images/ex01/ex1_02.png) - Cliquer sur l'icon contextuel *Modifier le type de l'élément ...* (1) puis sélectionner *Porte logique exclusive* (2) - ![Modification du type de porte logique](images/ex01/ex1_03.png) + ![Modification du type de porte logique](images/ex01/ex1_03.png) - Renommer la porte exclusive ainsi créée en *Demande approuvée ?* 1. Créer une tâche automatique "Notifier approbation" à partir de la porte logique : diff --git a/docs/fr/02-timers.md b/docs/fr/02-timers.md index 3a0ebd3..ae06b87 100644 --- a/docs/fr/02-timers.md +++ b/docs/fr/02-timers.md @@ -1,11 +1,12 @@ --- title: Exercice 2 - Ajout d'une minuterie à la tâche de validation +--- ## Objectif -L'objectif de cet exercice est d'enrichir la modélisation du processus de demande de congés en créant une notification pour le valideur s'il n'a pas réalisé sa tâche à temps, sans pour autant interrompre le processus. + L'objectif de cet exercice est d'enrichir la modélisation du processus de demande de congés en créant une notification pour le valideur s'il n'a pas réalisé sa tâche à temps, sans pour autant interrompre le processus. -Cela est réalisé en ajoutant un événement de type "timer" dans le processus. + Cela est réalisé en ajoutant un événement de type "timer" dans le processus. > ⚠ Il est important de respecter strictement la casse et la syntaxe des noms techniques fournis dans les instructions. @@ -38,7 +39,7 @@ Cela est réalisé en ajoutant un événement de type "timer" dans le processus. 1. Ajouter un événement de fin après la tâche automatique et le nommer *Fin - rappel envoyé*. -1.Configurer l'événement de minuterie : +1. Configurer l'événement de minuterie : - Sélectionner l'événement de minuterie - Dans la zone de propriétés, l'onglet *Général* et sous-onglet *Général* sont déjà sélectionnés - Dans *Nom*, modifier le nom par défaut en *"Envoyer rappel après 5 sec"* @@ -47,6 +48,7 @@ Cela est réalisé en ajoutant un événement de type "timer" dans le processus. - Dans le cham *Secondes*, indiquer *"5"* - Cliquer sur **Générer l'expression d'une durée** - Cliquer sur **Terminer** + ![condition de la minuterie](images/ex07/ex7_03.png) - La condition de la minuterie va être automatiquement générée et apparaît dans l'onglet *Général* Le connecteur pour l'envoi du mail une fois la minuterie écoulée sera configuré plus tard. diff --git a/docs/fr/03-data-contract.md b/docs/fr/03-data-contract.md index bf630f4..43f5c22 100644 --- a/docs/fr/03-data-contract.md +++ b/docs/fr/03-data-contract.md @@ -19,19 +19,19 @@ Une fois complété, le processus sera exécutable, toujours en utilisant les fo 1. Dupliquer le diagramme de processus et le processus de l'exercice précédent, pour créer des versions 2.0.0. 1. Créer un objet métier *"DemandeConges"* puis les attributs suivants : -Nom | Type | Multiple | Obligatoire ---- | ---- | -------- | ----------- -*idDemandeur* | `Long` | ◻ | ☑ -*dateDebut* | `Date only` | ◻ | ☑ -*nombreJours* | `Entier` | ◻ | ☑ -*estApprouvee* | `Booléen` | ◻ | ◻ + Nom | Type | Multiple | Obligatoire + --- | ---- | -------- | ----------- + *idDemandeur* | `Long` | ◻ | ☑ + *dateDebut* | `Date only` | ◻ | ☑ + *nombreJours* | `Entier` | ◻ | ☑ + *estApprouvee* | `Booléen` | ◻ | ◻ 1. Déclarer une variable métier *demande* de type *DemandeConges* sur le pool. 1. Générer un contrat à l'instanciation du processus, en incluant les éléments suivants : -- dateDebut -- nombreJours + - dateDebut + - nombreJours Utiliser pour ce faire l'assistant *Ajouter à partir de données...*. @@ -39,7 +39,7 @@ Utiliser pour ce faire l'assistant *Ajouter à partir de données...*. 1. Ajouter un contrat sur l'étape *Valider demande* en utilisant l'assistant avec l'élément suivant : -- estApprouvee + - estApprouvee 1. Configurer la condition sur la transition *Oui* pour en faire l'attribut *estApprouvee* de l'objet *demande* @@ -64,26 +64,30 @@ Utiliser pour ce faire l'assistant *Ajouter à partir de données...*. Il s'agit d'un attribut, il débute par une minuscule. 1. Pour le *Type*, sélectionner **LONG**, pour *Multiple*, ne rien faire et pour *Obligatoire*, cocher la case. + + Nom | Type | Multiple | Obligatoire + --- | ---- | -------- | ----------- + *idDemandeur* | `LONG` | ◻ | ☑ 1. En haut du tableau, cliquer sur **Ajouter** puis ajouter les attributs suivants (B) : - Nom | Type | Multiple | Obligatoire - --- | ---- | -------- | ----------- - *dateDebut* | `DATE ONLY` | ◻ | ☑ - *nombreJours* | `INTEGER` | ◻ | ☑ - *estApprouvee* | `BOOLEAN` | ◻ | ◻ + Nom | Type | Multiple | Obligatoire + --- | ---- | -------- | ----------- + *dateDebut* | `DATE ONLY` | ◻ | ☑ + *nombreJours* | `INTEGER` | ◻ | ☑ + *estApprouvee* | `BOOLEAN` | ◻ | ◻ - ![définition du modèle de données métier](images/ex02/ex2_01.png) + ![définition du modèle de données métier](images/ex02/ex2_01.png) 1. Dans l'explorateur du projet, à gauche de l'écran, le message suivant s'est affiché pour indiquer qu'il faut déployer le Modèle de Données Métier : - ![message d'information déploiement du BDM](images/ex02/ex2_09.png) + ![message d'information déploiement du BDM](images/ex02/ex2_09.png) 1. Dans la toolbar de l'éditeur, cliquer sur le bouton ![icon déploiement](images/ex02/ex2_11.png). La fenêtre modale *Enregistrer la ressource* propose d'enregistrer les modifications avant de déployer. Cliquer sur **Enregistrer et déployer**. Le message suivant indique qu'il a été déployé avec succès. - ![message déploiement réussi du BDM](images/ex02/ex2_10.png) + ![message déploiement réussi du BDM](images/ex02/ex2_10.png) 1. Cocher l'option **Ne plus me montrer ce message** @@ -126,7 +130,7 @@ Utiliser pour ce faire l'assistant *Ajouter à partir de données...*. 1. Cliquer sur **Terminer** (pas sur **Terminer & Ajouter**). Sur la fenêtre *Génération de contrat*, cliquer **OK**. ![contrat défini pour le démarrage du processus](images/ex02/ex2_04.png) - La création du contrat crée également le script d'initialisation de la variable *demande*, exécuté lorsque le contrat est validé après remplissage du formulaire. + > La création du contrat crée également le script d'initialisation de la variable *demande*, exécuté lorsque le contrat est validé après remplissage du formulaire. ### Modifier l'initialisation de la variable métier *demande* pour récupérer automatiquement *idDemandeur* *iDemandeur* est le username de l'utilisateur initiateur de la nouvelle demande. diff --git a/docs/fr/06-extensions.md b/docs/fr/06-extensions.md index a90b1d0..b546105 100644 --- a/docs/fr/06-extensions.md +++ b/docs/fr/06-extensions.md @@ -58,11 +58,11 @@ L'objectif de cet exercice est d'ajouter des points d'extensions au projet Bonit - Lancer FakeSMTP en double cliquant sur le fichier JAR ou en lançant la commande suivante : `java -jar fakeSMTP-2.0.jar` - Une fois l'interface graphique de FakeSMTP affichée, configurer le port d'écoute sur *2525* et cliquer sur le bouton **Démarrer le serveur** - 1. Dupliquer le diagramme de processus de l'exercice précédent pour créer une version *3.1.0* + 1. Ouvrez le diagramme de processus version *3.1.0* 1. Sélectionner la tâche *Notifier approbation* - 1.Dans la zone de propriétés, cliquer sur l'onglet **Exécution**. Le sous-onglet **Connecteurs en entrée** est sélectionné. + 1. Dans la zone de propriétés, cliquer sur l'onglet **Exécution**. Le sous-onglet **Connecteurs en entrée** est sélectionné. 1. Cliquer sur **Ajouter...** Une fenêtre modale propose d'installer un connecteur à partir de la Bonita Marketplace @@ -126,7 +126,7 @@ L'objectif de cet exercice est d'ajouter des points d'extensions au projet Bonit 1. Lancer le processus à partir du studio (l'utilisateur *Walter Bates* sera utilisé) - 1 Soumettre le formulaire de *Saisie demande congés*. Les acteurs étant correctement configurés, la tâche *Valider demande de congés* n'est pas proposée à Walter Bates. + 1. Soumettre le formulaire de *Saisie demande congés*. Les acteurs étant correctement configurés, la tâche *Valider demande de congés* n'est pas proposée à Walter Bates. 1. Dans la barre de menu en haut à gauche, cliquer sur **Walter Bates**, puis sur **Déconnexion** : diff --git a/docs/fr/images/ex01/ex1_10.png b/docs/fr/images/ex01/ex1_10.png index 31db724..f72ea8c 100644 Binary files a/docs/fr/images/ex01/ex1_10.png and b/docs/fr/images/ex01/ex1_10.png differ diff --git a/docs/fr/images/preferences.png b/docs/fr/images/preferences.png index 38d1a20..3c65853 100644 Binary files a/docs/fr/images/preferences.png and b/docs/fr/images/preferences.png differ diff --git a/docs/fr/index.md b/docs/fr/index.md index b868b5b..2c2b947 100644 --- a/docs/fr/index.md +++ b/docs/fr/index.md @@ -18,9 +18,9 @@ Le Bonita Camp se compose : ## Prérequis 1. [Téléchargez](https://fr.bonitasoft.com/telechargez) et installez la dernière version du Studio Bonita. Pour plus de détails référez vous à la [documentation officielle](https://documentation.bonitasoft.com/bonita/latest/bonita-studio-download-installation) 1. Vous pouvez également optionnellement télécharger les corrections et les slides au format PDF depuis la [section "release" du projet GitHub bonita-camp](https://github.com/Bonitasoft-Community/bonita-camp/releases/latest) -1. Téléchargez [Fake SMTP](http://nilhcem.github.io/FakeSMTP/downloads/fakeSMTP-latest.zip). Cette application va être utilisée pour simuler un serveur de mail. +1. Téléchargez [Fake SMTP](https://nilhcem.com/FakeSMTP/download.html) (ou un autre serveur SMTP similaire). Ce sera utilisé pour simuler un serveur de mail. 1. Il est recommandé d'utiliser Chrome ou Firefox lors du développement pour bénéficier de l'outillage de test de ces navigateurs. - Edge et Safari sont également supportés (IE11 n'est plus supporté). Afin de savoir quel navigateur est utilisé par défaut par le Studio, cliquez sur le bouton **Lancer** ![icone lancer](images/icon-run.png). L'application utilisateur Bonita devrait s'ouvrir avec le navigateur par défaut de votre système d'exploitation. Vous pouvez configurer le Studio Bonita pour qu'il utilise un navigateur autre que celui par défaut : + Edge et Safari sont également supportés (IE11 n'est plus supporté). Afin de savoir quel navigateur est utilisé par défaut par le Studio, cliquez sur le bouton **Lancer** ![icone lancer](images/icon-run.png). L'application Bonita User devrait s'ouvrir avec le navigateur par défaut de votre système d'exploitation. Vous pouvez configurer le Studio Bonita pour qu'il utilise un navigateur autre que celui par défaut : - Dans le Studio cliquez sur le bouton **Préférences** ![icône préférences](images/preferences.png) - Dans la section **Web** cliquez sur **Navigateur** - Cliquez sur le bouton **Nouveau...** diff --git a/h5p/Bonita Camp Exercises.html b/h5p/AlternativeVersion/Bonita Camp Exercises.html similarity index 100% rename from h5p/Bonita Camp Exercises.html rename to h5p/AlternativeVersion/Bonita Camp Exercises.html diff --git a/h5p/Bonita University Camp.html b/h5p/AlternativeVersion/Bonita University Camp.html similarity index 100% rename from h5p/Bonita University Camp.html rename to h5p/AlternativeVersion/Bonita University Camp.html diff --git a/h5p/BonitaCampExercises.h5p b/h5p/AlternativeVersion/BonitaCampExercises.h5p similarity index 100% rename from h5p/BonitaCampExercises.h5p rename to h5p/AlternativeVersion/BonitaCampExercises.h5p diff --git a/h5p/BonitaUniversityCamp.h5p b/h5p/AlternativeVersion/BonitaUniversityCamp.h5p similarity index 100% rename from h5p/BonitaUniversityCamp.h5p rename to h5p/AlternativeVersion/BonitaUniversityCamp.h5p diff --git a/h5p/BonitaUniversityMakeYourOwnApp.h5p b/h5p/AlternativeVersion/BonitaUniversityMakeYourOwnApp.h5p similarity index 100% rename from h5p/BonitaUniversityMakeYourOwnApp.h5p rename to h5p/AlternativeVersion/BonitaUniversityMakeYourOwnApp.h5p diff --git a/h5p/Make your own app.html b/h5p/AlternativeVersion/Make your own app.html similarity index 100% rename from h5p/Make your own app.html rename to h5p/AlternativeVersion/Make your own app.html diff --git a/h5p/BonitaCamp-ES.h5p b/h5p/BonitaCamp-ES.h5p new file mode 100644 index 0000000..0cf59c5 Binary files /dev/null and b/h5p/BonitaCamp-ES.h5p differ diff --git a/h5p/BonitaCamp-ES.html b/h5p/BonitaCamp-ES.html new file mode 100644 index 0000000..69a56a3 --- /dev/null +++ b/h5p/BonitaCamp-ES.html @@ -0,0 +1,61 @@ + + + +
+ + + + + + + +