Plate-forme héritée

Remplacer les applications composites pour un écran dans les contrôleurs

Vous pouvez remplacer des applications composites pour un écran particulier.

Si vous souhaitez remplacer l'application composite appelée par l'application par votre propre application composite, un service est appelé à la place d'une API fournie par l'application. Si vous souhaitez remplacer l'application composite appelée par l'application par votre propre application composite, tous les écrans qui utilisent l'application composite sont impactés. Vous pouvez remplacer la référence d'application composite pour un écran spécifique en modifiant la référence d'application composite personnalisée dans InitController et BehaviorController. Pour modifier la référence d'application composite, créez des extensions pour la définition côté client d'un écran qui requiert des fichiers d'extension pour les composants côté serveur et côté client.
Remarque: Si vous souhaitez modifier la définition de l'application composite dans l'ensemble de l'application, veillez à remplacer la fonction au niveau d'une couche d'application composite.
Pour plus d'informations sur le remplacement d'un mashup et les écrans affectés par la modification de la définition du mashup, consultez la section Étendre les mashups. Par exemple, pour étendre InitController et modifier le mashup, l'exemple suivant explique l'application InitController pour l'écran wsc.home.portlets.BackroomPickPortlet avec wsc.home.portlets.BackroomPickPortletInitController controllerId.

Le fichier XML côté serveur pour le fichier InitController fourni par l'application est le suivant:

<?xml version="1.0" encoding="UTF-8"?>
<Controller
    className="com.sterlingcommerce.ui.web.platform.controller.SCUIXAPIMashupController"
    controllerId="wsc.home.portlets.BackroomPickPortletInitController"
    requestMethodSupported="POST" screenId="wcc.home.portlets.BackroomPickPortlet">
    <Group isAggregator="Y"/>
    <MashupRefs>
        <MashupRef mashupId="backroomPick_getShipmentListReadyForPick"
            mashupRefId="getShipmentListReadyForPickInit" permissionId=""/>
    </MashupRefs>
</Controller>
La définition côté client pour InitController est la suivante:
scDefine(["scbase/loader!dojo/_base/declare", "scbase/loader!dojo/_base/kernel", 
"scbase/loader!dojo/text", "scbase/loader!sc/plat/dojo/controller/ScreenController",
"scbase/loader!wsc/home/portlets/BackroomPickPortlet"], 
function(
_dojodeclare, _dojokernel, _dojotext, _scScreenController, _wscBackroomPickPortlet) {
    return _dojodeclare("wsc.home.portlets.BackroomPickPortletInitController", [_scScreenController], {
        screenId: 'wsc.home.portlets.BackroomPickPortlet',
        mashupRefs: [{
            sourceNamespace: 'backroomPick_getShipmentListReadyForPick_output',
            mashupRefId: 'getShipmentListReadyForPickInit',
            sequence: '',
            mashupId: 'backroomPick_getShipmentListReadyForPick',
            callSequence: '',
            sourceBindingOptions: ''
        }]
    });
});
Dans ces exemples, l'écran lance le backroomPick_getShipmentListReadyForPick mashup. Si vous souhaitez appeler un autre mashup, créez le InitController fichier XML correspondant à l'extension comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<Controller controllerId="extn.home.portlets.BackroomPickPortletExtnInitController"
	screenId="extn.home.portlets.BackroomPickPortletExtn">
    <Group isAggregator="Y"/>
    <MashupRefs>
        <MashupRef mashupId="extn_backroomPick_getShipmentListReadyForPick"
            mashupRefId="getShipmentListReadyForPickInit" permissionId="" extnType="MODIFY"/>
    </MashupRefs>
</Controller>
Remarque :
  • La structure du XML côté serveur personnalisé est identique à celle du XML côté serveur fourni par l'application avec peu de modifications.

  • L'élément MashupRef doit contenir un nouvel attribut extnType avec la valeur définie sur MODIFY.
  • Dans l'élément MashupRef , l'attribut mashupRefId doit être identique à l'attribut défini dans le fichier InitController fourni par l'application pour déterminer l'appel d'application composite remplacé dans l'extension.
  • Dans l'élément MashupRef , ajoutez uniquement les attributs que vous souhaitez remplacer autres que les attributs mashupId, mashupRefIdet extnType . Dans la plupart des cas, seuls les attributs mashupId, mashupRefIdet extnType sont requis.
La définition côté client de l'extension InitController est la suivante:
scDefine(["scbase/loader!dojo/_base/declare", "scbase/loader!dojo/_base/kernel", 
"scbase/loader!dojo/text", "scbase/loader!sc/plat/dojo/controller/ScreenController", 
"scbase/loader!extn/home/portlets/BackroomPickPortletExtn",
"scbase/loader!sc/plat/dojo/controller/ExtnScreenController"], 
function(
_dojodeclare, _dojokernel, _dojotext, _scScreenController, _extnBackroomPickPortletExtn,_scExtnScreenController) {
    return _dojodeclare("extn.home.portlets.BackroomPickPortletExtnInitController", [_scScreenController], {
        screenId: 'extn.home.portlets.BackroomPickPortletExtn',
        mashupRefs: [{
            sourceNamespace: 'backroomPick_getShipmentListReadyForPick_output',
            mashupRefId: 'getShipmentListReadyForPickInit',           
            mashupId: 'extnbackroomPick_getShipmentListReadyForPick',
			extnType:'MODIFY'
        }]
    });
});
Remarque :
  • La structure de la définition côté client est identique à celle de la définition côté client fournie par l'application avec peu de modifications.
  • La définition côté client de l'extension InitController doit étendre sc.plat.dojo.controller.ExtnScreenController.
  • Chaque MashupRef fourni dans la propriété mashupRefs doit contenir le nouvel attribut extnType et la valeur définie sur MODIFY doit être identique au fichier XML côté serveur.
  • Chaque MashupRef fourni dans la propriété mashupRefs ajoute uniquement les attributs que vous souhaitez remplacer autres que les attributs mashupId, mashupRefIdet extnType . Dans la plupart des cas, seuls les attributs mashupId, mashupRefIdet extnType sont requis.

L'extension de BehaviorController est identique à l'extension de InitController , sauf que la définition côté client de InitController doit étendre sc.plat.dojo.controller.ExtnScreenController. La définition côté client de BehaviorController doit étendre sc.plat.dojo.controller.ExtnServerDataController. Pour vous assurer que les extensions fonctionnent sur les contrôleurs, configurez les extensions d'écran de manière appropriée.