AnsweredAssumed Answered

workflow avancé

Question asked by deedo on Jul 7, 2009
Bonjour,

J'ai quelques petites questions concernant les workflows avancés.
Je travaille avec Alfresco 3.0b, serveur linux Debian, client XP, BDD postgresql.

J'ai un workflow où une personne A demande la relecture d'un doc à 2 personnes B et C (ici c'est la même personne l'admin pour faciliter les tests). Si B et C approuvent le document, A peut valider la relecture et le worflow prend fin, sinon une autre demande de relecture est envoyé à B et C et le document est déplacé dans un autre espace.

Pour cela,
j'ai créé les fichiers testModel.xml, test_processdefinition.xml dans tomcat/webapps/alfresco/WEB-INF/classes/alfresco/workflow
j'ai modifié le fichier workflow-messages.properties dans tomcat/webapps/alfresco/WEB-INF/classes/alfresco/workflow
j'ai modifié le fichier workflow-context.xml dans tomcat/webapps/alfresco/WEB-INF/classes/alfresco
j'ai modifié le fichier web-client-config-custom.xml dans tomcat/shared/classes/alfresco/extension

testModel.xml :

<?xml version="1.0" encoding="utf-8"?>
<model name="scwf:workflowmodel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
  <imports>
    <import uri="http://www.alfresco.org/model/dictionary/1.0"
    prefix="d" />
    <import uri="http://www.alfresco.org/model/bpm/1.0"
    prefix="bpm" />
  </imports>
  <namespaces>
    <namespace uri="alfresco.extension.workflows.simple-process"
    prefix="scwf" />
  </namespaces>
  <types>
    <type name="scwf:submitReviewTask">
      <parent>bpm:startTask</parent>
    </type>
    <type name="scwf:assignee1Review">
      <parent>bpm:workflowTask</parent>
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>read_package_item_actions</default>
        </property>
      </overrides>
    </type>
    <type name="scwf:assignee2Review">
      <parent>bpm:workflowTask</parent>
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>read_package_item_actions</default>
        </property>
      </overrides>
    </type>
    <type name="scwf:revise">
      <parent>bpm:workflowTask</parent>
      <overrides>
        <property name="bpm:packageItemActionGroup">
          <default>edit_and_delete_wcm_package_item_actions</default>
        </property>
      </overrides>
    </type>
  </types>
</model>

test_processdefinition.xml :

<?xml version="1.0" encoding="utf-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="scwf:test">
<!–Definition des swimlanes–>
<swimlane name="initiator"></swimlane>
<swimlane name="assignee1">
  <assignment actor-id="admin" />
</swimlane>
<swimlane name="assignee2">
  <assignment actor-id="admin" />
</swimlane>
<!–Definition du processus–>
<start-state name="start">
  <task name="scwf:submitReviewTask" swimlane="initiator" />
  <transition name="submit" to="Submit">
    <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– Ajout de l'aspect versionable au document concerne –>
      <script>var test = bpm_package; var doc = test.children[0];
      doc.addAspect("cm:versionable"); doc.save();</script>
    </action>
  </transition>
</start-state>
<node name="Submit">
  <event type="node-enter">
    <script>
      <variable name="approveCount" access="read,write" />
      <expression>approveCount=0;</expression>
    </script>
  </event>
  <transition name="fork1" to="fork1" />
</node>
<fork name="fork1">
  <transition name="Assignee1 review" to="Assignee1 review">
    <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– Envoie du mail a assignee1 –>
      <script>var mail = actions.create("mail"); mail.parameters.to
      = "michael.vigoureux@eds.com"; mail.parameters.subject =
      "Reception rapport au college a valider";
      mail.parameters.from = initiator.properties.email;
      mail.parameters.text = "Vous venez de recevoir un nouveau
      rapport au college a valider.";
      mail.execute(bpm_package);</script>
    </action>
  </transition>
  <transition name="Assignee2 review" to="Assignee2 review">
    <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– Envoie du mail a assignee2 –>
      <script>var mail = actions.create("mail"); mail.parameters.to
      = "mickael.lenormand@effitic.com"; mail.parameters.subject =
      "Reception rapport au college a valider";
      mail.parameters.from = initiator.properties.email;
      mail.parameters.text = "Vous venez de recevoir un nouveau
      rapport au college a valider.";
      mail.execute(bpm_package);</script>
    </action>
  </transition>
</fork>
<task-node name="Assignee1 review">
  <task name="scwf:assignee1Review" swimlane="assignee1" />
  <transition name="approve" to="join1">
    <script>
      <variable name="approveCount" access="read,write" />
      <expression>approveCount = approveCount + 1;</expression>
    </script>
  </transition>
  <transition name="reject" to="join1" />
</task-node>
<task-node name="Assignee2 review">
  <task name="scwf:assignee2Review" swimlane="assignee2" />
  <transition name="approve" to="join1">
    <script>
      <variable name="approveCount" access="read,write" />
      <expression>approveCount = approveCount + 1;</expression>
    </script>
  </transition>
  <transition name="reject" to="join1" />
</task-node>
<join name="join1">
  <transition name="all approve" to="All approve" />
</join>
<decision name="All approve">
  <transition name="reject" to="Revise">
    <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– Envoie du mail a initiator si son rapport est rejete –>
      <script>var mail = actions.create("mail"); mail.parameters.to
      = initiator.properties.email; mail.parameters.subject =
      "Rapport au college rejete"; mail.parameters.from =
      initiator.properties.email; mail.parameters.text = "Votre
      rapport au college a ete rejete. Vous devez le
      retravailler."; mail.execute(bpm_package);</script>
    </action>
  </transition>
  <transition name="end1" to="end1">
    <condition>#{approveCount == 2}</condition>
    <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– Envoie du mail a initiator si son rapport est approuve–>
      <script>var mail = actions.create("mail"); mail.parameters.to
      = initiator.properties.email; mail.parameters.subject =
      "Rapport au college approuve"; mail.parameters.from =
      initiator.properties.email; mail.parameters.text = "Votre
      rapport au college a ete approuve.";
      mail.execute(bpm_package);
     </script>
    </action>
  </transition>
</decision>
<task-node name="Revise">
  <task name="scwf:revise" swimlane="initiator"></task>
  <transition name="submit" to="Submit">
  <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">

      <!– deplacement du fichier–>
      <script>
      
        var dest = bpm_context.parent.childByNamePath("en cours de relecture");

        if(dest!=null) {
           for (var i = 0; i &lt; bpm_package.children.length; i++)
           {
              bpm_package.children[i].move(dest);
           }
        }
     </script>
    </action>
  </transition>
  <transition name="done" to="end1"></transition>
</task-node>
<end-state name="end1"/>
</process-definition>

workflow-messages.properties :


# Display labels for out-of-the-box Content-oriented Workflows

#
# Review & Approve Workflow
#

wf_review.workflow.title=Review & Approve
wf_review.workflow.description=Review & approval of content

# Review & Approve Task Definitions

wf_workflowmodel.type.wf_submitReviewTask.title=Start Review
wf_workflowmodel.type.wf_submitReviewTask.description=Submit documents for review & approval
wf_workflowmodel.type.wf_reviewTask.title=Review
wf_workflowmodel.type.wf_reviewTask.description=Review Documents to Approve or Reject them
wf_workflowmodel.type.wf_rejectedTask.title=Rejected
wf_workflowmodel.type.wf_rejectedTask.description=Rejected
wf_workflowmodel.type.wf_approvedTask.title=Approved
wf_workflowmodel.type.wf_approvedTask.description=Approved

# Review & Approve Process Definitions

wf_review.node.start.title=Start
wf_review.node.start.description=Start
wf_review.node.review.title=Review
wf_review.node.review.description=Review
wf_review.node.review.transition.reject.title=Reject
wf_review.node.review.transition.reject.description=Reject
wf_review.node.review.transition.approve.title=Approve
wf_review.node.review.transition.approve.description=Approve
wf_review.node.rejected.title=Rejected
wf_review.node.rejected.description=Rejected
wf_review.task.wf_rejectedTask.title=Rejected
wf_review.task.wf_rejectedTask.description=Rejected
wf_review.node.approved.title=Approved
wf_review.node.approved.description=Approved
wf_review.task.wf_approvedTask.title=Approved
wf_review.task.wf_approvedTask.description=Approved
wf_review.node.end.title=End
wf_review.node.end.description=End


#
# Parallel Review Workflow
#

wf_parallelreview.workflow.title=Parallel Review & Approve
wf_parallelreview.workflow.description=Parallel Review & approval of content

# Parallel Review & Approve Task Definitions

wf_workflowmodel.type.wf_submitParallelReviewTask.title=Start Parallel Review
wf_workflowmodel.type.wf_submitParallelReviewTask.description=Submit documents for review & approval to a list of people
wf_workflowmodel.property.wf_requiredApprovePercent.title=Required approval percentage
wf_workflowmodel.property.wf_requiredApprovePercent.description=Percentage of reviewers who must approve for approval
wf_workflowmodel.type.wf_rejectedParallelTask.title=Rejected
wf_workflowmodel.type.wf_rejectedParallelTask.description=Rejected
wf_workflowmodel.type.wf_approvedParallelTask.title=Approved
wf_workflowmodel.type.wf_approvedParallelTask.description=Approved
wf_workflowmodel.property.wf_reviewerCount.title=Number of reviewers
wf_workflowmodel.property.wf_reviewerCount.description=Number of reviewers
wf_workflowmodel.property.wf_requiredPercent.title=Required approval percentage
wf_workflowmodel.property.wf_requiredPercent.description=Required approval percentage
wf_workflowmodel.property.wf_approveCount.title=Reviewers who approved
wf_workflowmodel.property.wf_approveCount.description=Reviewers who approved
wf_workflowmodel.property.wf_actualPercent.title=Actual approval percentage
wf_workflowmodel.property.wf_actualPercentdescription=Actual approval percentage

# Group Review & Approve Process Definitions

wf_parallelreview.node.review.transition.reject.title=Reject
wf_parallelreview.node.review.transition.reject.description=Reject
wf_parallelreview.node.review.transition.approve.title=Approve
wf_parallelreview.node.review.transition.approve.description=Approve


#
# Pooled Review Workflow
#

wf_reviewpooled.workflow.title=Pooled Review & Approve
wf_reviewpooled.workflow.description=Pooled review & approval of content

wf_workflowmodel.type.wf_submitGroupReviewTask.title=Start Group Review
wf_workflowmodel.type.wf_submitGroupReviewTask.description=Submit documents for review & approval to a group of people

wf_reviewpooled.node.review.transition.reject.title=Reject
wf_reviewpooled.node.review.transition.reject.description=Reject
wf_reviewpooled.node.review.transition.approve.title=Approve
wf_reviewpooled.node.review.transition.approve.description=Approve


#
# Parallel Group Review Workflow
#

wf_parallelgroupreview.workflow.title=Group Review & Approve
wf_parallelgroupreview.workflow.description=Group review & approval of content

wf_parallelgroupreview.node.review.transition.reject.title=Reject
wf_parallelgroupreview.node.review.transition.reject.description=Reject
wf_parallelgroupreview.node.review.transition.approve.title=Approve
wf_parallelgroupreview.node.review.transition.approve.description=Approve


#
# Adhoc Task Workflow
#

wf_adhoc.workflow.title=Adhoc Task
wf_adhoc.workflow.description=Assign task to colleague

# Adhoc Task Definitions

wf_workflowmodel.type.wf_submitAdhocTask.title=Start Adhoc Task
wf_workflowmodel.type.wf_submitAdhocTask.description=Allocate task to colleague
wf_workflowmodel.property.wf_notifyMe.title=Notify Me
wf_workflowmodel.property.wf_notifyMe.description=Notify me when task is complete
wf_workflowmodel.type.wf_adhocTask.title=Adhoc Task
wf_workflowmodel.type.wf_adhocTask.description=Adhoc Task allocated by colleague
wf_workflowmodel.type.wf_completedAdhocTask.title=Adhoc Task Completed
wf_workflowmodel.type.wf_completedAdhocTask.description=Adhoc Task Completed

# Test Definitions
scwf_test.workflow.title=Rapport au collège
scwf_test.workflow.description=Procédure d'envoie d'un rapport au collège
scwf_workflowmodel.type.scwf_submitReviewTask.title=Validation du rapport
scwf_workflowmodel.type.scwf_submitReviewTask.description=Validation d'un
rapport au collège
scwf_workflowmodel.type.scwf_assignee1Review.title=Validation Mr Boucqueau
scwf_workflowmodel.type.scwf_assignee1Review.description=Validation par Mr
Boucqueau
scwf_workflowmodel.type.scwf_assignee2Review.title=Validation Mr Gevenois
scwf_workflowmodel.type.scwf_assignee1Review.description=Validation par Mr
Gevenois
scwf_workflowmodel.type.scwf_revise.title=Révision
scwf_workflowmodel.type.scwf_revise.description=Révision du document

workflow-context.xml :

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN'
'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <!–                                 –>
  <!– Workflow Service Implementation –>
  <!–                                 –>
  <bean id="workflowDeployer"
  class="org.alfresco.repo.workflow.WorkflowDeployer"
  abstract="true">
    <property name="transactionService" ref="transactionService" />
    <property name="authenticationComponent"
    ref="authenticationComponent" />
    <property name="workflowService" ref="WorkflowService" />
    <property name="dictionaryDAO" ref="dictionaryDAO" />
    <property name="allowWrite">
      <value>${server.transaction.allow-writes}</value>
    </property>
    <property name="nodeService" ref="NodeService" />
    <property name="searchService" ref="SearchService" />
    <property name="namespaceService" ref="NamespaceService" />
  </bean>
  <bean id="workflowServiceImpl"
  class="org.alfresco.repo.workflow.WorkflowServiceImpl">
    <property name="authorityService" ref="authorityService" />
    <property name="BPMEngineRegistry" ref="bpm_engineRegistry" />
    <property name="workflowPackageComponent"
    ref="workflowPackageImpl" />
    <property name="nodeService" ref="nodeService" />
    <property name="contentService" ref="contentService" />
    <property name="avmSyncService" ref="AVMSyncService" />
    <property name="dictionaryService" ref="dictionaryService" />
    <property name="protectedNodeService" ref="NodeService" />
  </bean>
  <bean id="workflowPackageImpl"
  class="org.alfresco.repo.workflow.WorkflowPackageImpl">
    <property name="importerBootstrap" ref="spacesBootstrap" />
    <property name="searchService" ref="searchService" />
    <property name="nodeService" ref="nodeService" />
    <property name="permissionService" ref="permissionService" />
    <property name="namespaceService" ref="namespaceService" />
    <property name="tenantService" ref="tenantService" />
  </bean>
  <bean id="workflowInterpreter"
  class="org.alfresco.repo.workflow.WorkflowInterpreter">
    <property name="workflowService" ref="WorkflowService" />
    <property name="AVMService" ref="AVMService" />
    <property name="AVMSyncService" ref="AVMSyncService" />
    <property name="nodeService" ref="NodeService" />
    <property name="namespaceService" ref="namespaceService" />
    <property name="personService" ref="PersonService" />
    <property name="authorityDAO" ref="authorityDAO" />
    <property name="transactionService" ref="transactionService" />
    <property name="fileFolderService" ref="FileFolderService" />
    <property name="tenantService" ref="tenantService" />
  </bean>
  <bean id="workflowInterpreterHelp"
  class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
    <property name="resourceBundles">
      <list>
        <value>alfresco.messages.workflow-interpreter-help</value>
      </list>
    </property>
  </bean>
  <!–                 –>
  <!– Workflow Action –>
  <!–                 –>
  <bean id="start-workflow"
  class="org.alfresco.repo.workflow.StartWorkflowActionExecuter"
  parent="action-executer">
    <property name="publicAction">
      <value>false</value>
    </property>
    <property name="namespaceService" ref="NamespaceService" />
    <property name="nodeService" ref="NodeService" />
    <property name="workflowService" ref="WorkflowService" />
  </bean>
  <!–                       –>
  <!– Alfresco BPM Registry –>
  <!–                       –>
  <bean id="bpm_engineRegistry"
  class="org.alfresco.repo.workflow.BPMEngineRegistry"></bean>
  <bean id="bpm_engine"
  class="org.alfresco.repo.workflow.BPMEngine" abstract="true">
    <property name="BPMEngineRegistry" ref="bpm_engineRegistry" />
  </bean>
  <!–                     –>
  <!– jBPM Implementation –>
  <!–                     –>
  <bean id="jbpm_configuration"
  class="org.alfresco.repo.workflow.jbpm.AlfrescoJbpmConfigurationFactoryBean">

    <property name="sessionFactory" ref="sessionFactory" />
    <property name="configuration"
    value="classpath:org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml" />
  </bean>
  <bean id="jbpm_template"
  class="org.alfresco.repo.workflow.jbpm.JBPMTransactionTemplate">
    <constructor-arg index="0" ref="jbpm_configuration" />
  </bean>
  <bean id="jbpm_engine"
  class="org.alfresco.repo.workflow.jbpm.JBPMEngine"
  parent="bpm_engine">
    <property name="engineId" value="jbpm" />
    <property name="JBPMTemplate" ref="jbpm_template" />
    <property name="dictionaryService" ref="DictionaryService" />
    <property name="namespaceService" ref="namespaceService" />
    <property name="nodeService" ref="nodeService" />
    <property name="tenantService" ref="tenantService" />
    <property name="messageService" ref="messageService" />
    <property name="personService" ref="personService" />
    <property name="authorityDAO" ref="authorityDAO" />
    <property name="serviceRegistry" ref="ServiceRegistry" />
    <property name="companyHomeStore">
      <value>${spaces.store}</value>
    </property>
    <property name="companyHomePath">
      <value>/${spaces.company_home.childname}</value>
    </property>
    <property name="unprotectedSearchService"
    ref="searchService" />
  </bean>
  <!– Workflow Patch Deployer –>
  <bean id="workflowPatchDeployer" parent="workflowDeployer"
  singleton="false" />
  <!– Deploy any additional workflows definitions from repo –>
  <!– note: needs to match bootstrap-context.xml locations (customWorkflowDefsSpace.xml) –>
  <bean id="customWorkflowDefsRepositoryLocation"
  class="org.alfresco.repo.dictionary.RepositoryLocation">
    <!– other properties will be defaulted, but can be overriden here –>
    <property name="path">
      <value>
      /app:company_home/app:dictionary/app:workflow_defs</value>
    </property>
  </bean>
  <!–  Workflow Definition Type (bpm:workflowDefinition) –>
  <bean id="workflowDefinitionType"
  class="org.alfresco.repo.workflow.WorkflowDefinitionType"
  init-method="init">
    <property name="policyComponent" ref="policyComponent" />
    <property name="workflowDeployer" ref="workflowBootstrap" />
  </bean>
  <!– Deploiement du workflow test –>
  <!– Deploiement de la definition –>
  <bean id="extension.workflows.workflowBootstrap"
  parent="workflowDeployer">
    <property name="workflowDefinitions">
      <list>
        <props>
          <prop key="engineId">jbpm</prop>
          <prop key="location">
          alfresco/workflow/test_processdefinition.xml
        </prop>
          <prop key="mimetype">text/xml</prop>
          <prop key="redeploy">true</prop>
        </props>
      </list>
    </property>
  </bean>
  <!– Deploiement du modele –>
  <bean id="extension.dictionaryBootstrap"
  parent="dictionaryModelBootstrap"
  depends-on="dictionaryBootstrap">
<!–<bean id="extension.workflows.workflowBootstrap"
  parent="workflowDeployer">–>

    <property name="models">
      <list>
        <value>alfresco/workflow/testModel.xml</value>
      </list>
    </property>
  </bean>
  <!– deploiement du .prop –>
  <bean id="extension.workflowBootstrap" parent="workflowDeployer">
    <property name="labels">
      <list>
        <value>alfresco.workflow.workflow-messages</value>
      </list>
    </property>
  </bean>
</beans>

web-client-config-custom.xml :

<alfresco-config>
<!– Example of overriding the from email address –>
<config>
  <client>
    <from-email-address>ecm@deb.effitic</from-email-address>
    <search-max-results>100</search-max-results>
  </client>
</config>
<!– Example of adding languages to the list in the login page –>
<config evaluator="string-compare" condition="Languages">
  <languages>
  <!–
         <language locale="ca_ES">Catalan</language>
         <language locale="hr_HR">Croatian</language>
         <language locale="cs_CZ">Czech</language>
         <language locale="da_DK">Danish</language>
         <language locale="de_DE">German</language>
         <language locale="es_ES">Spanish</language>
         <language locale="el_GR">Greek</language>
         <language locale="fi_FI">Finnish</language>–>
  <language locale="fr_FR">French</language>
  <!–<language locale="it_IT">Italian</language>
         <language locale="ja_JP">Japanese</language>
         <language locale="du_NL">Dutch</language>
         <language locale="pl_PL">Polish</language>
         <language locale="pt_PT">Portuguese</language>
         <language locale="pt_BR">Portuguese (Brazilian)</language>
         <language locale="ru_RU">Russian</language>
         <language locale="sv_SV">Swedish</language>
         <language locale="tr_TR">Turkish</language>
         <language locale="zh_CN">Simplified Chinese</language>–></languages>
</config>
<!– Example of configuring advanced search –>
<!–
   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
         </content-types>
         <custom-properties>
            <meta-data aspect="app:simpleworkflow" property="app:approveStep" />
         </custom-properties>
      </advanced-search>
   </config>
   –>
<!– Example of changing the sort direction for a view in the client –>
<!–
   <config evaluator="string-compare" condition="Views">
      <views>
         <view-defaults>
            <topic>
               <sort-direction>ascending</sort-direction>
            </topic>
         </view-defaults>
      </views>
   </config>
   –>
<!– Example of adding a custom icon to the Create Space dialog –>
<!–
   <config evaluator="string-compare" condition="cm:folder icons">
      <icons>
         <icon name="space-icon-custom" path="/images/icons/space-icon-custom.gif" />
      </icons>
   </config>
   –>
<!– The config below shows how to incorporate the example model–>
<!– into the web client, for this to work you will need to –>
<!– rename example-model-context.xml.sample to example-model-context.xml –>
<!–
   <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="my:sop" />
      </content-types>
   </config>

   <config evaluator="node-type" condition="my:sop">
      <property-sheet>
         <show-property name="mimetype" display-label-id="content_type"
                        component-generator="MimeTypeSelectorGenerator" />
         <show-property name="size" display-label-id="size"
                        converter="org.alfresco.faces.ByteSizeConverter"
                        show-in-edit-mode="false" />              
         <show-property name="my:publishedDate" />
         <show-association name="my:signOff" />
         <show-property name="my:authorisedBy" />
         <show-child-association name="my:processSteps" />
      </property-sheet>
   </config>

   <config evaluator="aspect-name" condition="my:imageClassification">
      <property-sheet>
         <show-property name="my:width"/>
         <show-property name="my:height"/>
         <show-property name="my:resolution"/>
      </property-sheet>
   </config>

   <config evaluator="string-compare" condition="Action Wizards">
      <aspects>
         <aspect name="my:imageClassification"/>
      </aspects>
   </config>

   <config evaluator="string-compare" condition="Advanced Search">
      <advanced-search>
         <content-types>
            <type name="my:sop" />
         </content-types>
         <custom-properties>
            <meta-data type="my:sop" property="my:authorisedBy" />
            <meta-data aspect="my:imageClassification" property="my:resolution" />
         </custom-properties>
      </advanced-search>
   </config>
   –>
<!– Definition des interfaces utilisateurs utilisees pour le workflow test
–>
<!– Interface pour la tache scwf:submitReviewTask–>
<config evaluator="node-type" condition="scwf:submitReviewTask"
replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general"
    componentgenerator=" HeaderSeparatorGenerator" />
    <show-property name="bpm:workflowDescription"
    componentgenerator=" TextAreaGenerator" />
  </property-sheet>
</config>
<!– Interface pour la tache scwf:assignee1Review –>
<config evaluator="node-type" condition="scwf:assignee1Review"
replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general"
    componentgenerator=" HeaderSeparatorGenerator" />
    <show-property name="bpm:description"
    componentgenerator=" TextAreaGenerator" read-only="true" />
    <show-property name="bpm:comment"
    componentgenerator=" TextAreaGenerator" />
  </property-sheet>
</config>
<!– Interface pour la tache scwf:assignee2Review –>
<config evaluator="node-type" condition="scwf:assignee2Review"
replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general"
    componentgenerator=" HeaderSeparatorGenerator" />
    <show-property name="bpm:description"
    componentgenerator=" TextAreaGenerator" read-only="true" />
    <show-property name="bpm:comment"
    componentgenerator=" TextAreaGenerator" />
  </property-sheet>
</config>
<!– Interface pour la tache scwf:revise –>
<config evaluator="node-type" condition="scwf:revise"
replace="true">
  <property-sheet>
    <separator name="sep1" display-label-id="general"
    componentgenerator=" HeaderSeparatorGenerator" />
    <show-property name="bpm:description"
    componentgenerator=" TextAreaGenerator" read-only="false" />
    <show-property name="bpm:comment"
    componentgenerator=" TextAreaGenerator" />
  </property-sheet>
</config></alfresco-config>

Cela semble marcher mais je trouve des erreurs de ce type dans les logs et ne sais pas comment les interpréter:

13:53:27,849 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,851 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@1355ec8: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,851 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,851 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@e1daa3: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,851 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,865 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@1d9132b: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,901 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,902 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@18684e7: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,907 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
13:53:27,907 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@93c01f: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a

De plus, j'aimerai avoir un chemin absolu j'ai donc testé dans le test_processdefinition.xml ceci mais cela ne marche pas:

<!– Deplacement du fichier –>
<script>
var test = bpm_package;
var doc = test.children[0];
var myNode = companyhome.childByNamePath("User Homes/XXX");
doc.move(myNode);
</script>

Cela me génére un truc de ce genre (accompagné parfois d'une erreur de requête SQL dans la console linux) ^^ :

12:12:15,706 ERROR [org.jbpm.graph.def.GraphElement] action threw exception: Failed to execute supplied script: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
org.alfresco.scripts.ScriptException: Failed to execute supplied script: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:283)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:257)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:245)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy156.executeScriptString(Unknown Source)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.executeScript(AlfrescoJavaScript.java:178)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.execute(AlfrescoJavaScript.java:132)
   at org.jbpm.graph.def.Action.execute(Action.java:122)
   at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
   at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
   at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
   at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
   at org.jbpm.graph.def.Transition.take(Transition.java:138)
   at org.jbpm.graph.def.Node.leave(Node.java:394)
   at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:209)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:147)
   at org.jbpm.graph.node.TaskNode$$EnhancerByCGLIB$$1707f85e.leave(<generated>)
   at org.jbpm.graph.exe.Token.signal(Token.java:195)
   at org.jbpm.graph.exe.Token.signal(Token.java:166)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:147)
   at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$8950a8a8.signal(<generated>)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:488)
   at org.alfresco.repo.workflow.jbpm.WorkflowTaskInstance.end(WorkflowTaskInstance.java:133)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:427)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine$26.doInJbpm(JBPMEngine.java:1682)
   at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
   at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1650)
   at org.alfresco.repo.workflow.WorkflowServiceImpl.endTask(WorkflowServiceImpl.java:544)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:245)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy48.endTask(Unknown Source)
   at org.alfresco.web.bean.workflow.ManageTaskDialog.transition(ManageTaskDialog.java:394)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:595)
Caused by: org.alfresco.scripts.ScriptException: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:187)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:279)
   … 102 more
Caused by: org.alfresco.error.AlfrescoRuntimeException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:403)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:183)
   … 103 more
Caused by: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
   at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
   at org.mozilla.javascript.gen.c6._c0(AlfrescoScript:1)
   at org.mozilla.javascript.gen.c6.call(AlfrescoScript)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c6.call(AlfrescoScript)
   at org.mozilla.javascript.gen.c6.exec(AlfrescoScript)
   at org.mozilla.javascript.Context.evaluateString(Context.java:1196)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:396)
   … 104 more
Caused by: java.lang.IllegalArgumentException: Destination Node is a mandatory parameter
   at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:48)
   at org.alfresco.repo.jscript.ScriptNode.move(ScriptNode.java:1433)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   … 114 more
12:12:15,717 ERROR [org.alfresco.web.ui.common.Utils] Une erreur système s'est produite pendant l'opération : Failed to signal transition 'submit' from workflow task 'jbpm$14312'
org.alfresco.service.cmr.workflow.WorkflowException: Failed to signal transition 'submit' from workflow task 'jbpm$14312'
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1697)
   at org.alfresco.repo.workflow.WorkflowServiceImpl.endTask(WorkflowServiceImpl.java:544)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:245)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy48.endTask(Unknown Source)
   at org.alfresco.web.bean.workflow.ManageTaskDialog.transition(ManageTaskDialog.java:394)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Thread.java:595)
Caused by: org.jbpm.graph.def.DelegationException: Failed to execute supplied script: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:387)
   at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:378)
   at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:281)
   at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
   at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
   at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
   at org.jbpm.graph.def.Transition.take(Transition.java:138)
   at org.jbpm.graph.def.Node.leave(Node.java:394)
   at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:209)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:147)
   at org.jbpm.graph.node.TaskNode$$EnhancerByCGLIB$$1707f85e.leave(<generated>)
   at org.jbpm.graph.exe.Token.signal(Token.java:195)
   at org.jbpm.graph.exe.Token.signal(Token.java:166)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:147)
   at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$8950a8a8.signal(<generated>)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:488)
   at org.alfresco.repo.workflow.jbpm.WorkflowTaskInstance.end(WorkflowTaskInstance.java:133)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:427)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine$26.doInJbpm(JBPMEngine.java:1682)
   at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
   at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1650)
   … 50 more
Caused by: org.alfresco.scripts.ScriptException: Failed to execute supplied script: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:283)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:257)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:245)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy156.executeScriptString(Unknown Source)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.executeScript(AlfrescoJavaScript.java:178)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.execute(AlfrescoJavaScript.java:132)
   at org.jbpm.graph.def.Action.execute(Action.java:122)
   at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:264)
   … 79 more
Caused by: org.alfresco.scripts.ScriptException: Failed to execute supplied script: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:187)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:279)
   … 102 more
Caused by: org.alfresco.error.AlfrescoRuntimeException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:403)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:183)
   … 103 more
Caused by: org.mozilla.javascript.WrappedException: Wrapped java.lang.IllegalArgumentException: Destination Node is a mandatory parameter (AlfrescoScript#1)
   at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
   at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
   at org.mozilla.javascript.gen.c6._c0(AlfrescoScript:1)
   at org.mozilla.javascript.gen.c6.call(AlfrescoScript)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c6.call(AlfrescoScript)
   at org.mozilla.javascript.gen.c6.exec(AlfrescoScript)
   at org.mozilla.javascript.Context.evaluateString(Context.java:1196)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:396)
   … 104 more
Caused by: java.lang.IllegalArgumentException: Destination Node is a mandatory parameter
   at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:48)
   at org.alfresco.repo.jscript.ScriptNode.move(ScriptNode.java:1433)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   … 114 more
12:12:16,427 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@bf817e: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@ce9d88: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@c87e65: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,428 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,429 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@16d10b7: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,429 ERROR [org.alfresco.repo.avm.AVMNodeConverter] ce908341-1ae2-4eb6-ad36-8bb7f1dca68a
12:12:16,429 WARN  [org.alfresco.web.ui.common.component.evaluator.BaseEvaluator] Error during ActionInstanceEvaluator evaluation of org.alfresco.web.action.evaluator.WCMWorkflowEvaluator@907371: Bad Node Reference: ce908341-1ae2-4eb6-ad36-8bb7f1dca68a

Questions :

1) L'architecture des fichiers modifiés et créés est-elle correcte? (le workflow n'apparait pas dans le workflow definition du dictionnaire dans l'interface web)
2) Quelle est la méthode pour accéder à un contenu avec un chemin absolu?
3) Que veulent dire les erreurs qui apparaissent alors que le workflow semble marcher correctement ?(le déplacement de fichiers du moins, les mails non mais c'est normal pour le moment)
4) Il est possible d'effectuer des actions à chaque transition du workflow. J'aurai aimé savoir si cela était possible à chaque changement d'état (états du même genre que pour le workflow pré-défini review and approve).

Merci :)

Outcomes