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 définition côté client de l'extension InitController est la suivante: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
MashupRefdoit contenir un nouvel attributextnTypeavec la valeur définie surMODIFY. - Dans l'élément
MashupRef, l'attributmashupRefIddoit être identique à l'attribut défini dans le fichierInitControllerfourni 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 attributsmashupId,mashupRefIdetextnType. Dans la plupart des cas, seuls les attributsmashupId,mashupRefIdetextnTypesont requis.
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
InitControllerdoit étendresc.plat.dojo.controller.ExtnScreenController. - Chaque
MashupReffourni dans la propriétémashupRefsdoit contenir le nouvel attributextnTypeet la valeur définie surMODIFYdoit être identique au fichier XML côté serveur. - Chaque
MashupReffourni dans la propriétémashupRefsajoute uniquement les attributs que vous souhaitez remplacer autres que les attributsmashupId,mashupRefIdetextnType. Dans la plupart des cas, seuls les attributsmashupId,mashupRefIdetextnTypesont 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.