propiedad status siempre a completed

cancel
Showing results for 
Search instead for 
Did you mean: 
giorgio
Member II

propiedad status siempre a completed

Buenas, estoy ejecutando estos códigos en mi review_processdefinition.xml

<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:review">

    <swimlane name="initiator" />

    <start-state name="start">
        <task name="wf:submitReviewTask" swimlane="initiator" />
        <transition name="" to="review" />
    </start-state>

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{bpm_assignee}</actor>
        </assignment>   
    </swimlane>

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <event type="task-create">
                <script>
                    if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
                    if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
                </script>   
            </event>
        </task>
       <transition name="reject" to="rejected" />
        <transition name="approve" to="approved" />
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = bpm_assignee.properties["cm:email"];
           mail.parameters.subject = "Notificacion de tarea asignada" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = "No responda a este mensaje.La tarea "+ bpm_workflowDescription +" le ha sido ASIGNADA";
           mail.execute(bpm_package);

</script>
</action>
</event>

    </task-node>

    <task-node name="rejected">
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = initiator.properties["cm:email"];
           mail.parameters.subject = "Notificacion de Tarea" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = "No responda a este mensaje.La tarea "+ bpm_workflowDescription +" ha sido RECHAZADA";
           mail.execute(bpm_package);

</script>
</action>
</event>
        <task name="wf:rejectedTask" swimlane="initiator" />
        <transition name="" to="end" />
    </task-node>

    <task-node name="approved">
    <event type="node-enter">
<!– Update the status to Rejected when we enter this task –>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>

bpm_package.children[0].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();


           var mail = actions.create("mail");
           mail.parameters.to = initiator.properties["cm:email"];
           mail.parameters.subject = "Notificacion de Tarea" + bpm_workflowDescription;
           mail.parameters.from = "noreply@edu.gva.es";
           mail.parameters.text = "No responda a este mensaje.La tarea "+ bpm_workflowDescription +" ha sido APROBADA";
           mail.execute(bpm_package);

</script>
</action>
</event>

       
        <transition name="" to="end" />
    </task-node>

    <end-state name="end" />

</process-definition>

como se puede ver lo que hago es asignar propiedades del workflow a metadatos definidos en un tipo de contenido .

El problema que tengo es que me he dado cuenta que sea en el momento que sea de la tarea donde esté cambiando la propiedad status
el valor que se le asigna siempre al archivo es completed
es decir que aunque la tarea todavia ni si kiera haya sido aprobada, ni haya sido modificado su estado, el fichero ya aparece con el metadato status con el valor completed.

Alguien sabe decirme porque puede ser esto?

Gracias y saludos.
15 Replies
pjcaracuel_2349
Active Member II

Re: propiedad status siempre a completed

Buenas,

En un principio ni idea de porque puede estar pasando, haz una prueba completa y asegurate con un documento "limpio" que valores va añadiendo.

Lo que queria decirte yo, si lo que buscas es hacer una especie de traza del workflow, con lo que has puesto ahora mismo, siempre se quedaria el ultimo valor de la propiedad tanto en estado como tecnico. Para guardar toda la traza, yo declararia estas dos propiedades de tipo multivalor de forma que puedas guardar la traza de todo el proceso.

Saludos
giorgio
Member II

Re: propiedad status siempre a completed

Hola, gracias por el consejo Pedro,
una pregunta, al declararlas de tipo multivalor, te refieres a tipo list?, o es algun tipo de array que luego se va autoincrementando él solo?

voy a buscar a ver como se declaran de ese tipo que comentas

gracias.
pjcaracuel_2349
Active Member II

Re: propiedad status siempre a completed

Lo segundo, ya que normalmente los multivalor pueden ser de tipo list, te pongo un ejemplo:

<property name="cjp:dproc_listaAImplicadas">
               <type>d:text</type>
               <multiple>true</multiple>
               <constraints>
                  <constraint ref="cjp:listAreas" />
               </constraints>
            </property>

Saludos
giorgio
Member II

Re: propiedad status siempre a completed

y este constraint como lo dejas vacio?
<constraints>
<constraint ref="cjp:listAreas" />
</constraints>

quiero decir en la definicion
seria asi?

     <constraint name="my:listAreas" type="LIST">
        <parameter name="allowedValues">
            <list>
      <value></value>
            </list>
        </parameter>
     </constraint>
pjcaracuel_2349
Active Member II

Re: propiedad status siempre a completed

oki, porque la constraint la defino mas arriba

<constraint name="cjp:listAreas" type="LIST">
         <parameter name="allowedValues">
            <list>
               <value>Sistemas</value>
               <value>Planificacion</value>
               <value>Procesal</value>
               <value>Desarrollo</value>
               <value>Seguridad</value>
               <value>CSU</value>
               <value>Jefatura</value>
               <value>Contratacion</value>
               <value>Explotacion</value>
               <value>Calidad</value>
            </list>
         </parameter>
         <parameter name="caseSensitive">
            <value>true</value>
         </parameter>
      </constraint>

al definirla simplemente declaro la lista de valores, luego con lo que puse antes, defino la propiedad que hara uso de dicha lista de valores.

Saludos
giorgio
Member II

Re: propiedad status siempre a completed

si si, asi es como yo tenia definidas las mias, pero para guardar el historial es de entrada, no quiero tener valores ya en esa lista, lo que quiero es ir añadiendo yo,
para ello lo que tengo hecho ahora es que a la propiedad tal y como la tenia yo , solamente le he añadido el atributo multivalue,
pero todavia tengo que ahora que adivinar como se haria para que cada vez no asigne, si no que añada.

mira asi lo tengo ahora

<property name="mySmiley Tonguerioridad">
               <type>d:text</type>
               <multiple>true</multiple>
            </property>
            <property name="my:estado">
               <type>d:text</type>
               <multiple>true</multiple>
            </property>
            <property name="my:tecnico">
               <type>d:text</type>
               <multiple>true</multiple>
            </property>
         </properties>

con esto consigo una lista de estas que te salen co papelera en cada elemento y puedes ir añadiendo o borrando.

pero ahora me falta  cambiar el proceso del workflow para que no asigne:

bpm_package.children[0].properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
bpm_package.children[0].properties["my:estado"] = bpm_status;
bpm_package.children[0].properties["my:tecnico"] = bpm_assignee.properties["cm:userName"];
bpm_package.children[0].save();

esto cambiarlo por algun add o algo asi.
Saves por donde voy? por eso te comentaba lo de definir la lista sin valores.

muchas gracias

Saludos.
pjcaracuel_2349
Active Member II

Re: propiedad status siempre a completed

Buenas,

A ver por partes y si se me olvida algo me lo dices,

Para definir una lista sin valores, lo unico que cabe es definir la propiedad de tipo multiple y sin lista asociada, asi creo que te mostrara una caja de texto para que introduzcas un valor si lo deseas claro esta o lo hagas via codigo.

Para ñadir un valor en un atributo multiple sin lista asociada, entiendo que al considerarse como un array, deberias en contrar la posicion y añadir al final.
Yo lo unico que he hecho es recorrer los valores de una lista, te pongo el codigo por si te sirve de ayuda, el resto lo dejo para ti, asi cuando lo encuentres lo cuelgas aqui y ya sabremos todos un poco mas.
for each(prop in document.properties["custom:tuPropiedadMultivalor"])
{


Saludos
giorgio
Member II

Re: propiedad status siempre a completed

Buenas pjcaracuel, si ese codigo para recoger los valores ya lo habia visto en alguno de tus posts gracias por pasarlo y aclararlo.
Por otra parte ya he encontrado una manera sencilla de añadir valores a la lista, no se si seria la mejor, pero da el resultado esperado, y aunque
finalmente no la voy a utilizar, es decir no me voy a guardar todos los estados, os la pongo aqui, ya que parece que nadie se ha visto en la situacion de asignarla por codigo y me ha costado bastante encontrarla:

bpm_package.children.properties["mySmiley Tonguerioridad"] = bpm_workflowPriority;
de esta manera se añade un elemento a la lista si esta vacia, pero si no lo está se machaca cada vez el mismo elemento
pero si añadimos esto, ya conseguimos que el valor que tenemos se quede y que se añada un nuevo elemento
bpm_package.children.properties["mySmiley Tonguerioridad"][1] = bpm_workflowPriority;
para aumentarlo dinamicamente podemos utilizar el metod length que tenmos disponible, yo no lo he probado pero seria algo asi:
bpm_package.children.properties["mySmiley Tonguerioridad"] [bpm_package.children.properties["mySmiley Tonguerioridad"].length +1]=bpm_workflowPriority;
de manera que se incrementaria el solo cada vez que ejecutemos este paso y añadiria un elemento mas.


Con lo que he seguido investigando tambien es con el tema de que el status siempre me lo pone a completed, sea cual sea el estado de la tarea, con
este código:
bpm_package.children.properties["my:estado"] = bpm_status;


Y es que estoy pensando, que igual ese bpm_status no es realmente la variable que contiene el estado del workflow y que
quizás debe existir otra variable del stado actual,
aparte de que estoy pensando que lo que yo quiero guardar es la propiedad estado, es decir el valor de la lista desplegable que va cambiando el usuario.
Sabes la manera de hacerme con ese valor? si es una lista tendré que utilizar tu codigo foreach mmmmm
voy a probar, si no encuentro la manera te lo comentare.

Muchas gracias por todo Pedro, espero que te sirva esta pequeña solucion, o le sirva a alguien.

Saludos.
giorgio
Member II

Re: propiedad status siempre a completed

Buenas, desde la consola de workflows, he conseguido ver esto

Last command: desc task jbpm$110
Duration: 27ms
—– 
id: jbpm$110
name: wf:reviewTask
title: Revisar
description: Revisar documents per Aprovar-los o Rebutjar-los
state: IN_PROGRESS
path: jbpm$47-@
transitions: 2
transition: reject , title: Rebutjar , desc: Rebutjar
transition: approve , title: Aprovar , desc: Aprovar
properties: 16
{http://www.alfresco.org/model/bpm/1.0}context = workspace://SpacesStore/2aba7571-4b92-4a2b-9444-c6f4835d40d0
{http://www.alfresco.org/model/bpm/1.0}dueDate = null
{http://www.alfresco.org/model/bpm/1.0}description = hola
{http://www.alfresco.org/model/bpm/1.0}pooledActors = []
{http://www.alfresco.org/model/content/1.0}created = 2009-05-13 08:07:10.0
{http://www.alfresco.org/model/bpm/1.0}outcome =
{http://www.alfresco.org/model/bpm/1.0}status = Not Yet Started
{http://www.alfresco.org/model/bpm/1.0}completionDate = null
{http://www.alfresco.org/model/content/1.0}owner = usuario
{http://www.alfresco.org/model/bpm/1.0}packageActionGroup =
{http://www.alfresco.org/model/bpm/1.0}priority = 2
{http://www.alfresco.org/model/bpm/1.0}startDate = null
{http://www.alfresco.org/model/bpm/1.0}percentComplete = 0
{http://www.alfresco.org/model/bpm/1.0}taskId = 110
{http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/355b51f8-bb7d-4280-b0aa-b92a09393254
{http://www.alfresco.org/model/bpm/1.0}packageItemActionGroup = edit_package_item_actions

lo que me lleva a pensar que la propiedad que cojo con bpm_status es esta:
state: IN_PROGRESS
lo que me lleva a pensar que esta siempre es completed porque es el estado de la tarea concreta aprobar pero no la del workflow entero en si.
deduzco que tengo que coger esta otra propiedad.

{http://www.alfresco.org/model/bpm/1.0}status = Not Yet Started
el tema es como referirme a ella? he probado de muchas maneras ya pero no lo consigo

Gracias y saludos