Oracle ADF : Exécuter une méthode customisée au sein d'un Taskflow

L’objectif de cet article est de décrire les étapes nécessaires pour exécuter une méthode customisée implémentée dans la partie Model, au sein d’un Taskflow.
Nous appliquerons les bonnes pratiques afin de respecter l’architecture MVC d’une application Fusion. Nous traiterons seulement le cas d’une méthode créée dans un Application Module, la démarche pour une méthode créée dans un ViewObject étant similaire.

 
 

Première partie : Rendre publique la méthode créée pour une interface client

Afin de respecter rigoureusement l’architecture MVC, seules des méthodes rendues publiques doivent être utilisées .

Etape 1 : Codage de sa méthode dans l’application module

	/**
	 * This is the default constructor (do not remove).
	 */
		public AppModuleAdminImpl() {
		}
	/**
	 * Custom method
	 * @param CliId
	 */
		public void addCustomMethod(Integer CliId) {
			// add custom code
		}

Etape 2 : Publication de sa méthode dans l’application module

Elle est ensuite publiée pour être disponible à toute interface cliente tierce comme un projet ViewController, un WebServices
La publication se fait déclarativement en se rendant dans le fichier .xml de l’Application Module.
Il faut éditer la Client Interface se trouvant au sein du menu Java et faire basculer votre méthode vers les Selected.
AM_custom_method_1
Jdeveloper se charge de mettre à jour les fichiers nécessaires :

  • AppModule.xml
  • interface AppModule.java
  • classe AppModuleClient.java

Deuxième partie : Utiliser la méthode dans un Taskflow

Suite à l’étape 2, on peut se rendre compte au niveau des Data Controls que notre méthode est maintenant bien disponible.
AM_custom_method_2

Etape 3 : Drag and drop du Data Control sur le TaskFlow

On ouvre le Taskflow sur lequel on veut exécuter la méthode en se positionnant sur son diagram.
On drag and drop la méthode depuis les Data Controls sur le TaskFlow.
On peut y passer des paramètres si besoin, dans notre cas #{pageFlowScope.cliId} (paramètre entrant du Taskflow) pour le paramètre cliId de la méthode.
AM_custom_method_3
A noter que lors de l’ajout de cette méthode, Jdeveloper crée un fichier …PageDef.xml stockant les informations nécessaires à son exécution. Un double clic dessus ouvre le fichier et affiche les informations ci-dessous :

	<methodAction id="addCustomMethod" RequiresUpdateModel="true"
					Action="invokeMethod" MethodName="addCustomMethod"
					IsViewObjectMethod="false"
					DataControl="AppModuleAdminDataControl"
                    InstanceName="AppModuleAdminDataControl.dataProvider">
		<NamedData NDName="CliId" NDValue="#{pageFlowScope.CliId}" NDType="java.lang.Integer"/>
	</methodAction>

Conclusion :

Il existe d’autre façons d’exécuter une méthode au sein d’une page .jsff respectant l’architecture MVC :

  • insertion de la méthode dans les bindings de la page avec ou sans appel dans un ManagedBean
  • utilisation d’un exécutable invokeAction au sein du fichier PageDef.xml

Celle-ci a ma préférence car étant plus visuelle elle permet d’appréhender d’un coup d’oeil la logique de fonctionnement du code.