Copier une ressource
Présentation générale
Cet outil permet de dupliquer (créer une copie) un document de processus, une donnée de réservoir, un tableau de sous-processus ou une ligne de tableau dynamique depuis le formulaire et demain depuis une vue (évolution prévue). À ce jour, un bouton est affiché en haut de l’élément (document de processus, donnée de réservoir …) et permet de lancer un assistant configurable de copie.
Fonctionnalités
- Recopier tous les champs automatiquement
- Recopier uniquement certains champs automatiquement (recopie dans la même propriété ou dans une propriété différente par mappage)
- Afficher pendant l’assistant un sous-formulaire pour que l’utilisateur puisse modifier la valeur de certains champs avant recopie
- Il est possible d’activer la fonctionnalité de duplication uniquement pour les documents à une certaine étape ou ayant un certain état système. Tout intervenant courant sur le document peut donc créer une copie du document.
- Note : si aucun filtre sur l’étape ou le statut n’est défini : toute personne ayant accès au document (lecture) visualise le bouton spécifique et peut donc créer une copie du document (pas de gestion de la sécurité / droit en dehors du masquage du bouton)
- Permet de spécifier l’étape du document cible (par exemple, copier un document terminé mais l’envoyer à la 3ème étape en rejouant l’historique du document d’origine).
Écrans de l’assistant
- Écran de modification de valeurs : si un sous-formulaire est spécifié, il sera affiché en première page de l’assistant afin que l’utilisateur puisse modifier les valeurs de champs, ces valeurs seront écrites dans le document copié.
- /!\ A ce jour (vdoc-kit 3.0.2), pas de gestion de tableaux dynamiques sur ce sous-formulaire.
- Écran de rapport : affichage d’un rapport d’exécution listant le document traité (avec succès ou non) et permettant l’ouverture du nouveau document issu de la copie.
Bugs connus
À ce jour (en version vdoc.kit 2.0.1 et avant), la fonctionnalité de Nouveau par copie est bugée en raison d’une anomalie de conception dans la bibliothèque de bas niveau sdk.commons :
- Dans le cas des tableaux dynamiques (type collection ILinkedResource), après copie, les lignes de tableau sont partagées entre les deux documents. Le document source et le document cible sont tous les deux “pères” des lignes de tableau.
- /!\ Ce bug a été corrigé depuis la v3.0.0 de sdk-common.
Historiquement, ce problème de ressource partagée se posait aussi pour les champs de type pièces jointes / IAttachment (mais cela a été corrigé dans SDK commons) et pour les tableaux de sous-processus / IWorkflowInstance.
Utilisation
Pour mettre en place cet outil, il faut installer une extension JAVA sur un formulaire.
Extension de formulaire
Pour la copie de documents processus, il faut placer l’extension sur un formulaire de document, d’étape ou sur un sous-formulaire :
com.vdoc.kit.ui.extensions.document.CopyWorkflowInstanceDocumentExtension
Pour la copie de données, ajoutez l’extension suivante sur le formulaire associé à la table :
com.vdoc.kit.ui.extensions.storage.CopyStorageResourceExtension
Configuration (paramètres utilisateur au niveau du groupe de process)
Clé | Description |
---|---|
vdoc.kit.behaviors.resourcecopy.[Processus].task-filter | Liste des noms systèmes (séparés par des ; ) des étapes sur lesquelles afficher le bouton |
vdoc.kit.behaviors.resourcecopy.[Processus].status-filter | Liste des statuts internes (TERMINATED; ABORTED; STARTED) |
vdoc.kit.behaviors.resourcecopy.[Processus/TableDU].button-label | Clé de traduction pour le libellé du bouton |
vdoc.kit.behaviors.resourcecopy.[Processus/TableDU].subform | Nom du sous-formulaire à utiliser dans l’assistant pour modifier les valeurs des champs |
vdoc.kit.behaviors.resourcecopy.[Processus/TableDU].fields-to-copy | Liste des champs à copier automatiquement |
vdoc.kit.behaviors.resourcecopy.[Processus/TableDU].fields-to-exclude | Liste des champs à exclure de la copie |
vdoc.kit.behaviors.resourcecopy.[Processus/TableDU].fields-mapping | Liste des couples de champs à copier (champ source et destination séparés par le caractère pipe ` |
vdoc.kit.behaviors.resourcecopy.[Processus].newdocument.task | Étape du document cible |
[ChampTableauSousProcessus].fields-to-copy [ChampTableauSousProcessus].fields-to-exclude [ChampTableauSousProcessus].fields-mapping |
champs à copier |
/!\ ATTENTION : la copie des tableaux dynamiques est moins fine que celle des tableaux de sous-processus.
Pour contourner cette limitation (impossible d’exclure une colonne d’un tableau dynamique lors de la copie), le script ci-dessous peut être ajouté dans les abonnements de la version de processus (remplacez les éléments NomSystemeColonneAExclureDuTableauDynamique et NomSystemeColonneAExclureDuTableau) :
<!-- Dev spé pour exclure la colonne "NomSystemeColonneAExclureDuTableauDynamique" de la copie du tableau dynamique -->
<script on-stage="sys_CreationWizard"><![CDATA[
{
function onAfterSave()
{
var lignes= iWorkflowModule.getLinkedResources(iWorkflowInstance, "NomSystemeTableauDynamique");
if( lignes !=null )
{
for( it=lignes.iterator(); it.hasNext(); )
{
itLine = it.next();
itLine.setValue("NomSystemeColonneAExclureDuTableauDynamique",null);
itLine.save();
}
}
iWorkflowInstance.save("NomSystemeTableauDynamique");
}
}
]]></script>
Astuces d’utilisation
Il est conseillé d’exclure de la copie tous les champs rôles du processus (en renseignant le paramètre “x.fields-to-exclude”). Cela évite d’avoir les mêmes opérateurs sur le document copié que sur l’original.
Exemples
Exemple de paramétrage pour la copie de documents processus / sous-processus
# Bouton visible uniquement aux étapes "Validation de la réponse" et "Clôture de la demande"
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.task-filter=ValidationDeLaReponse;ClotureDeLaDemande
# Bouton visible sur les documents en cours, terminés, annulés
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.status-filter=TERMINATED;ABORTED;STARTED
# Clé de traduction si on souhaite personnaliser le libellé du bouton
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.button-label=LG_MON_LIBELLE_DE_BOUTON
# Le sous formulaire "SousFormulaireCustomCopie" sera utilisé dans l'assistant pour modifier les valeurs avant la copie
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.subform=SousFormulaireCustomCopie
# Tous les champs seront copiés automatiquement (les valeurs saisies dans le formulaire de l'assistant sont prioritaires)
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.fields-to-copy=*
# Liste des champs à exclure
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.fields-to-exclude=
# Liste des mapping de champs (Exemple : key=sourceField1|destinationFieldX;sourceField2|destinationFieldY;sourceField3|destinationFieldZ)
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.fields-mapping=
# Les documents copiés seront à l'étape "Validation de la réponse", tous les documents n'étant pas arrivé à cette étape ne pourront donc pas être copiés
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.newdocument.task=ValidationDeLaReponse
# Liste des champs de type tableaux de sous-processus à prendre en compte
vdoc.kit.behaviors.resourcecopy.GestionDesReclamationsClient.subprocess-fields=ChampTableauDeSousProcessus
# Section concernant la copie du tableau de sous-processus
ChampTableauDeSousProcessus.workflowcontainer=ProcessusAssocieAuTableauDeSousProcessus
ChampTableauDeSousProcessus.fields-to-copy=*
ChampTableauDeSousProcessus.fields-to-exclude=
ChampTableauDeSousProcessus.fields-mapping=
Exemple de paramétrage pour la copie de données du réservoir de données
# Clé de traduction si on souhaite personnaliser le libellé du bouton
vdoc.kit.behaviors.resourcecopy.Articles.button-label=LG_MON_LIBELLE_DE_BOUTON
# Le formulaire de la table sera utilisé dans l'assistant pour modifier manuellement les valeurs avant la copie
vdoc.kit.behaviors.resourcecopy.Articles.subform=MAIN_DOCUMENT_Edit
# Tous les champs seront copiés automatiquement (les valeurs saisies dans le formulaire de l'assistant sont prioritaires)
vdoc.kit.behaviors.resourcecopy.Articles.fields-to-copy=*
# Liste des champs à exclure
vdoc.kit.behaviors.resourcecopy.Articles.fields-to-exclude=
# Liste des mapping de champs (Exemple : key=sourceField1|destinationFieldX;sourceField2|destinationFieldY;sourceField3|destinationFieldZ)
vdoc.kit.behaviors.resourcecopy.Articles.fields-mapping=
Configuration de l’affichage dans le tableau d’historique du document (spécifique GED Java)
/!\ ATTENTION : les éléments décrits ci-dessous sont en réalité du spécifique mis en place dans la GED Java et ne sont pas une fonctionnalité standard du Nouveau par copie de vdoc.kit !
Le fonctionnement ci-dessous s’appuie, dans la GED Java, à la fois sur du code présent dans le Diagramme > pastille Script présente entre l’élément de début et la 1ière étape (pour ajouter une ligne dans l’historique du père) ET du code présent dans le sous-formulaire “NewVersion” via la classe d’extension com.vdoc.gedquality.documents.extensions.CreateNewVersion (pour ajouter une ligne dans l’historique du fils).
Il est possible d’enrichir le tableau d’historique du document source et du document cible avec une ligne spécifique.
Tableau d’historique dans le document Source après copie :
Tableau d’historique dans le document Cible après création par copie :
Définition des libellés
- Paramétrez les 2 clefs de traduction suivantes en créant un fichier XML dans le dossier
[INSTALL-VDoc]\custom\internationalization
:- LG_GED_COMMENTAIRE_HISTORY_IN_PARENT_VERSION : texte qui sera ajouté dans le tableau historique du document source (document qui a servit de modèle / point de départ pour la copie)
- LG_GED_COMMENTAIRE_HISTORY_IN_CHILD_VERSION : texte qui sera ajouté dans le tableau historique du document cible (document qui a été créé suite à la copie)
- Note : dans ces clefs, vous pouvez combiner des chaines statiques “en dur” et des signets de champs VDoc avec la syntaxe habituelle ${Nom_Système_Du_Champ}
- Rappel, pour prise en compte d’une modification : arrêtez l’instance VDoc, faites un Apply Config, redémarrez VDoc.
Exemple de fichier de traduction
<id value="LG_GED_COMMENTAIRE_HISTORY_IN_PARENT_VERSION">
<lang value="fr" flag="1">Création d'une nouvelle version ${sys_Reference}</lang>
<lang value="en" flag="1">New version created ${sys_Reference}</lang>
</id>
<id value="LG_GED_COMMENTAIRE_HISTORY_IN_CHILD_VERSION">
<lang value="fr" flag="1">Nouvelle version créée depuis le document ${sys_Reference}</lang>
<lang value="en" flag="1">New version created from document ${sys_Reference}</lang>
</id>
Personnaliser l’écran de résultat
Introduction
En fin d’assistant, un écran de résultat s’affiche :
Par défaut le paramétrage de VDoc kit affiche le texte suivant : “Le document ${sys_Reference} - ${sys_Title} a été créé avec succès”; en effet ces 2 champs systèmes existent par défaut dans VDoc.
Personnalisation du message résultat
Il est possible de personnaliser le texte en jouant sur :
- Texte statique (avec gestion multi-langues)
- Signets VDoc
- Mise en forme HTML (attention à échapper les caractères du code HTML pour ne pas “corrompre” la syntaxe du fichier XML par la présence de <>).
Pour cela :
- Ouvrez le fichier
vdoc.kit-i18n.xml
présent dans[INSTALL-VDoc]\apps\vdoc.kit-xx.zip\internationalization
- Extrayez la clef
LG_COPY_RESOURCE_RESULT_OK
et copiez cette clef dans un fichier XML de traduction personnalisé (ou créez un nouveau fichier XML pour cette clef) dans le dossier[INSTALL-VDoc]\custom\internationalization
- Enfin : arrêtez VDoc, faites un Apply Config, redémarrez VDoc.