Implémenter des services plus facilement
Problème
L'API Java pour implémenter des services OFBiz à l'avantage d'être relativement simple dans la mesure où l'ensemble du contexte est accessible de manière locale via ses paramètres.
Map<String, Object> doSync(Map<String, Object> context, Map<String, Object> params);
Malheureusement cette simplicité a aussi pour effet d'imposer de manipuler le contexte pour accéder au délégateur et dispatcheur. Cette "difficulté" a amené la communauté OFBiz a déveloper des moteurs de services basés sur des langages spécifiques au domaine (DSL) pour faciliter le travail pour des non-dévéloppeur. D'abord Minilang puis maintenant un DSL embarqué dans Groovy.
Le problème de ces solutions est qu'elles sont inutilement compliqués ce qui les rendent peut flexible et réutilisable.
Proposition
On faire en sorte que le dispatcheur, le délégateur et les autres fonctionalités principales d'OFBiz soient directement accessibles sans avoir à les extraire du contexte, de sorte de voir uniquement une implémentation comme une fonction de Map → Map
Map<String, Object> wrappedDoSync(Map<String, Object> params);
Pour cela on veut créer un adapteur permettant de passer de la première signature de méthode à la deuxième.