cancel
Showing results for 
Search instead for 
Did you mean: 

Action Javascript ScriptLocation

sebbri
Champ in-the-making
Champ in-the-making

Bonjour,

je tente de mettre en place une action dans Share :

J'ai donc déclaré dans share-config-custom :

<config evaluator="string-compare" condition="DocLibActions">
      <actions>
         <action id="run-wkfactes" icon="document-assign-workflow" type="javascript" label="Lancer le process">
            <param name="function">onActionSimpleRepoAction</param>
            <param name="action">run-wkfactes-action</param>
            <param name="successMessage">Lancement process Ok</param>
            <param name="failureMessage">Lancement process Erreur</param>
	         <evaluator>selestat.evaluator.custom.isWebdelibExport</evaluator>
         </action>
      </actions>
      <actionGroups>
            <actionGroup id="folder-browse">
                  <action index="260" id="run-wkfactes" />
            </actionGroup>
      </actionGroups>
   </config>

Puis :

<bean id="selestat.evaluator.custom.isWebdelibExport" parent="evaluator.doclib.metadata.hasAspect">
                <property name="aspects">
                        <list>
                                <value>export:webdelib</value>
                        </list>
                </property>
</bean>

Et enfin :

<bean id="run-wkfactes-action" parent="script">
		<property name="scriptLocation">
			<bean class="org.alfresco.repo.jscript.ClasspathScriptLocation">
				<constructor-arg>
					<value>/Espace racine/Dictionnaire de données/Scripts/wkf_actes.js</value>
				</constructor-arg>
			</bean>
		</property>
</bean>

L'action "Lancer le process" apparait bien dans Share mais mon problème c'est que je ne veut pas que le .js soit stocké sur le FS alfresco mais dans le Doclib.

En effet, ce js est stocké dans /Entrepot/Dictionnaire de données/Scripts/. C'est d'ailleurs un script qui est executé via cron (scheduled-jobs). Il d'ailleurs déclaré ainsi dans scheduled-jobs-context :

<bean id="runScriptAction2" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition">
            <property name="actionName">
                <value>script</value>
            </property>
            <property name="parameterTemplates">
                <map>
                    <entry>
                        <key>
                            <value>script-ref</value>
                        </key>
                        <value>\$\{selectSingleNode('workspace://SpacesStore', 'lucene', 'PATH:"/app:company_home/app:dictionary/app:scripts/cm:wkf_actes.js"' )\}</value>
                    </entry>
                </map>
            </property>
            <property name="templateActionModelFactory">
                <ref bean="templateActionModelFactory"/>
            </property>
            <property name="dictionaryService">
                <ref bean="DictionaryService"/>
            </property>
            <property name="actionService">
                <ref bean="ActionService"/>
            </property>
            <property name="templateService">
                <ref bean="TemplateService"/>
            </property>
        </bean>

Pour revenir au bean qui permet de déclarer le script JS de l'action, je ne connais que :

org.alfresco.repo.jscript.ClasspathScriptLocation

Cela ne permet que d'indiquer un script stocké dans un répertoire du FS.

Je ne sais pas si il est possible d'appeler un script stocké dans le doclib ? A l'instar de ce qu'il est possible de déclarer pour le Scheduled job.

Je voudrais à tout prix éviter de stocké ce script à deux endroits. Pour des questions maintenance et de dev, ce serait très pénible.

Merci

Cordialement

Sébastien Brière
1 REPLY 1

cristinamr
World-Class Innovator
World-Class Innovator

Salut!

Avez-vous une erreur dans le log?

Cristina.

--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc