Workflow voor mappen in Alfresco

14 November 2012 15:58 Cees Roele Alfresco

Gemeenten gebruiken zaaksystemen om allerhande aanvragen in behandeling te nemen. Daarin wordt voor iedere zaak bijgehouden wanneer deze is begonnen, wat voor type deze heeft, wat voor typen documenten kunnen worden toegevoegd, wie de aanvrager is, wie verantwoordelijk is, wat de status op een bepaald moment is, en welke taken dienen te worden uitgevoerd om het behandelen van de betreffende zaak tot een resultaat te laten leiden.

Alfresco bevat als Document Management Systeem en Record Management Systeem de basis voor een zaaksysteem. Vertaald naar Alfresco is een zaak te zien als een map. Binnen zo’n map kunnen de bijbehorende documenten worden geplaatst. Zowel mappen als documenten kunnen door Alfresco modellering worden voorzien van de extra metadata die nodig is voor zaaktypen en documenttypen. Om de behandeling van een zaak te modelleren moet een map onderdeel kunnen worden van een workflow. Dat kan niet standaard in Alfresco. Dit artikel laat zien welke aanpassingen in Alfresco nodig zijn om deze functionaliteit toe te voegen.

De architectuur van Alfresco is klaar om workflow op mappen te laten werken. Wat nog mist is de aanwezigheid van workflow voor mappen in de user interface. Hieronder staan de stappen om dit toe te voegen aan de Share interface voor Alfresco 4.0.d Community Edition.

Om te beginnen willen we bij mappen workflow kunnen starten.

Eerst definiëren we een actie “folder-assign-workflow” welke we koppelen aan de bestaande functie “onActionAssignWorkflow”. Hiertoe voegen we het volgende fragment toe aan ./tomcat/webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml:



   onActionAssignWorkflow



   onActionAssignWorkflow


Voor het begrip van de architectuur: de genoemde functie is een client side javascript functie. De standaard code in ./tomcat/webapps/share/js/documentlibrary-actions.js werkt op nodes en maakt geen onderscheid tussen mappen en documenten. Daarmee is deze code al klaar voor het toepassen ervan op mappen:

      /**
       * Assign workflow.
       *
       * @method onActionAssignWorkflow
       * @param record {object} Object literal representing the file or folder to be actioned
       */     
onActionAssignWorkflow: function dlA_onActionAssignWorkflow(record)
      {
         var nodeRefs = "",
            destination = this.getParentNodeRef(record);
         if (YAHOO.lang.isArray(record))
         {
            for (var i = 0, il = record.length; i < il; i++)
            {
               nodeRefs += (i === 0 ? "" : ",") + record[i].nodeRef;
            }
         }
         else
         {
            nodeRefs = record.nodeRef;
         }
         var postBody =
         {
            selectedItems: nodeRefs
         };
         if (destination)
       {
            postBody.destination = destination;
         }
         Alfresco.util.navigateTo($siteURL("start-workflow"), "POST", postBody);
      },

Nu we de actie hebben gedefinieerd, moeten we deze kunnen activeren via de user interface. Dit doen we ook in share-documentlibrary-config.xml, binnen de definitie van de acties voor het overzicht van mappen, in het popup menu achter de submappen:


(...)
     

     

(...)

en op de detailpagina voor mappen:


(...)
     

     

(...)

We gebruiken in dit voorbeeld de labels en iconen die al bestaan voor documenten. Deze zijn standaard type-neutraal zodat dit zonder probleem mogelijk is. Indien andere gebruikt moeten worden dan moet een icon “folder-assign-workflow” en een label “actions.folder.assign-workflow” gedefinieerd worden.

Na klikken op “Start workflow” op één van de genoemde locaties wordt de van documenten bekende pagina met de dropdown getoond waarin een workflow kan worden geselecteerd. Na selectie van een type workflow zien we dat de map als geassocieerd “package” aan de nieuwe workflow is toegevoegd. Maken we de workflow daadwerkelijk aan, dan zien we het icoontje voor een toegevoegde workflow verschijnen bij de map in het overzicht van de inhoud van de parent map. De workflow is nu ook zichtbaar in het overzicht van taken van degene aan wie deze is toegekend, zowel op het eigen dashboard als in de overzichten van “mijn taken” en “taken die ik heb gestart”.

Op de detailpagina voor folders kunnen we de workflow echter nog niet zien. Om dat te doen voegen we een regio voor workflow toe aan ./tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/folder-details.ftl:

< @region id="folder-actions" scope="template"/> < @region id="folder-tags" scope="template"/> < @region id="folder-links" scope="template"/> < @region id="folder-metadata" scope="template"/> < @region id="folder-permissions" scope="template"/> < @region id="folder-workflows" scope="template"/>

En deze regio koppelen we aan een template in
./tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/template-instances/folder-details.xml

door het volgende fragment uit document-details.xml – aangepast met de regio id “folder-workflows” – toe te voegen:



     folder-workflows
     /components/document-details/document-workflows
     
         {nodeRef}
     

Net als voor labels en iconen geldt voor het voorbeeld hierboven dat we de code voor documenten kunnen gebruiken. Het is natuurlijk ook mogelijk om analoog nieuwe code voor mappen te schrijven zodat het mogelijk wordt om de functionaliteit voor mappen anders te laten zijn dan van documenten.

Daarmee is alle functionaliteit voor workflow toepasbaar op mappen en is Alfresco klaar voor dit aspect van zaaksystemen.

Be Sociable, Share!

Reageer


twee − 1 =

RSS feed for comments on this post · TrackBack URI