Mettre en place le moteur RCT
Comment utiliser le moteur RCT ?
Dans notre cas, on souhaite par exemple lancer une PSD. Dans la requête lancer la PSD, on écrira donc:
Quand l’utilisateur clique sur l’action…on a le contexte suivant :
la SCR.RCT_TypeAcces = ACT (Mode d’exécution de la règle : ‘ACT’ si elle est appelée par une action directe de l’utilisateur, ‘IAP’ si c’est le retour d’une application liée lors d’une fermeture)
La SCR.RCT_TypeAction = Code action lancé
Et dans notre requête on va initialiser:
La VBP.IAP_TypeFils = Type de l’objet lancé
La VBP.IAP_RefFils = Référence de l’objet lancé
La VBP.IAP_ModeRet = mode de retour défini sur l’action (S/U ou V)
On peut également initialiser…
VBP.IAP_FenSep =Ouverture en fenêtre séparée
VBP.IAP_ValActFils = Code action retour
VBP.IAP_LisVarUti =Liste des variables utiles (séparées par une virgule), pour le mode U
VBP.IAP_ModeRea = Mode de réaffichage à la fermeture de l’objet applicatif lancé
Lancement de l’action
On peut écrire le requête suivante:
1-On commence par récupérer l’accès ( est-ce qu’on lance l’action ou est-ce qu’on revient de l’action ? ), et le référence de l’action dans les SCR.RCT_TypeAcces (=ACT au lancement ou =IAP en mode retour) et SCR.RCT_TypeAction pour savoir ce que fait l’utilisateur !
2-On initialise les VBP IAP_ModeAcc et IAP_ModeDem à la valeur “C” (qui veut dire “Complet”). Cela permet de faire transiter un maximum d’informations vers l’objet fils, de la même manière que la VBP.IAP_ModeRet pilote la transition des informations en retour de l’objet fils sur l’objet père. Vous pouvez également initialiser la VBP.IAP_ModeRet à “C” pour encore améliorer la transition d’informations. Ce n’est pas obligatoire mais fortement conseillé 😉
On lance l’action qui a pour code action “SELPOS”, et qui permet de lancer une PSD dans notre exemple. On vient donc initialiser les VBP IAP_TypeFils et IAP_RefFils afin de piloter dynamiquement l’objet à lancer.
VBP.IAP_TypeFils : Type d’objet à lancer. ADG (Arbre documents GED), AGE (Agenda), AME (Application Métier), ARB (Arbre), COU (Couplage), CSY (Commande Système), DOC (Document), ENT (Entité), LPA (Liste Paramétrée), MCO (Message de Confirmation), PER (Diagramme PERT), PSD (Procédure de Saisie Dynamique), TDY (Tableur Dynamique).
VBP.IAP_RefFils : référence Objet. Doit exister pour le type donné.
VBP.IAP_EvtActFils : action DIALOG en retour de l’objet lancé. CTL (mode RCT = contrôle), vide (pas de DIALOG).
Dans le cas d’une action de type ACT, il est possible de juste faire des MAJ via cette requête sans lancer d’outil, dans ce cas là les VBP IAP_TypeFils et IAP_RefFils restent à vide.
Il est aussi possible de mettre des messages d’erreur afin de bloquer le lancement d’une action en fonction des conditions que vous souhaitez.
Remarque: Comme vous pouvez le constater, ce sont des VBP qui donnent l’objet à lancer. Ce type de variable (VBP = Variables Partagées entre Requêtes) permet de faire transiter des informations d’un objet à un autre, elles vont donc être très importantes dans le cas du lancement d’actions, notamment pour le retour !
Retour de l’action
Comment mettre en place le retour d’action ?
Au retour de l’action on a le contexte suivant :
La SCR.RCT_TypeAcces = IAP
La SCR.RCT_TypeAction = Code de retour de l’action (défini sur l'action)
La SCR.IAP_TypeFils = Type de l’objet fils dont on revient
La SCR.IAP_RefFils = Référence de l’objet fils dont on revient
La SCR.IAP_ParActFIls = VAL ou ABA suivant comment on a quitté l’objet fils
La SCR.IAP_ValActFils = Code de retour de l’action (défini sur l'action)
Les VBP qui auront été initialisées dans l’outil fils
On peut écrire le requête suivante:
Ici, on vient remettre à vide les VBP IAP_TypeFils et IAP_RefFils qu’on a utilisées dans une des actions plus haut, pour ne pas relancer l’outil pour lequel on a initialisé ces VPB !
Dans notre action, on demande des informations à l’utilisateur qu’on souhaite récupérer dans notre outil père, comment faire ?
Par exemple, dans notre action, on lance une autre PSD dans laquelle l’utilisateur doit choisir un client, et on souhaite récupérer dans notre PSD père la référence de ce client pour initialiser des champs.
Afin de faire transiter des informations à l’objet père, il faudra obligatoirement initialiser des variables VBP en validation de l’objet fils. Les SCR et VCR ne transiteront pas !
En cas de sélection multiple, la RCT est exécutée une seule fois, et non une fois pour chaque enregistrement sélectionné.
Enchainer sur un autre outil en retour d’action
A noter que lors du retour du lancement d’un outil, il est possible de lancer un nouvel outil ! Cette mécanique peut être répétée autant de fois que nécessaire !