Liste déroulante basée sur les utilisateurs + workflows

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

Liste déroulante basée sur les utilisateurs + workflows

Bonjour à tous,

Je tente de mettre en place un aspect "Note" permettant de spécifier qu'un document correspond à une note de service ou une note d'information.

J'ai pu, à l'aide de ce forum, créer l'aspect avec les champs souhaités (Nature du document [j'ai créé une liste déroulante permettant de choisir "Note de service / Note d'information"], Penseur, Secretaire, Signataire, Date de début, Date de Signature, Date de Fin de validité)

  * Dans un premier temps, je souhaiterais remplir "automatiquement" les listes déroulantes pour le Penseur, Secrétaire et Signataire avec la liste des utilisateurs présents dans Alfresco.
Je souhaiterais, par la suite, que ces attributs (penseur, …) servent pour des workflow basés sur les attributs  :
   => Envoi pour validation au penseur (qui que soit le penseur)
   => Envoi pour validation au signataire (qui que soit le signataire)

  * Dans un second temps, je souhaiterais pouvoir lister et afficher tous les destinataires prévus pour cette note.
Une fois validée par le signataire, je souhaiterais la diffuser aux destinataires (en mettant en place des droits d'accès).

  * Pour finir, comment puis-je mettre en place un suivi précisant qui a lu la note ?

Je vous remercie par avance de toutes les informations sur les différents éléments, exemples de codes, que vous pourrez me communiquer.
7 Replies
aldaron
Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Bonjour,

Voici où j'en suis rendu pour l'instant (en me basant sur différents exemples) :

kb-model.xml

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

<!– Definition of Knowledge Base Model –>

<model name="kb:knowledgebase" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>
   <description>Knowledge Base Model</description>
   <author>Will Abson</author>
   <version>1.0</version>

   <!– Imports are required to allow references to definitions in other models –>
   <imports>
        <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <namespaces>
      <namespace uri="http://www.alfresco.com/model/knowledgebase/1.0" prefix="kb"/>
   </namespaces>

    <aspects>
      <!– Definition of new Content Aspect: Knowledge Base Document –>
      <aspect name="kb:referencable">
         <title>Knowledge Base Referencable</title>
         <properties>
            <property name="kb:noteRef">
               <type>d:text</type>
            </property>
            <property name="kb:documentNom">
               <type>d:text</type>
            </property>
            <property name="kb:noteType">
               <type>d:text</type>
           <constraints>
                    <constraint type="LIST">
                       <parameter name="allowedValues">
                     <list>
                        <value>a preciser</value>
                        <value>Note de Service</value>
                        <value>Note d'Information</value>
                     </list>
                  </parameter>
                 </constraint>
              </constraints>
            </property>
            <property name="kb:notePenseur">
               <type>d:text</type>
            </property>
            <property name="kb:noteSecretaire">
               <type>d:text</type>
            </property>
            <property name="kb:noteSignataire">
               <type>d:text</type>
            </property>
            <property name="kb:noteDateCreation">
               <type>d:date</type>
            </property>
            <property name="kb:noteDateSignature">
               <type>d:date</type>
            </property>
            <property name="kb:noteDateFin">
               <type>d:date</type>
            </property>
            <property name="kb:destinataires">
               <type>d:category</type>
               <mandatory>false</mandatory>
               <multiple>true</multiple>
               <index enabled="true">
                  <atomic>true</atomic>
                  <stored>true</stored>
                  <tokenised>false</tokenised>
               </index>
            </property>
         </properties>
      </aspect>
   </aspects>

</model>

kb-model-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>

    <!– Registration of new models –>
    <bean id="extension.kb.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/kb-model.xml</value>
            </list>
        </property>
    </bean>

    <bean id="extension.kb.resourceBundle" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
      <property name="resourceBundles">
         <list>
            <value>alfresco.messages.knowledgebase</value>
         </list>
      </property>
   </bean>

</beans>

Modification du "web-client-config-custom.xml"

   <config evaluator="string-compare" condition="Action Wizards">

      <aspects>

         <aspect name="kb:referencable"/>

      </aspects>

   </config>

Modification du "share-config-custom.xml"

<alfresco-config>

   <!– Document Library config section –>
   <config evaluator="string-compare" condition="DocumentLibrary">

      <!–
         Used by the "Manage Aspects" action

         For custom aspects, remember to also add the relevant i18n string(s)
            cm_myaspect=My Aspect
      –>
      <aspects>
         <!– Aspects that a user can see –>
         <visible>
            <aspect name="cm:generalclassifiable" />
            <aspect name="cm:complianceable" />
            <aspect name="cm:dublincore" />
            <aspect name="cm:effectivity" />
            <aspect name="cm:summarizable" />
            <aspect name="cm:versionable" />
            <aspect name="cm:templatable" />
            <aspect name="cm:emailed" />
            <aspect name="emailserver:aliasable" />
            <aspect name="cm:taggable" />
            <aspect name="app:inlineeditable" />
            <aspect name="kb:referencable" />
         </visible>

         <!– Aspects that a user can add. Same as "visible" if left empty –>
         <addable>
         </addable>

         <!– Aspects that a user can remove. Same as "visible" if left empty –>
         <removeable>
         </removeable>
      </aspects>

   </config>

   <!– cm:content type (existing nodes) –>
   <config  evaluator="node-type" condition="cm:content">
      <forms>
         <!– Default form configuration used on the document details and edit metadata pages –>
         <form>
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
         </form>

         <!– Document Library pop-up Edit Metadata form –>
         <form id="doclib-simple-metadata">
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
            <edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl" />
         </form>

         <!– Document Library Inline Edit form –>
         <form id="doclib-inline-edit">
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
         </form>
      </forms>
   </config>

</alfresco-config>

knowledgebase.properties

# Custom knowledge base messages
kb_knowledgebase.property.kb_noteRef.title=Reference
kb_knowledgebase.property.kb_documentNom.title=Nom
kb_knowledgebase.property.kb_noteType.title=Type de document
kb_knowledgebase.property.kb_notePenseur.title=Penseur
kb_knowledgebase.property.kb_noteSecretaire.title=Secretaire
kb_knowledgebase.property.kb_noteSignataire.title=Signataire
kb_knowledgebase.property.kb_noteDateCreation.title=Date de debut
kb_knowledgebase.property.kb_noteDateSignature.title=Date de signature
kb_knowledgebase.property.kb_noteDateFin.title=Date de fin de validite
kb_knowledgebase.property.kb_destinataires.title=Destinataires
kb_knowledgebase.aspect.kb_referencable.title=Referencement des notes
aspect.kb_referencable=Aspect Note

Ce qui me manque encore (il y a encore un max de boulot) :
Lors de l'utilisation de l'aspect, je souhaiterais :
   * que les zones "notePenseur", "noteSecrétaire" et "noteSignataire" ce soit des listes déroulantes basées sur les utilisateurs
   * que la zone "destinataires" fonctionne tel qu'actuellement mais en affichant les utilisateurs

Mettre en place des workflows génériques basés sur les attributs ("notePenseur", …) plutôt que sur un individu.

Je suis preneur de toutes pistes que vous pourriez me donner.
jayjayecl
Active Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Bonjour,

pour les listes déroulantes, orientez-vous peut-être vers des contraintes "custom" :
http://wiki.alfresco.com/wiki/Content_Model_Constraints#Writing_Further_Constraints

pour les workflows avancés, un excellent tutoriel figure ici :
http://ecmarchitect.com/archives/2007/11/19/785

Bonne chance !
aldaron
Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Merci Rodel pour cette réponse.

Par contre, j'ai beau chercher/tester, je n'arrive pas à comprendre ce que je dois faire (problème d'anglais ou de compréhension du fonctionnement).

Disposerais-tu d'un exemple expliquant comment faire pour mettre en place des listes déroulantes basées sur des éléments de la base (user, …) ?

Merci
jayjayecl
Active Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Vous utilisez l'interface Alfresco Explorer ?
Aucune envie de passer à l'interface Share qui gère les workflows avancés en version 3.4 ? Ce serait peut-être plus pérenne, et vous auriez sans doute davantage d'aide de la communauté …

Sinon, pour explorer, il faut que l'affichage de la propriété qui doit afficher une liste d'utilisateurs soit géré par un custom component-generator :
Voir ici :
http://wiki.alfresco.com/current/index.php?title=Displaying_Custom_Metadata#Component_Generators

et ici :
http://wiki.alfresco.com/wiki/Component_Generator_Framework
aldaron
Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Bonjour Rodel,
En réponse à votre mail (et avant de regarder vos liens), j'utilise l'interface share. J'ai omis de vous le dire dès le départ et je m'en excuse.
Concernant les "Workflow avancés", ils ne semblent pas correspondre à nos attentes (où je n'ai pas encore saisi leur fonctionnement).

Je souhaite mettre en place un site "share" dédié à la gestion des notes de manière réutilisable (et ainsi le mettre à la disposition de la communauté).

La mise en place de l'aspect "note" permet de préciser le 4 "rôles" pour les utilisateurs :
  * Penseur : Il est au départ du document.
  * Secrétaire : Elle saisie le document, l'envoi à valider au penseur (et réalise éventuellement des modifs jusqu'à validation) puis l'envoi à valider au signataire (et réalise éventuellement des modifs jusqu'à validation) puis lance la diffusion vers les destinataires (envoi d'un lien via mail + modification de droits sur le document pour le rendre accessibles aux seuls destinataires.
  * Signataire : Il valide (et signe) les documents.
  * Destinataires : Ils sont avertis et ont un accès aux note validées.

Le penseur est unique mais est obligatoirement un utilisateur, tout comme le secrétaire et le Signataire (d'où les listes déroulantes dans l'aspect "Note" basé sur des listes d'utilisateurs et sur lesquels les Workflow s'appuient).
Les destinataires correspondent à un ensemble (ou liste) d'utilisateurs.
L'utilisation la plus simple étant, pour la secrétaire, de réaliser un clic sur la "note en projet" et de sélectionner les actions "Validation par le penseur", "Validation par le signataire", "Diffusion", le tout basé sur les utilisateurs définis dans l'aspect.

Voila les besoins exprimés par mon établissement et la manière par laquelle je pense y répondre.

Cordialement
aldaron
Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

Bonsoir à tous,

Voici la solution permettant de répondre à une partie de mon problème. J'ai fini par laisser tomber la mise en place des listes déroulantes. Voici mes fichiers, au cas où vous trouveriez des améliorations possibles et au cas où cela puisse servir à d'autres :

Fichier kb-model.xml

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

<!– Definition of Knowledge Base Model –>

<model name="kb:knowledgebase" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!– Optional meta-data about the model –>
   <description>Knowledge Base Model</description>
   <author>Will Abson</author>
   <version>1.0</version>

   <!– Imports are required to allow references to definitions in other models –>
   <imports>
        <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>

   <!– Introduction of new namespaces defined by this model –>
   <namespaces>
      <namespace uri="http://www.alfresco.com/model/knowledgebase/1.0" prefix="kb"/>
   </namespaces>

   <!– Contraintes liées au fichier –>
   <constraints>
      <constraint name="kb:checkTypeNote" type="LIST">
          <parameter name="allowedValues">
              <list>
                  <value>a preciser</value>
                  <value>Note de Service</value>
                  <value>Note d'Information</value>
              </list>
          </parameter>
      </constraint>
      <constraint name="kb:checkGestUsers" type="LIST">
          <parameter name="allowedValues">
              <list>
                  <value>a preciser</value>
                  <value>Note de Service</value>
                  <value>Note d'Information</value>
              </list>
          </parameter>
      </constraint>
      <constraint name="kb:ensGestUser" type="LIST">
          <parameter name="allowedValues">
              <list>
                  <value>a preciser</value>
                  <value>Note de Service</value>
                  <value>Note d'Information</value>
              </list>
          </parameter>
      </constraint>
  </constraints>


    <aspects>
      <!– Definition of new Content Aspect: Knowledge Base Document –>
      <aspect name="kb:referencable">
         <title>Knowledge Base Referencable</title>
         <properties>
            <property name="kb:noteRef">
               <type>d:text</type>
          <mandatory>true</mandatory>
            </property>
            <property name="kb:documentNom">
               <type>d:text</type>
          <mandatory>true</mandatory>
            </property>
            <property name="kb:noteType">
               <type>d:text</type>
               <default>a preciser</default>
                  <constraints>
                     <constraint ref="kb:checkTypeNote" />      <!– Liaison vers la contrainte –>
                  </constraints>
            </property>
            <property name="kb:noteDateCreation">
               <type>d:date</type>
            </property>
            <property name="kb:noteDateSignature">
               <type>d:date</type>
            </property>
            <property name="kb:noteDateFin">
               <type>d:date</type>
            </property>
         </properties>
         <associations>
            <association name="kb:notePenseur">
          <title>Penseur du document : </title>
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
                  <target>
                     <class>cm:person</class>
                     <mandatory>false</mandatory>
                     <many>false</many>
                  </target>
              </association>
            <association name="kb:noteSecretaire">
          <title>Secretaire assurant la saisie : </title>
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
                  <target>
                     <class>cm:person</class>
                     <mandatory>false</mandatory>
                     <many>false</many>
                  </target>
              </association>
            <association name="kb:noteSignataire">
          <title>Signataire du document : </title>
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
                  <target>
                     <class>cm:person</class>
                     <mandatory>false</mandatory>
                     <many>false</many>
                  </target>
              </association>
            <association name="kb:destinataires">
          <title>Destinataires du document : </title>
               <source>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
                  <target>
                     <class>cm:person</class>
                     <mandatory>false</mandatory>
                     <many>true</many>
                  </target>
              </association>
           </associations>

      </aspect>

   </aspects>

</model>

Fichier kb-model-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>

    <!– Registration of new models –>
    <bean id="extension.kb.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/kb-model.xml</value>
            </list>
        </property>
    </bean>

    <bean id="extension.kb.resourceBundle" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
      <property name="resourceBundles">
         <list>
            <value>alfresco.messages.knowledgebase</value>
         </list>
      </property>
   </bean>

</beans>

Fichier knowledgebase.properties

# Custom knowledge base messages
kb_knowledgebase.property.kb_noteRef.title=Reference
kb_knowledgebase.property.kb_documentNom.title=Nom
kb_knowledgebase.property.kb_noteType.title=Type de document
kb_knowledgebase.property.kb_notePenseur.title=Penseur du document
kb_knowledgebase.property.kb_noteSecretaire.title=Secretaire assurant la saisie
kb_knowledgebase.property.kb_noteSignataire.title=Signataire du document
kb_knowledgebase.property.kb_noteDateCreation.title=Date de debut
kb_knowledgebase.property.kb_noteDateSignature.title=Date de signature
kb_knowledgebase.property.kb_noteDateFin.title=Date de fin de validite
kb_knowledgebase.property.kb_destinataires.title=Destinataires du document
kb_knowledgebase.aspect.kb_referencable.title=Referencement des notes
aspect.kb_referencable=Aspect Note

Fichier share-config-custom.xml

<alfresco-config>

   <!– Document Library config section –>
   <config evaluator="string-compare" condition="DocumentLibrary">

      <!–
         Used by the "Manage Aspects" action

         For custom aspects, remember to also add the relevant i18n string(s)
            cm_myaspect=My Aspect
      –>
      <aspects>
         <!– Aspects that a user can see –>
         <visible>
            <aspect name="cm:generalclassifiable" />
            <aspect name="cm:complianceable" />
            <aspect name="cm:dublincore" />
            <aspect name="cm:effectivity" />
            <aspect name="cm:summarizable" />
            <aspect name="cm:versionable" />
            <aspect name="cm:templatable" />
            <aspect name="cm:emailed" />
            <aspect name="emailserver:aliasable" />
            <aspect name="cm:taggable" />
            <aspect name="app:inlineeditable" />
            <aspect name="kb:referencable" />
<!–            <aspect name="kb:utilisateur" />–>
         </visible>

         <!– Aspects that a user can add. Same as "visible" if left empty –>
         <addable>
         </addable>

         <!– Aspects that a user can remove. Same as "visible" if left empty –>
         <removeable>
         </removeable>
      </aspects>

   </config>

   <!– cm:content type (existing nodes) –>
   <config  evaluator="node-type" condition="cm:content">
      <forms>
         <!– Default form configuration used on the document details and edit metadata pages –>
         <form>
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
         </form>

         <!– Document Library pop-up Edit Metadata form –>
         <form id="doclib-simple-metadata">
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
            <edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl" />
         </form>

         <!– Document Library Inline Edit form –>
         <form id="doclib-inline-edit">
            <field-visibility>
               <show id="kb:noteRef" />
               <show id="kb:documentNom" />
               <show id="kb:noteType" />
               <show id="kb:notePenseur" />
               <show id="kb:noteSecretaire" />
               <show id="kb:noteSignataire" />
               <show id="kb:noteDateCreation" />
               <show id="kb:noteDateSignature" />
               <show id="kb:noteDateFin" />
               <show id="kb:destinataires" />
            </field-visibility>
         </form>
      </forms>
   </config>

</alfresco-config>

Fichier web-client-config-custom.xml

<alfresco-config>

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

</alfresco-config>

Ce qu'il me reste à trouver (avis aux amateurs qui auraient des pistes ou idées, …) :
      *   Comment créer des workflows basés sur les cmSmiley Tongueerson définies dans l'aspect (Penseur, Secrétaire, …)
      *   Comment modifier les droits d'accès d'un document pour un ensemble de cmSmiley Tongueerson (destinataires)
      *   Comment afficher les actions "envoyer à valider au Penseur","envoyer à valider au signataire", "diffuser" dans mon interface share, dans le menu apparaissant lors du clic "En savoir plus …", uniquement pour les documents concernés par cet aspect.
jayjayecl
Active Member II

Re: Liste déroulante basée sur les utilisateurs + workflows

1 Comment créer des workflows basés sur les cmSmiley Tongueerson définies dans l'aspect (Penseur, Secrétaire, …)
2 Comment modifier les droits d'accès d'un document pour un ensemble de cmSmiley Tongueerson (destinataires)

1/ les cmSmiley Tongueerson définis dans l'aspect sont persistés dans des variables du workflow, et donc accessibles par les APIs JScript et Java d'Alfresco tout au long du worklfow (dans le "executionContext" si mes souvenirs sont bons).
Des infos ici :
http://wiki.alfresco.com/wiki/WorkflowAdministration#Process_Data
et des exemples de manipulation de ces variables dans cet excellent tutorial de Jeff Potts :
http://ecmarchitect.com/archives/2007/11/19/785


2/ Par les APIs JScript ou Java Alfresco.
Par exemple, avec l'API JScript en 3.4 :
http://wiki.alfresco.com/wiki/3.4_JavaScript_API#Permission_and_Security_API