Come posso controllare se un'associazione è vuota?

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

Come posso controllare se un'associazione è vuota?

Nel mio workflow ho fatto sì che vi fossero 3 tipi di documenti allegati, 2 obbligati e una terza associazione che permette di allegare più documenti opzionali:

<aspect name="psw:allegabile">
               <associations>
                    <association name="psw:docDRC">
                         <title>Domanda di Ricostruzione di Carriera</title>
                         <source>
                              <mandatory>true</mandatory>
                              <many>false</many>
                         </source>
                         <target>
                              <class>cm:content</class>
                              <mandatory>true</mandatory>
                              <many>false</many>
                         </target>
                    </association>
                    <association name="psw:docAS">
                         <title>Autocertificazione dei Servizi</title>
                         <source>
                              <mandatory>true</mandatory>
                              <many>false</many>
                         </source>
                         <target>
                              <class>cm:content</class>
                              <mandatory>true</mandatory>
                              <many>false</many>
                         </target>
                    </association>
                    <association name="psw:docAllegati">
                         <title>Documenti allegati</title>
                         <source>
                              <mandatory>false</mandatory>
                              <many>true</many>
                         </source>
                         <target>
                              <class>cm:content</class>
                              <mandatory>false</mandatory>
                              <many>true</many>
                         </target>
                    </association>
               </associations>
          </aspect>

I documenti devono essere spostati da una cartella all'altra, fatto che non crea problemi per psw:docDRC e psw:docAS (ho utilizzato la funzione move() di Javascript), tuttavia i documenti opzionali di psw:docAllegati generano un errore nel caso in cui non ve ne siano.

So che dovrei inserire un controllo if per verificare le l'array delle associazioni non sia vuoto, ma non riesco a capire in che modo, qualcuno saprebbe aiutarmi? 

In allegato la descrizione del workflow e il modello

1 Reply
mafaldap
Active Member II

Re: Come posso controllare se un'associazione è vuota?

Forse ho trovato una soluzione, il problema è che mi segnala la mancanza di una parentesi dopo la condizione... e io non vedo nessuna parentesi mancante:

<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="protocollaDRC">
         <extensionElements>
              <activiti:executionListener event="take" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
                   <activiti:field name="script">
                        <activiti:string>
                             <![CDATA[
                                  var gruppo = bpm_groupAssignee.properties["cm:authorityName"];
                                  var dest = companyhome.childByNamePath("/"+gruppo);
                                   psw_docDRC.move(dest);
                                  psw_docAS.move(dest);
                                  if (psw_docAllegati.children.length &gt; 0){
                                       for (var i = 0; i &lt; psw_docAllegati.children.length; i++){
                                            psw_docAllegati.children[i].move(dest);
                                       }
                                  }]]>

                        </activiti:string>
                   </activiti:field>
              </activiti:executionListener>
         </extensionElements>
    </sequenceFlow>

<userTask id="approvaDRC" name="Approva Domanda di Ricostruzione di Carriera" activiti:formKey="psw:activitiApprovaDRC">
         <extensionElements>
              <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener"> 
                    <activiti:field name="script"> 
                         <activiti:string> 
                                <![CDATA[if(task.getVariableLocal('psw_esitoValutazioneDRC') == 'Approvata'){
                             execution.setVariable('psw_proseguiDRC', true);
                              var dest = companyhome.childByNamePath("/Ragionerie dello Stato");
                              psw_docDRC.move(dest);
                              psw_docAS.move(dest);
                              if(psw_docAllegati.children.length &gt; 0){
                                       for(var i = 0; i &lt; psw_docAllegati.children.length; i++ ){
                                       psw_docAllegati.children[i].move(dest);
                                       }
                                  }
                             }else{
                             execution.setVariable('psw_proseguiDRC', false);
                             }]]>

                         </activiti:string> 
                    </activiti:field>
                    <activiti:field name="runAs">
                         <activiti:string>admin</activiti:string>
                    </activiti:field> 
               </activiti:taskListener>
         </extensionElements>
         <humanPerformer>
                <resourceAssignmentExpression>
                    <formalExpression>${bpm_assignee.properties.userName}</formalExpression>
                </resourceAssignmentExpression>
        </humanPerformer>
    </userTask>