Plate-forme de nouvelle génération

Masquage des portlets

Vous pouvez avoir un cas d'utilisation métier dans lequel l'autorisation de ressource ou l'attribut showPortlet du fichier isf-persona-config.json ne peut pas être utilisé pour afficher ou masquer des portlets dans l'application.

L'infrastructure de personnalisation permet de déterminer si les portlets doivent être masqués lors de l'exécution de l'application. Dans le cadre de l'amorçage de l'application, l'application composite isf.common.getHiddenPortletList est appelée, ce qui renvoie la liste des portlets qui doivent être masqués.

Pour implémenter la logique personnalisée, dans le fichier isf-persona-config.json , configurez les attributs showPortlet et callShowPortletMashup en tant que true, puis remplacez l'application composite isf.common.getHiddenPortletList . La définition d'application composite fournie par l'application utilise la classe d'application composite personnalisée com.ibm.isf.home.ISFGetHiddenPortlets . Remplacez la classe Java™ personnalisée par une nouvelle classe.

L'exemple de définition d'application composite suivant montre l'application composite isf.common.getHiddenPortletList une fois qu'elle a été remplacée.
<mashup
        description="Get list of portlets to be hidden"
        endpoint="EP_CONFIG" id="isf.common.getHiddenPortletList" mashuptype="XAPI"
        skipDataProvider="false" transactional="true">
        <classInformation name="com.ibm.isf.home.ISFGetListOfPortletsToHide"/>
        <API Name="Dummy">
            <Input>
                <Dummy/>
            </Input>
            <Template>
            </Template>
        </API>
        <APINamespace inputNS="isf.common.getHiddenPortletList_input"
            outputNS="isf.common.getHiddenPortletList_output" />
        <AlternateResourceIds>
            <AlternateResourceId altResourceId="ISFSYS00001"/>
        </AlternateResourceIds>
    </mashup>
Remarque: dans l'exemple de définition d'application composite, le nom de classe com.ibm.isf.home.ISFGetListOfPortletsToHide est utilisé.
L'exemple de code suivant illustre une classe Java personnalisée:
public class ISFGetListOfPortletsToHide implements ISCUIMashup {
@Override
public Object execute(Object input, SCUIMashupMetaData mashup, SCUIContext ctx) {
        Document doc = SCXmlUtil.createDocument("Portlets");
        Element portletsElement = doc.getDocumentElement();
        /*Custom logic to determine if portlets needs to be hidden*/
        // Element portlet = SCXmlUtil.createChild(portletsElement, "Portlet");
        // portlet.setAttribute("PortletTID", "pickOrderPortlet");
        /* output format 
        <Portlets>
        <Portlet PortletTID="pickOrderPortlet"></Portlet>
        </Portlets>
       */
        return portletsElement;   
}
}
Remarque: L'application composite personnalisée doit renvoyer la sortie au format suivant:
<Portlets>
        <Portlet PortletTID="pickOrderPortlet"></Portlet>
        </Portlets>