Subscriptions

La partie Workflow de Process permet de définir des abonnements XML. Le principe est simple, il s’agit d’alimenter automatiquement le contenu d’un ou plusieurs champs à partir d’une source de données définie.

Cet abonnement sera déclenché au chargement du document ou suite à la modification d’un champ donné. Cinq types d’abonnements différents sont proposés, c’est-à-dire 5 sources de données :

  • Ressources, les autres champs du document courant
  • Annuaire, l’annuaire Process
  • Acteurs, les intervenants du document courant
  • SQL, une source de données compatible jdbc (cf.les “Références externes” dans la documentation ou “Connexions aux données externes”)
  • Vues

Ces abonnements permettent de réaliser des développements assez simples… sans développer ! C’est une programmation descriptive XML qui nous permet de réaliser des traitements, considérés par Process comme communs.

Nous allons ici détailler chaque type d’abonnement en présentant rapidement son rôle et surtout en fournissant un exemple d’utilisation.

En effet, la principale difficulté sur ces abonnements reste la syntaxe XML et les éventuelles erreurs de saisies réalisées dans la construction du XML.

Rappels structurels sur les abonnements

Localisation des abonnements

Ils se trouvent au niveau de la version de processus, dans la partie “Développement” : Script Abonnements Script Abonnements

Structure des XML

La structure des XML possède un tronc commun entre les différents types d’abonnements. Il est important de bien connaître cette structure.

<subscription name="onChange" field-id="MyField1" on-stage="MyStage1" subscription-class="com.axemble.vdp.mapping.extensions.DirectoryBrowserMappingExtension">
    <action field-id="MyField2" throw-events="true" update-mode="both" action-key="@getUserAttribute(defaultAddress)" />
</subscription>

Description de la structure XML

Nœud “subscription”

L’attribut name spécifie le type d’événement :

  • onChange : appelé sur la modification d’un champ (field-id)
  • onLoad : appelé au chargement du document

L’attribut field-id spécifie le champ concerné par un événement “onChange”; dans le cas d’un “onLoad”, il n’a pas d’intérêt.

L’attribut on-stage est facultatif, il permet de restreindre l’exécution d’un abonnement à une ou plusieurs étapes/actions.

L’attribut subscription-class nous permet de définir le type d’abonnement.

Ensuite, un noeud “subscription” peut encadrer une ou plusieurs “action”.

Nœud “action”

L’attribut field-id permet de spécifier le champ qui doit être valorisé.

L’attribut throw-events permet de définir si cette valorisation doit ou non déclencher un aller-retour serveur.

L’attribut update-mode permet de définir le spectre de modification :

  • frontend : seulement depuis un contexte avec interface graphique
  • backend : seulement depuis un contexte backend
  • both : dans les deux cas précédents

L’attribut action-key permet de passer un paramétrage, une formule par exemple. Les valeurs de cet attribut dépendront bien sûr du type d’abonnement.

Les types d’abonnements

Type d’abonnement Description
Abonnements sur des ressources Il s’agit des abonnements les plus simples.
Ils permettent des copies entre champs.
Évidemment, des modifications vont pouvoir être apportées sur les données dans la copie.
Abonnements sur l’annuaire Ce type d’abonnement va nous permettre de rapatrier automatiquement des informations issues de l’annuaire, qu’il s’agisse d’attributs standards ou étendus.
Abonnements sur des acteurs Ce type d’abonnement permet d’affecter automatiquement des rôles du processus en fonction de règles établies; par exemple : le responsable hiérarchique du demandeur sera automatiquement déposé dans le rôle “Validateur”.
Abonnements SQL Ce type d’abonnement est un des plus simples car il est quasiment complètement piloté par les interfaces d’administration.
Comme son nom l’indique il permet de rapatrier de la donnée SQL pour la stocker dans des champs ou pour la présenter dans des contrôles listes.
Abonnements sur les vues Ce type d’abonnement va nous permettre d’utiliser l’évaluation des vues pour rapatrier de l’information dans des champs ou pour la présenter dans des contrôles listes.
Il s’agit du même principe que les abonnements SQL mais en utilisant le système de filtrage des vues plutôt qu’une requête SQL.
(Utilisé par exemple depuis un processus pour attaquer les réservoirs de données)

Subscription extensions life cycle

Process lets extend this list of subscription types by giving the possibility to define your own subscription classes.

A class to be integrated in the subscription mechanism must extend the basic class named com.axemble.vdoc.sdk.mapping.extensions.BaseMappingExtension.

Method Description Parameters
onLoad This method will be called on the document loading Element : XML node corresponding to the subscription description.
onChange This method will be called on each modification made to the field specified in the field-id tag (ex. ChampEnCoursDeModification)
  • Property : the property being modified.
  • Element : XML node corresponding to the subscription description.

The subscription class is directly defined in the subscriptions XML block.

Generic Syntax

The generic syntax of subscriptions is the following:

<subscription name="onChange" field-id="ChampEnCoursDeModification" subscription-class="NomCompletDeVotreClasse">
	<!--.set some parameters here...-->
</subscription>

Example

The following example displays a class which extends the class BaseMappingExtension:

public class SimpleMappingExtension extends BaseMappingExtension {
	public void onLoad( Element element ) {
		// method triggered on the document loading
	}

	public void onChange( IProperty property, Element element ) {
		// method triggered on the property change
	}
}

Sources :