jboss-user
[Arriba] [Todas las Listas]

[jboss-Usuario] [jBPM] - Re: tarea de usuario o tarea de guión ?

To: User development <jboss-user@xxxxxxxxxxxxxxx>
Subject: [jboss-Usuario] [jBPM] - Re: tarea de usuario o tarea de guión ?
From: Esteban Aliverti <do-not-reply@xxxxxxxxx>
Date: Wed, 07 Sep 2011 03:27:25 -0400
Auto-submitted: yes
Delivery-date: Wed, 07 Sep 2011 04:32:36 -0400
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <2-625146-3-90611-1315351964702.jivesbs.jivemailuser@http://community.jboss.org>
List-archive: <http://lists.jboss.org/pipermail/jboss-user>
List-help: <mailto:jboss-user-request@lists.jboss.org?subject=help>
List-id: The JBoss User main mailing list <jboss-user.lists.jboss.org>
List-post: <mailto:jboss-user@lists.jboss.org>
List-subscribe: <https://lists.jboss.org/mailman/listinfo/jboss-user>, <mailto:jboss-user-request@lists.jboss.org?subject=subscribe>
List-unsubscribe: <https://lists.jboss.org/mailman/listinfo/jboss-user>, <mailto:jboss-user-request@lists.jboss.org?subject=unsubscribe>
References: <2-625146-3-90611-1315351964702.jivesbs.jivemailuser@http://community.jboss.org>
Reply-to: The JBoss User main mailing list <jboss-user@xxxxxxxxxxxxxxx>
Sender: jboss-user-bounces@xxxxxxxxxxxxxxx
Esteban *Aliverti [*http://comunidad.*jboss.*org/Personas/*eaa] creó la discusión

"*Re: tarea de usuario o tarea de guión ?"

Para ver la discusión, visita: *http://comunidad.*jboss.*org/Mensaje/625194#625194

--------------------------------------------------------------
cuestiones Buenas, intentaré derramar algunos encienden aquí:

Primero aconsejar: NO UTILIZA TAREAS de GUIÓN!  :)  La mayoría de el tiempo, durante el diseño te cronometra ya tener la información si una tarea particular está yendo para ser manejado por un Usuario Humano o un Servicio externo. Aquí, "externo" puede ser: externo del proceso, *i.*e. Un *Java clase, o externo de la aplicación, como una web-servicio o similar.
*JBPM5 (y *BPMN2) tiene 2 maneras diferentes a *interact con Humano y Servicios. Tareas de usuario y Tareas (también tienes Tareas de Servicio, pero no me gustan. Puedes hacer una búsqueda sobre ellos también si te quiere  :) ). Cuándo diseñas vuestro proceso, necesitas escoger uno o el otro.
En *runtime, cuándo quieres ejecutar el proceso, necesitas registrar un *handler para cada cual de las Tareas (si Humano o no) presente en la definición de proceso. Cuándo la ejecución logra un nodo de Tarea, el *handler consigue ejecutado.
Estos *handlers tiene que implementar:

*org.*drools.*runtime.Proceso.*WorkItemHandler

Y tienen que ser registrados antes del proceso es ejecutado utilizando:

*ksession.*getWorkItemManager().*registerWorkItemHandler("NOMBRE_DE_NODO_de WI", nuevo *MyParticularHandler());

En el caso de Tareas Humanas, *jBPM ya viene con un *default *handler que utilizas para todas las Tareas Humanas nodos de vuestro proceso. El nombre de este *handler es *WSHumanTaskHandler. Este *handler comunicará con la Tarea Humana *Server la implementación proporcionada por *jBPM5 y crear una tarea allí cada tiempo es ejecutado. El *subclass *WSHumanTaskHandler que necesitas al uso dependerá en el protocolo de comunicación quieres utilizar entre el *handler y la Tarea Humana *Server (*AFAIK, en el momento 2 protocolos son apoyados: Mina y *JMS).

En vuestra situación particular donde quieres correr el mismo proceso y en algunos de las ejecuciones los nodos de Tareas Humanos pueden ser actuados por Servicios y en algunos otros Usuarios reales tienen que cuidar de ellos, diría que puedes conseguir este utilizando diferente *Handlers implementación para los Nodos de Tareas Humanos. 
Tan, cuándo las necesidades de proceso para correr con Usuarios reales, puedes registrar el *defautl Tarea Humana *Handler proporcionó por *jBPM5. Cuándo quieres *mock estos usuarios que utilizan Servicios, te puedes proporcionar propio *handler que conseguirá los parámetros del proceso, ejecutar cualquier lógica necesitan y regresar lo que la Tarea Humana original *handler regresó.  Tan, básicamente, serás emular una Tarea Humana que utiliza una costumbre *Handler.

Consideraciones mejores,
--------------------------------------------------------------

Respuesta a este mensaje por ir a Comunidad
[*http://comunidad.*jboss.*org/Mensaje/625194#625194]

Empieza una discusión nueva en *jBPM en Comunidad
[*http://comunidad.*jboss.*org/Escoge-contenedor!Entrada.*jspa?*contentType=1&*containerType=14&contenedor=2034]

Esteban Aliverti [http://community.jboss.org/people/eaa] created the discussion

"Re: user task or script task ?"

To view the discussion, visit: http://community.jboss.org/message/625194#625194

--------------------------------------------------------------
Good questions, I will try to shed some light here:

First advise: DO NOT USE SCRIPT TASKS!  :)  Most of the times, during design time you already have the information if a particular task is going to be handled by a Human User or an external Service. Here, "external" can be: external of the process, i.e. a Java class, or external of the application, like a web-service or similar.
JBPM5 (and BPMN2) has 2 different ways to interact with Human and Services. User Tasks and Tasks (You also have Service Tasks, but I don't like them. You can do a research about them too if you want to  :) ). When you design your process, you need to choose one or the other.
In runtime, when you want to execute the process, you need to register a handler for each of the Tasks (whether Human or not) present in the process definition. When the execution reaches a Task node, the handler gets executed.
These handlers must implement:

org.drools.runtime.process.WorkItemHandler

and they must be registered before the process is executed using:

ksession.getWorkItemManager().registerWorkItemHandler("NAME_OF_WI_NODE", new MyParticularHandler());

In the case of Human Tasks, jBPM already comes with a default handler that you use for all the Human Tasks nodes of your process. The name of this handler is WSHumanTaskHandler. This handler will communicate with the Human Task Server implementation provided by jBPM5 and create a task there every time it is executed. The subclass WSHumanTaskHandler that you need to use will depend in the communication protocol you want to use between the handler and the Human Task Server (AFAIK, at the moment 2 protocols are supported: Mina and JMS).

In your particular situation where you want to run the same process and in some of the executions the Human Tasks nodes can be performed by Services and in some other real Users must take care of them, I would say that you can achieve this using different Handlers implementation for the Human Tasks Nodes. 
So, when the process needs to run with real Users, you can register the defautl Human Task Handler provided by jBPM5. When you want to mock these users using Services, you can provide you own handler that will get the parameters from the process, execute whatever logic they need and return what the original Human Task handler returned.  So, basically, you will be emulating a Human Task using a custom Handler.

Best Regards,
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/625194#625194]

Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

_______________________________________________
*jboss-Usuario *mailing lista
*jboss-user@xxxxxxxxxxxxxxx
*https://listas.*jboss.*org/*mailman/*listinfo/*jboss-Usuario
_______________________________________________
jboss-user mailing list
jboss-user@xxxxxxxxxxxxxxx
https://lists.jboss.org/mailman/listinfo/jboss-user
<Anterior por Tema] Tema Actual [Siguiente por Tema>