AnsweredAssumed Answered

Action: cosa sono e come si creano

Question asked by ventus85 on Jul 6, 2011
Latest reply on Jul 11, 2011 by ventus85
Salve a tutti!

Vorrei sapere se ho capito bene cosa è un action e come viene creata una nuova, se mi date qualche conferma o mi correggete, ne sarò lieta.

In generale un'action (azione) è un qualcosa che l'utente può fare per esempio per un contenuto (per esempio un aggiornamento, un'eliminazione), sono come delle piccole unità di lavoro o componenti che possono essere configurate e possono essere eseguite anche runtime.
Un'azione consiste di una classe Action Executer e dalla dichiazione dei bean associati.
Analizzo per primo proprio la classe Action executer. Essa ha un metodo executeImpl che, per esempio, può prendere dei valori dei parametri e chiamare il NodeService.
Nella pratica contiene l'implementazione dell'azione.
Estende ActionExecuterAbstractBase.

public class TestExecuter extends  ActionExecuterAbstractBase{
   private NodeService nodeService;

   protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
       NodeRef nodeRef = (NodeRef) action.getParameterValue(PARAM_NOME);
       nodeService.XXX
       //… }
dove con XXX può fare qualcosa, tipo un get, un set o un'altra cosa.

Esiste poi una classe per il bean che, traducendo dall'inglese, gestisce la vista (view) per la configurazione dell'azione.

E' necessario poi fare la dichiarazione del bean.

<beans>
   <bean id="XXX" class="com.action.executer.TestExecuter" parent="actionexecuter">
       <property name="nodeService">
           <ref bean="NodeService" />
       </property>
   </bean>
   <bean id="extension.actionResourceBundles" parent="actionResourceBundles">
       <property name="resourceBundles">
           <list>
               <value>alfresco.extension.YYYY</value>
           </list>
       </property>
   </bean>
</beans>

Successivamente è necessario creare un resource bundle. Si crea un file che va salvato nella cartella alfresco/XXXche viene chiamato per esempio alfresco.extension.YYYY.properties. Il nome e il percorso sono corrispondenti a quelli dichiarati nel passaggio precedente.

Non ho capito bene il ruolo del resource bundle e se poi dobbiamo dichiarare altre cose.
Esiste qualche esempio completo delle classi che mi può aiutare a capire? Chiedo questo perchè dalle guide che ho linkato sotto non si capiscono alcune cose.
E se volessi usare un action per aggiungere un workflow? Avevo provato prima creando un nodo ma poi ho visto nel browser nodi di Alfresco che non veniva aggiunto anche perchè il nodo di un workflow che si trova in workspace://SpaceStore–>System–>workflow–>Package non aveva tutte le proprietà inserite, poi cercando di utilizzare la classe WorkflowService sempre senza successo, ma poi mi hanno gentilmente consigliato di fare un'action. Su Alfresco mi hanno anche detto che ci sono le action per i workflow predefiniti ma dove le trovo per vederle?

Grazie

Fonti che ho spulciato:
http://wiki.alfresco.com/wiki/Custom_Actions
http://ecmarchitect.com/images/articles/alfresco-actions/actions-article.pdf

Outcomes