Acceso a Tareas

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,

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

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

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

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.

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,

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.

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,

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

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

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}})