Acceso a Tareas

1
0
-1

Hola, estoy trabajando con bonita bpm 7.4.1, llevo poco tiempo y tengo muchas dudas, pero en estos momentos lo que necesito es saber como puedo acceder desde una página a una tarea concreta de un proceso ya iniciado.
Cuando selecciono un registro de una tabla puede modificar o cancelar dicho registro y para ello tengo dos tareas diferentes dentro del mismo proceso, he logado obtener el id de cada una de las tareas pero no sé como indicarle que tiene que ir directamente a esa tarea al pulsar en un botón. Supongo que tiene que ser a través de una url mediante Post para pasarle los datos pero no sé como formar esa url.

Gracias,

3 answers

1
0
-1
This one is the BEST answer!

POSIBILIDAD 1

Usuario: ../API/system/session/unusedid

Caso:
Variable External API: miTarea Valor: ../API/bpm/task/{{taskId}}
Variable Javascript expression: miCaso Valor: return $data.miTarea.caseId

POSIBLIDAD 2
Crear una variable de proceso con nombre casoId y que tenga como valor predeterminado:
import org.bonitasoft.engine.api.ProcessAPI;
import org.bonitasoft.engine.bpm.process.

ProcessAPI miAPI = apiAccessor.getProcessAPI()
ProcessInstance miCaso = miAPI.getProcessInstance(processInstanceId)
return miCaso.getId()*

En el formulario llamar a la variable de proceso con: ../API/bpm/activityVariable/{{taskId}}/casoId

Comments

Submitted by sistemas_aplica... on Mon, 09/18/2017 - 16:53

Genial, muchas gracias Javier, he probado con la primera opción para obtener el caso y me ha funcionado, estaba dando vueltas a lo mismo y no terminaba de dar con ello. Muchas gracias de verdad, estoy empezando y hay cosas que se me atascan mucho.

La segunda posibilidad no la he llegado aprobar pero viendola ahora, no se me había ocurrido aunque he hecho alguna cosa parecida. Son muchas opciones pero todavía no lo he hilado todo, me queda mucho que aprender.

Gracias de nuevo,

Submitted by etchegaray on Tue, 09/19/2017 - 09:47

Si te parece que la respuesta te ha servido, márcala como 'correcta'. De esa forma el resto sabe que la duda está resuelta.

Un saludo y que vaya bien el proyecto.

1
+1
-1

Con unas variables de tipo external API puedes conseguir los datos de usario y caso y con esos valores conseguir el array de tareas humanas de ese caso y para ese usuario.

Para pasar el valor al link en el campo que pone URL le pasas la variable (ten en cuenta que en lugar de *fx* en el lado derecho del campo tiene que estar puesta una *x*). Cuando pone *fx* coge el valor literal o expresión, no el valor de la varible. En fin, no sé si va por ahí tu duda.

El widget link admite también forma de botón, por si lo prefieres por el diseño.

Javier

Comments

Submitted by sistemas_aplica... on Mon, 09/18/2017 - 14:45

los datos de usuario sé obtenerlos, pero no doy con la forma de obtener el id del caso, creía que una variable de tipo url parameter {{caseId}} lo obtenía pero se queda en blanco.
De todas formas yo lo que hago es pasar en la url que llama al formulario un parametro con un valor que coge bien, pero luego no sé como acceder a él.

Gracias,

Submitted by morongarciakaty... on Mon, 05/06/2019 - 23:45

hola he seguido su ejemplo en mi formulario tengo un campo ID TAREA y se muestra el ID TAREA(siguiendo el ejemplo) ahí todo bien el problema que tengo es para insertar como puedo hacer

"insert into aprobacion(usuario,fecha,estado,caso)values ('Elmer ',getdate(),1,4861)"

solo me inserta cuando le paso por defecto los datos en donde dice "Elmer " debería guardar el usuario que se logea en bonita y donde "4861" debería ser id de la tarea pero no se como hacerlo para que lo inserte sql
no se como debo llamarlo

Submitted by etchegaray on Tue, 05/07/2019 - 09:59

No acabo de entender lo que preguntas. Por lo que parece quieres crear una cadana Insert con los datos de idTarea y usuario que consigues en otras variables. Si se trata de eso quizá la solución vaya por aquí:

"insert into aprobacion (usuario,fecha,estado,caso) values ({{userid}},getdate(),1,{{caseid}})

Esto suponiendo que has llamado userid y caseid a las variables donde se consulta el usario y el caso.

Espero que te sirva

Submitted by morongarciakaty... on Tue, 05/07/2019 - 16:14

hola gracias por tu aporte si lo que quiero es insertar esos datos en mi BD he intentado como me indicastes pero no inserta nada sigo teniendo el mismo problema
insert into aprobacion(usuario,fecha,estado,caso)
values('elmner',getdate(),1,{{micaso}})

1
0
-1

Puedes buscar las humanTask creando una variable 'external API' a la que podrías llamar "tareas" y que sería del estilo:
..//API/bpm/humanTask/k?c=1&p=0&f=state=ready&f=user_id={{userId}}&f=caseId={{caseId}} (donde {{userId}} y {{caseId}} serían dos variables con los datos de usuario y caso.

Esto te devuelve un array de tareas humanas, pero en principio solo tendrá un elemento. Para acceder al formulario podrías utilizar un link que apunte a:
'//bonita/portal/form/taskInstance/'+ tareas[0].id

Espero que te sirva de algo.

Javier Sánchez

Comments

Submitted by sistemas_aplica... on Mon, 09/18/2017 - 13:37

Gracias Javier, creo que iba bien encaminada, pero estaba utilizando un botón en lugar de un link y me daba errores, lo he cambiado por un link pasando por parametro un valor que necesito,y ya accede al formulario aunque ahora no sé como recoger ese parametro dentro del formulario.

Si me puedes arrojar algo de luz te lo agradecería mucho.

Notifications