Liferay 6.1 : Kaleo Forms dans le Control Panel

Kaleo est le moteur de workflow intégré à Liferay.  Le portlet Kaleo Forms permet à un utilisateur la création d’un process complet comprenant :

  • le choix d’une liste de données dynamiques (formulaire personnalisé : DDL)
  • le choix d’un sous formulaire de la DDL sélectionnée associé à la première étape du workflow
  • le choix du workflow
  • le choix des masques (sous formulaire de la DDL sélectionnée) associé à chacune des étapes du workflow.

Pourquoi ne pas gérer les Kaleo Process dans le Control Panel ?

La mise en place complète d’un process est à la fois simple de part l’utilisation de Kaleo Designer mais ne peut-être laissée à la main d’un utilisateur lambda.  Kaleo Designer  offre par exemple la possibilité d’inclure des scripts (Groovy, javascript) afin de gérer l’assignement des rôles dans chacunes des étapes du workflow. Il est parfois préférable de laisser la gestion des process dans le control panel puis de construire sa propre application via les APIs de Kaleo et les différentes entités (KaleoProcess, KaleoInstance, KaleoTask…).

Pour ces raisons, ou d’autres encore, il peut convenir de mettre le portlet Kaleo Forms dans la partie dédiée à la gestion des sites dans le back office de Liferay.

Comment utiliser Kaleo Forms dans le control panel ?

Deux simples manipulations permettent d’intégrer Kaleo au control panel.

La première consiste en la modification du liferay-portlet.xml de Kaleo Forms ; dans votre serveur : webapps/kaleo-forms-portlet/WEB-INF/liferay-portlet.xml, ajouter la balise concernant control-panel-entry-category.

<portlet>

<portlet-name>1</portlet-name>
<control-panel-entry-category>
content
</control-panel-entry-category>
<workflow-handler>com.liferay.portal.workflow.kaleo.forms.workflow.KaleoProcessWorkflowHandler</workflow-handler>
<instanceable>false</instanceable>
<header-portal-css>/html/portlet/workflow_definitions/css/main.jsp</header-portal-css>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portal-javascript>/html/js/liferay/service.js</footer-portal-javascript>
<footer-portal-javascript>/html/portlet/workflow_tasks/js/main.js</footer-portal-javascript>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<footer-portlet-javascript>/js/service.js</footer-portlet-javascript>
<css-class-wrapper>kaleo-forms-portlet</css-class-wrapper>

</portlet>

 

Il faut ensuite établir une modification dûe au class loading dans le control panel. En effet,  Kaleo Designer possède un dossier ‘loader’ à la racine qui n’est pas chargé en back office ! Il est donc impossible, sans report du code se trouvant dans ce dossier, d’utiliser Kaleo dans le control panel. Heureusement, peu de travail ici, il suffit de reporter le code de la JSP webapps/kaleo-designer-portlet/loader/view.jsp (uniquement la balise aui:script) dans la jsp webapps/kaleo-forms-portlet/init.jsp.

Liferay.provide(
Liferay.Util,
'openKaleoDesignerPortlet',
function(config) {
var A = AUI();

var kaleoURL = Liferay.PortletURL.createRenderURL();

kaleoURL.setParameter('availableFields', config.availableFields);
kaleoURL.setParameter('availablePropertyModels', config.availablePropertyModels);
kaleoURL.setParameter('ddmStructureId', config.ddmStructureId);
kaleoURL.setParameter('draftVersion', config.draftVersion);
kaleoURL.setParameter('kaleoProcessId', config.kaleoProcessId);
kaleoURL.setParameter('name', config.name);
kaleoURL.setParameter('openerWindowName', config.openerWindowName);
kaleoURL.setParameter('portletResourceNamespace', config.portletResourceNamespace);
kaleoURL.setParameter('propertiesSaveCallback', config.propertiesSaveCallback);
kaleoURL.setParameter('saveCallback', config.saveCallback);
kaleoURL.setParameter('uiScope', config.uiScope);
kaleoURL.setParameter('version', config.version);

kaleoURL.setPortletId('2_WAR_kaleodesignerportlet');
kaleoURL.setWindowState('pop_up');

config.uri = kaleoURL.toString();

var dialogConfig = config.dialog;

if (!dialogConfig) {
var region = A.one(Liferay.Util.getOpener()).get('region');

dialogConfig = {
modal: true,
title: config.name,
width: region.width * 0.85
};

config.dialog = dialogConfig;
}

if (!('align' in dialogConfig)) {
dialogConfig.align = Liferay.Util.Window.ALIGN_CENTER;
}

var dialogIframeConfig = config.dialogIframe;

if (!dialogIframeConfig) {
dialogIframeConfig = {
closeOnEscape: false
};

config.dialogIframe = dialogIframeConfig;
}

Liferay.Util.openWindow(config);
},
['liferay-portlet-url']
);

Conclusion

Le moteur de workflow Kaleo est compatible Liferay mais n’est pas intégré dans le code source. Cela implique une plus grande difficulté à manipuler les portlets (pas de hook ou de surcharge) d’ou les manipulations ci-dessus.

Concernant la gestion de vos process Kaleo, vous pourrez désormais vous en occuper dans le control panel et éviter la création d’une page, réservée aux admins, en front office.

VN:R_U [1.9.22_1171]
Rating: 0 (from 0 votes)
Share
Ce contenu a été publié dans Non classé, Trucs & astuces, avec comme mot(s)-clef(s) , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire