ofbiz-framework issueshttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues2020-03-17T07:52:28Zhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/125Simplification du deploiement d'OFBiz2020-03-17T07:52:28ZMathieu LirzinSimplification du deploiement d'OFBiz## Problème
Actuellement le déploiement d'OFBiz doit se faire en livrant à la fois un Jar et un dossier contenant les sources XML/Groovy/Freemarker.
```mermaid
graph LR
A[ofbiz.jar] -->|classes| B(Production)
C[root directory] ...## Problème
Actuellement le déploiement d'OFBiz doit se faire en livrant à la fois un Jar et un dossier contenant les sources XML/Groovy/Freemarker.
```mermaid
graph LR
A[ofbiz.jar] -->|classes| B(Production)
C[root directory] -->|config/XML/FTL| B(Production)
```
Cette façon de procéder a 3 incovénients majeurs:
1. Ne s'intègre pas avec le mécanisme de gestion de dépendances de la plateforme Java basé sur la distribution de Jar.
2. Complexité de procédure de déploiement en production.
3. Charge mentale inutilement importante pour se représenter comment un fichier présent dans les sources est récupéré (système de fichier?, classpath?, un peu des deux?)
## Proposition
La solution envisagé consiste a donc distribuer l'ensemble des fichiers requis au lancement d'OFBiz dans `ofbiz.jar` et d'accéder aux fichiers en utiliser [le mécanisme de resource de l'API Java](https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html).
```mermaid
graph LR
A[ofbiz.jar] -->|classes/config/XML/FTL| B(Production)
```
## Tâches
Cette solution impose un travail important nécessitant de réaliser les étapes suivantes:
- [x] Rajouter dans le [build.gradle](build.gradle#L267) l'ensemble des fichiers
- [X] Schémas XML (`.xsd`)
- [x] Templates FreeMarker (`.ftl`)
- [x] Scripts Groovy (`.groovy`)
- [x] Scripts minilang (`.xml`)
- [x] fichiers de définition des composants/services/entités (`.xml`)
- [ ] Trouver une solution permettant de charger un composant OFBiz à partir d'un Jar
- [ ] Trouver une solution pour gérer les propriétés de configurations en permettant leur modification sans avoir à modifier les fichiers `.properties` du framework.
- [ ] Adapter la résolution de fichiers pour utiliser le classpath par défault
- [ ] Adapter la résolution des URL type `component://example/`
Il y a une issue ouverte sur Jira: [OFBIZ-11161](https://issues.apache.org/jira/browse/OFBIZ-11161)la repriseAntoine OuvrardAntoine Ouvrardhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/39Réusinage et documentation de ‘EntityCondition’2022-12-30T15:55:16ZMathieu LirzinRéusinage et documentation de ‘EntityCondition’L'organisation de la hiérarchie de classe `EntityConditionBase` mériterait d'être repensée. Premièrement elle fait un usage abusif de l'héritage avec pour unique objectif de partager du code. Le diagramme suivant représente la hiérarchie...L'organisation de la hiérarchie de classe `EntityConditionBase` mériterait d'être repensée. Premièrement elle fait un usage abusif de l'héritage avec pour unique objectif de partager du code. Le diagramme suivant représente la hiérarchie de classes actuelle:
```mermaid
graph BT
EntityCondition-->EntityConditionBase
EntityOperator-->EntityConditionBase
EntityConditionValue-->EntityConditionBase
```
Il faut dans premier temps séparer `EntityCondition`, `EntityConditionValue`, et `EntityOperator` en trois hiérarchies différentes:
- [x] Vider la classe `EntityConditionBase`
- [x] Supprimer l'héritage
La deuxième étape consiste à refactoriser et documenter `EntityCondition`:
- [x] Transformer `EntityCondition` en interface
- [x] Remplacer la classe `EntityConditionFunction` par `EntityNotCondition`
- [x] Supprimer le code mort
- [x] Écrire la javadoc
On laisse de coté la refactorisation/documentation de `EntityOperator` et `EntityConditionValue` pour un autre ticketYolande et remontée de codeGil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/27Amélioration de la gestion des erreurs sur l'appel du run groovy DSL2022-06-24T15:57:11ZLeila MekikaAmélioration de la gestion des erreurs sur l'appel du run groovy DSLAmélioration de la gestion des erreurs sur l'appel du runService groovy DSL.
runService throw une ExecutionServiceException et le message d'erreur obtenu en retour est trop détaillé
https://pad.libre-entreprise.org/p/OFBizErreurGroovyAmélioration de la gestion des erreurs sur l'appel du runService groovy DSL.
runService throw une ExecutionServiceException et le message d'erreur obtenu en retour est trop détaillé
https://pad.libre-entreprise.org/p/OFBizErreurGroovyBonne Année 2019Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/9Surcharge de la structure d'un menu par le thème : OFBIZ-106002018-10-17T08:51:24ZGil PortenseigneSurcharge de la structure d'un menu par le thème : OFBIZ-10600https://issues.apache.org/jira/browse/OFBIZ-10600https://issues.apache.org/jira/browse/OFBIZ-10600Améliorations UI et migration GroovyJulien NicolasJulien Nicolashttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/161Ajout du parametre auto-parameters-form sur on event update area2023-04-21T12:04:53ZLeila MekikaAjout du parametre auto-parameters-form sur on event update areaPermet de transferer les parametres saisis par l'utilisateur dans un unpdate areaPermet de transferer les parametres saisis par l'utilisateur dans un unpdate areaLeila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/160Correction de la validation de formulaire dans une modale2023-11-17T09:34:28ZLeila MekikaCorrection de la validation de formulaire dans une modaleLes champs obligatoires ne sont pas contrôlés dans un formulaire lorsque celui ci est a l'intérieur d'une modale.
Exemple:Les champs obligatoires ne sont pas contrôlés dans un formulaire lorsque celui ci est a l'intérieur d'une modale.
Exemple:Leila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/159Blog : correction condition d'affichage des content dans un screen2023-04-21T12:11:06ZLeila MekikaBlog : correction condition d'affichage des content dans un screenla balise content n'affiche pas correctement les images. Une condition de type empeche le chargement sans que la raison ne soit clairela balise content n'affiche pas correctement les images. Une condition de type empeche le chargement sans que la raison ne soit claireLeila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/158Le champ required n'est pas pris en compte dans un formulaire avec upload2022-07-01T12:53:19ZLeila MekikaLe champ required n'est pas pris en compte dans un formulaire avec uploadSouci remonté par Charles:
dans OFBiz, dans un Form de type "upload",
si en plus des champs nécessaires au chargement, on ajoute un champs supplémentaire obligatoire,
alors l'étoile "*" apparait bien mais cela ne fonctionne pas, j'arr...Souci remonté par Charles:
dans OFBiz, dans un Form de type "upload",
si en plus des champs nécessaires au chargement, on ajoute un champs supplémentaire obligatoire,
alors l'étoile "*" apparait bien mais cela ne fonctionne pas, j'arrive à submiter le formulaire sans remplir ce champs obligatoire
(en plus, le fond du champs reste clair au lieu d'etre en jaune)
illustration :
le Form
<form name="viewCreditNoteRequestAddDocument" type="upload" target="addCustRequestContent" default-table-style="basic-table" >
<field name="custRequestId"><hidden/></field>
<field name="uploadedFile" title="Fichier" tooltip="Taille des documents inférieurs à 5 Mo" required-field="true"><file/></field>
<field name="description" required-field="true"><text/></field>
<field name="upload" title="${uiLabelMap.CreditNoteRequestDownload}" position="2"><submit/></field>
</form>
et le rendu est le suivant :
![Capture_d_écran_de_2022-04-26_17-31-43](/uploads/77bd3eaed59769a6a86b2fc81c2af71c/Capture_d_écran_de_2022-04-26_17-31-43.png)Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/150Ajout d'un element callback dans les liens2023-11-17T09:33:22ZNicolas MalinAjout d'un element callback dans les liensNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/144Mettre a jour le formulaire d'execution de service selon le type de champs (E...2024-03-22T09:15:15ZLeila MekikaMettre a jour le formulaire d'execution de service selon le type de champs (Ex: datetimepicker pour un timestamp)Lors de l’exécution d'un service depuis webtools les paramètres IN apparaissent comme des champs de saisie texte quelquesoit le type de données attendu.
La proposition est d'adapter l'affichage du formulaire en fonction du type de champ ...Lors de l’exécution d'un service depuis webtools les paramètres IN apparaissent comme des champs de saisie texte quelquesoit le type de données attendu.
La proposition est d'adapter l'affichage du formulaire en fonction du type de champ attendu (hors objet)Leila MekikaLeila Mekikahttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/143Pouvoir mettre des templates de forms dans le thème2020-06-04T11:46:30ZNicolas MalinPouvoir mettre des templates de forms dans le thèmeNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/142Erreur lors de l'impersonnalisation malgré le droit admin composant2020-05-25T16:09:11ZLeila MekikaErreur lors de l'impersonnalisation malgré le droit admin composantIl s'agit d'un cas rencontré sur le projet Decathlon.
La personne qu'on veut impersonnaliser a le droit PARTYMGR_PCM_CREATE et le service recherche donc un PARTYMGR_PCM_ADMIN
Comme le fullAdmin n'a "que" le droit PARTYMGR_ADMIN, il consi...Il s'agit d'un cas rencontré sur le projet Decathlon.
La personne qu'on veut impersonnaliser a le droit PARTYMGR_PCM_CREATE et le service recherche donc un PARTYMGR_PCM_ADMIN
Comme le fullAdmin n'a "que" le droit PARTYMGR_ADMIN, il considère que ca n'est pas bon et retourne une erreur.
Il faudrait modifier le service pour appliquer la regle
PARTYMGR_ADMIN couvre PARTYMGR_*, PARTYMGR_PCM_ADMIN couvre PARTYMGR_PCM_*Gil PortenseigneGil Portenseignehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/141Enlever le chargement des élements ‘classpath’2020-05-25T16:09:11ZMathieu LirzinEnlever le chargement des élements ‘classpath’les fichiers `ofbiz-component.xml` contiennent des balises
```xml
<classpath type="dir" location="config"/>
```
qui sont ensuite ajoutés dynamiquement au classpath de la JVM [au démarrage d'OFBiz](https://labs.nereide.fr/10031/Communau...les fichiers `ofbiz-component.xml` contiennent des balises
```xml
<classpath type="dir" location="config"/>
```
qui sont ensuite ajoutés dynamiquement au classpath de la JVM [au démarrage d'OFBiz](https://labs.nereide.fr/10031/Communautaire/blob/trunk/framework/base/src/main/java/org/apache/ofbiz/base/container/ComponentContainer.java#L86-91). Vu que ces dossiers sont [déjà ajoutés statiquement au classpath par Gradle](https://labs.nereide.fr/10031/Communautaire/blob/trunk/build.gradle#L269) on a envie d'enlever la redondance.
Malheureusement comme souvent les choses ne sont pas aussi simple et la batterie de test du plugin ecommerce échouent après la suppression du code java d'ajout dynamique au classpath.
```shell
$ ./gradlew "ofbiz --test component=ecommerce --test suitename=ecommercetests"
# [...]
2019-11-26 17:19:56,956 |main |TestRunContainer |I| --> testSendOrderConfirmation(org.apache.ofbiz.ecommerce.OrderNotificationTests): assert ServiceUtil.isSuccess(serviceResult)
| |
false ['errorMessage':'Error rendering PDF attachment for email: org.apache.fop.apps.FOPException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".\njavax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".', 'responseMessage':'error']
2019-11-26 17:19:56,956 |main |TestRunContainer |I| Assertion failed:
assert ServiceUtil.isSuccess(serviceResult)
| |
false ['errorMessage':'Error rendering PDF attachment for email: org.apache.fop.apps.FOPException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".\njavax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 39; columnNumber: 37; Element type "fo:external-graphic" must be followed by either attribute specifications, ">" or "/>".', 'responseMessage':'error']
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:415)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670)
at org.apache.ofbiz.ecommerce.OrderNotificationTests.testSendOrderConfirmation(OrderNotificationTests.groovy:37)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at junit.framework.TestSuite.runTest(TestSuite.java:252)
at junit.framework.TestSuite.run(TestSuite.java:247)
at org.apache.ofbiz.testtools.TestRunContainer.start(TestRunContainer.java:90)
at org.apache.ofbiz.base.container.ContainerLoader.startLoadedContainers(ContainerLoader.java:156)
at org.apache.ofbiz.base.container.ContainerLoader.load(ContainerLoader.java:78)
at org.apache.ofbiz.base.start.StartupControlPanel.loadContainers(StartupControlPanel.java:160)
at org.apache.ofbiz.base.start.StartupControlPanel.start(StartupControlPanel.java:71)
at org.apache.ofbiz.base.start.Start.main(Start.java:90)
```Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/136Eviter les erreurs dans les logs au premier chargement des web.xml2020-05-25T16:09:11ZPierre GaudinEviter les erreurs dans les logs au premier chargement des web.xmlla reprisePierre GaudinPierre Gaudinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/133Fix multi modal opening2020-05-25T16:09:11ZGil PortenseigneFix multi modal openingWhen opening a modal with a lookup, closing it and opening it again, this error happens :
To reproduce :
The issue is that when closing the modal the div inside html dom is not removed. Then opening a second time create another ident...When opening a modal with a lookup, closing it and opening it again, this error happens :
To reproduce :
The issue is that when closing the modal the div inside html dom is not removed. Then opening a second time create another identical div.
Since a lookup is based on an unique id, this id is no more unique...
Attached patch fix the issuela reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/130Amélioration de createLogDirectoryIfMissing pour la création des journaux2020-03-17T00:40:15ZGhost UserAmélioration de createLogDirectoryIfMissing pour la création des journauxSi le dossier de journalisation n'existe pas ou qu'il ne possède pas les bons droit il faut passer en mode défault "runtime/logs"Si le dossier de journalisation n'existe pas ou qu'il ne possède pas les bons droit il faut passer en mode défault "runtime/logs"la reprisehttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/129Modification de la condition dans SqlJdbcUtil, pour permettre de creer un vie...2020-05-25T16:09:11ZLeila MekikaModification de la condition dans SqlJdbcUtil, pour permettre de creer un view-link avec une entity-condition uniquementNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/127Clojure dans OFBiz2020-03-17T01:07:27ZMathieu LirzinClojure dans OFBiz![Clojure](https://clojure.org/images/clojure-logo-120b.png)
[Clojure](https://clojure.org/) est un langage de programmation fonctionnel dynamiquement typé dérivé de LISP qui m'est l'accent à la fois sur la *simplicité* en se basant sur...![Clojure](https://clojure.org/images/clojure-logo-120b.png)
[Clojure](https://clojure.org/) est un langage de programmation fonctionnel dynamiquement typé dérivé de LISP qui m'est l'accent à la fois sur la *simplicité* en se basant sur des *structures de données génériques immutables* et sur le paradigme de *programmation fonctionnelle*. C'est également un langage très intéractif ne nécessitant de redémarrer l'application que de manière très exceptionnelle. Ces caractéristiques en font un langage de programmation très approprié au contexte de développement agile de traitement de l'information qui est celui d'OFBiz.
On se propose donc d'implémenter les abstractions d'OFBiz suivantes:
- [X] un moteur de services
- [ ] un request handler
- [ ] un moteur d'écrans
Pour tirer parti de l'aspect intéractif de la programmation en Clojure, un élément essentiel est d'avoir accès à un REPL (Read Eval Print Loop) pour cela on utilise le plugin Gradle [Clojurephant](https://clojurephant.dev/clojurephant/).Mathieu LirzinMathieu Lirzinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/126Recherche de commande sans pays d'expedition en obligatoire2019-08-28T07:10:48ZNicolas MalinRecherche de commande sans pays d'expedition en obligatoireNicolas MalinNicolas Malinhttps://labs.nereide.fr/10031/apache/ofbiz-framework/-/issues/116Improve DevOps using environment variable configuration2020-05-25T16:09:09ZAntoine OuvrardImprove DevOps using environment variable configurationhttps://issues.apache.org/jira/browse/OFBIZ-9498?jql=project%20%3D%20OFBIZ%20AND%20text%20~%20environment
Ajout d'un mécanisme de récupération de variable d'environnement depuis ofbiz.
https://issues.apache.org/jira/browse/OFBIZ-9498https://issues.apache.org/jira/browse/OFBIZ-9498?jql=project%20%3D%20OFBIZ%20AND%20text%20~%20environment
Ajout d'un mécanisme de récupération de variable d'environnement depuis ofbiz.
https://issues.apache.org/jira/browse/OFBIZ-9498Antoine OuvrardAntoine Ouvrard