ERP en LOGICIEL LIBRE dédié aux PME-PMI

           Devenez partenaire Principal ou Majeur de Neogia

Multi Service


Fonctionnement

Lors de l'appel d'un service par l'handler service-multi, il est possible de passer des variables d'un service à un autre, au travers de la session.

Pour ce faire, il est nécessaire dans la définition de service de positionner les variables en "INOUT". Ces variables ne doivent pas être présente dans le context initiale de la requette sinon ce sont ces dernières qui seront prise en compte.

Lors du retour de service, le service appelé doit avoir dans ses paramêtres de retour, les variables à transmettre aux services suivant.

Exemple

<service name="exemple" engine="java" auth="true"                    
      location="org.ofbiz.exemple.Exemple" invoke="exemple">
  <attribute name="champ1" type="String" mode="IN" optional="false"/>
  <attribute name="champTransfert" type="String" mode="INOUT" optional="true"/>
</service>

Exemple.java
public static Map exemple(DispatchContext ctx, Map context) {
   String champ1 = (String) context.get("champ1");
   String champTransfert = (String) context.get("champTransfert");
   if (champTransfert == null)
      champTransfert = champ1;
   Map result = ServiceUtil.returnSuccess();
   result.put("champTransfert", champTransfert );
   return result;
}

Dans les services existant utilisant se procédé : prepareBankGlEntry et createBankGlEntry (module naccounting)