--- title: "Custom Application Management" type: operation sources: - sources/archives/Gestion_custom_application.md related: - architecture/application-dictionary.md - operations/development-methodology.md - operations/first-deployment.md - operations/deployment-existing-app.md - operations/git-workflow.md - operations/code-review-process.md last_compiled: "2026-04-17" --- # Custom Application Management ## Overview Procédure de **gestion de la custom application** EasyWMS (extension AD projet) via **EasyBuilder** : création, import et export. La custom app contient l'ensemble des éléments AD spécifiques au projet (Commands, Queries, Entities, Workflows, Dialogs…) compilés au-dessus du core EasyWMS et des modules standards activés dans le `DeployConfig.yaml`. > ⚠️ Plusieurs développeurs peuvent travailler sur un même projet depuis des VM différentes. Une **gestion rigoureuse de la CustomApp** et une **bonne communication** sur l'avancement sont indispensables pour éviter les écrasements. Règles de base : - **Exporter** la CustomApp **à chaque fin de tâche** (après tests locaux) - **Réimporter** la CustomApp de `develop` **après merge** de votre branche dans `develop` - Si vous **rejoignez un projet en cours** → l'**import** de la CustomApp existante est la **première chose à faire** > ⛔ Une mauvaise manipulation ici peut entraîner la **perte de vos développements**. Procéder avec soin. Source : Confluence EasyWMS France — *Gestion de la custom application* (v12, 20/12/2022). ## 1. Création de l'application custom À n'exécuter qu'**une seule fois par projet** (le premier développeur). Les autres devs font un **Import** (cf. section 2). ### Option A — Partir d'une app existante du Toolkit Si le projet réutilise des modifications déjà packagées dans le dépôt [**FRANCE_OPERATIONS_TOOLS**](https://msscode.mecalux.com/Proyectos_SW/FRANCE_OPERATIONS_TOOLS.git) (ex. modifications habituelles du module transporteur) : 1. Cloner le projet **FRANCE_OPERATIONS_TOOLS** en local 2. Réaliser l'import (cf. section 2) depuis : ``` ..\FRANCE_OPERATIONS_TOOLS\ ``` Exemple : `..\FRANCE_OPERATIONS_TOOLS\Module transporteur` ### Option B — Créer une application vierge Dans **EasyBuilder** : 1. **Clic droit sur "Application"** → **"New application"** 2. Saisir le nom de l'application 3. Définir les dépendances (en général : **`EasyWMS`**) ### Premier export Après création, faire un **1ᵉʳ export sur la branche `develop`** du dépôt GIT (cf. section 3) pour initialiser `..\source\NomApplication` et permettre aux autres devs d'importer. ## 2. Import de l'application custom > ⚠️ **Avant d'importer**, il faut d'abord **supprimer** la CustomApp existante dans votre Builder local. ### Procédure d'import 1. Dans EasyBuilder : clic droit sur l'application custom existante → **"Delete application"** 2. Clic droit sur **"Applications"** → **"Import and save application from text"** 3. Sélectionner le chemin dans votre dépôt GIT : ``` ..\source\NomApplication ``` ### Quand importer | Situation | Import ? | |-----------|----------| | Vous rejoignez un projet en cours | **Oui** (première action) | | Vous venez de merger votre branche dans `develop` | **Oui** (réimporter le `develop` à jour) | | Un collègue a poussé une modif majeure sur `develop` | **Oui** après `git pull` | | Vous démarrez la journée sur votre branche perso | **Non** — travailler sur votre export local | ## 3. Export de l'application custom ### Pré-requis > ⚠️ **Avant l'export**, **vider** le dossier de destination dans le dépôt GIT : > ``` > ..\source\NomApplication > ``` > Sinon, des anciens fichiers orphelins peuvent rester et polluer le diff. > ⚠️ Bien vérifier d'être sur **la branche de votre tâche** avant d'exporter. > ⛔ **Aucun élément en "Check-out" n'est sauvegardé ni exporté.** Tous les Check-in doivent être effectués avant l'export. ### Procédure d'export 1. Dans EasyBuilder : clic droit sur l'application custom → **"Export application to text"** 2. Sélectionner le chemin : ``` ..\source\NomApplication ``` ### Suites logiques - **Commit + push** sur la branche de votre tâche — cf. [git-workflow](git-workflow.md#3--commit-de-vos-modifications) - Les fichiers exportés peuvent être **séparés en plusieurs** pour un même élément AD (workflow, source C#, DESIGN…). Bien prendre **tous** les fichiers portant le nom de l'élément modifié. ## Règles de coexistence multi-développeurs | Situation | Action | |-----------|--------| | Plusieurs devs sur le projet | Chacun sur sa **branche GIT personnelle** (cf. [development-methodology](development-methodology.md)) | | Éviter les écrasements | **Export systématique** en fin de tâche + **import** après merge dans `develop` | | Éléments en Check-out | À **Check-in avant export** — sinon perte silencieuse | | Structure commune (toolkit) | Utiliser **FRANCE_OPERATIONS_TOOLS** en option A de création | ## Common errors - **Perte de développements après import** → la CustomApp locale contenait des changements non exportés. **Toujours exporter avant de supprimer/importer.** - **Diff GIT pollué par d'anciens fichiers** → dossier de destination non vidé avant export. Vider `..\source\NomApplication` avant chaque export. - **Élément absent du dépôt après export** → élément laissé en **Check-out** dans EasyBuilder. Les Check-out sont silencieusement ignorés à l'export. - **Import échoue avec des erreurs de dépendances** → `EasyWMS` (ou autre module requis) non listé comme dépendance lors de la création. Re-créer la custom app avec les bonnes dépendances. - **Conflits récurrents sur la CustomApp** → deux devs poussent en parallèle sur `develop`. Respecter le workflow : branche perso → rebase avant merge → export/import séquentiel (cf. [git-workflow](git-workflow.md) + [development-methodology](development-methodology.md)). - **Fichiers partiels commités** → un même élément est sérialisé en plusieurs fichiers (workflow, C#, DESIGN). Bien stager **tous les fichiers** avant commit. ## Related - [Application Dictionary](../architecture/application-dictionary.md) — contenu packagé dans la custom app (Commands, Queries, Entities, Views, Dialogs, Events, Workflows) - [Development Methodology](development-methodology.md) — stratégie de branches et cadre dans lequel s'inscrit la gestion de la custom app - [First Deployment](first-deployment.md) — création initiale de la custom app (étape 9) et référencement dans `DeployConfig.yaml` (étape 10) - [Deploy Existing Application](deployment-existing-app.md) — import custom app lors d'un redéploiement (étape 6 si anciens scripts) - [Git Workflow](git-workflow.md) — rythme commit/push et gestion des branches