Proposition de développement

Répondre
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

mar. août 15, 2017 11:23 pm

Bonjour,

Hier et aujourd'hui j'ai bossé un peu sur un serveur REST en java (jetty+jersey) pour bénéficier de la couche d'abstraction (et tout le reste) d'OpenConcerto et du coup rester sur les technologies d'origine, j'ai repris une partie du code de Gestion.java et l'ai adapté pour une utilisation NoUI. (J'ai laissé en stand-by la version PHP le temps de voir ce que je peux faire en java)
Bien joué pour le fichier product.properties, ça permet de créer des applications dérivées du code d'OC et pouvoir les faire cohabiter ensemble ;) .

Pour développer un peu tout ça, voilà ce que je compte faire:
- une application NoUI (en ligne de commande, que ce soit déployable sans problème sur un serveur) (me reste à faire la partie config, j'ai créé les fichiers et répertoires à la main pour lancer le projet), je me suis basé sur le fonctionnement de Gestion.java.
- le tout embarqué dans un seul et unique JAR executable (projet maven)
- l'application est démarrée avec les identifiants d'un utilisateur propre créé dans OC, ou ceux du compte administrateur par défaut.
- une authentification oAuth2 pour les accès clients comme suit:
--- un schema PostgreSQL "oauth2_authentication" pour les données relative à l'authentification
--- un module à installer sur OC qui permet de gérer ces accès directement à partir d'OpenConcerto
----- gestion des accès clients oAuth2 -> un client = une application
----- gestion des comptes utilisateurs de ces applications (possibilité de rattacher ces comptes à un utilisateur, salarié ou un contact client), un utilisateur peux utiliser plusieurs clients oAuth2 (mais avoir des droits différents selon le client utilisé)
----- gestion des droits d'accès
--- je pense utiliser Apache Oltu (https://oltu.apache.org)

C'est un truc que je souhaiterais mettre à dispo de la communauté par la suite, je suis pas développeur et je maitrise pas vraiment les process de développement (UML, Merise, ...), je suis plutôt du genre "je réflechie à ce que je veux, je code et je teste" :) mais je pense que je peux arriver à sortir qqchose de correct si vous m'aiguillez un peu (je passe un temps fou à analyser les sources et le manuel n'est pas d'une grande utilité pour le développement "poussé" (ce qui est normal) :) ).

Le but de tout ça est de pouvoir créer par la suite rapidement et facilement des "connecteurs" pour augmenter les capacités d'OpenConcerto, je suis persuadé que c'est un logiciel qui peux aller beaucoup plus loin que ce qu'il propose aujourd'hui (c'est d'ailleurs pour ce côté opensource et son potentiel que je l'ai adopté :)).

Qu'en pensez vous Guillaume ?
Avatar du membre
guillaume
Messages : 2429
Enregistré le : ven. févr. 11, 2011 7:15 pm

jeu. août 17, 2017 9:50 am

Bonjour,

On a une classe pour le "noUI" qui est "HeadlessOpenConcerto", elle sera dans la 1.5.1.
Concernant Jersey, je ne connais pas assez pour vous donner un retour éclairé. Implémenter du REST peut se faire directement sans passer par un framework, ce n'est pas bien compliqué ni long à faire (moins que de lire leur doc).

Pour oauth2, Oltu est un bon choix.

Concernant l'API, utilisez le SQLDirectory pour récupérer les éléments (SQLElement) et exposez les, ça reste le meilleur compromis facilité d'implémentation / fonctionnalités.

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

ven. août 18, 2017 8:21 am

Bonjour Guillaume, merci pour votre retour.

Je vais attendre la 1.5.1 pour la classe HeadlessOpenConcerto.
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

lun. sept. 25, 2017 5:18 pm

Bonjour Guillaume,

Puis je avoir accès à cette classe (HeadlessOpenConcerto) ??

Merci.
Avatar du membre
guillaume
Messages : 2429
Enregistré le : ven. févr. 11, 2011 7:15 pm

mar. sept. 26, 2017 2:05 pm

Bonjour,

Voici sa version "light" et fonctionnelle :

Code : Tout sélectionner

public class HeadlessOpenConcerto {
    final ComptaPropsConfiguration comptaPropsConfiguration;

    public HeadlessOpenConcerto(int userId, int companyId) {
        System.setProperty("java.awt.headless", "true");
        System.setProperty("org.openconcerto.sql.structure.useXML", "true");
        final ComptaPropsConfiguration conf = ComptaPropsConfiguration.create();
        TranslationManager.getInstance().addTranslationStreamFromClass(MainFrame.class);
        TranslationManager.getInstance().setLocale(Locale.getDefault());
        Configuration.setInstance(conf);
        try {
            conf.getBase();
        } catch (Exception e) {
            throw new IllegalStateException("Unable to configure database connection", e);
        }

        try {
            UserManager.getInstance().setCurrentUser(userId);
            this.comptaPropsConfiguration = ((ComptaPropsConfiguration) Configuration.getInstance());
            this.comptaPropsConfiguration.setUpSocieteDataBaseConnexion(companyId);
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalStateException("Unable to configure connection for userId: " + userId + " companyId: " + companyId);

        }
        System.out.println("HeadlessOpenConcerto ready");
        System.out.println("Connected to " + conf.getServerIp() + " on " + conf.getSystemRootName() + "/" + conf.getSocieteBaseName());

    }

    public ComptaPropsConfiguration getComptaPropsConfiguration() {
        return this.comptaPropsConfiguration;
    }

    public DBRoot getCompanyRoot() {
        return this.comptaPropsConfiguration.getRootSociete();
    }

    public DBRoot getCommonRoot() {
        return this.comptaPropsConfiguration.getRoot();
    }
}

Rien de sorcier.

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

mer. sept. 27, 2017 8:25 pm

Bonjour Guillaume,

Merci pour le retour, effectivement c'est plus "light" et propre que ce que j'avais codé ;).
Répondre