Aller au contenu principal

Empaquetage et déploiement

Les workflows prennent en charge deux formes : workflow unique et package multi-workflows. Les workflows uniques conviennent aux scénarios simples, tandis que les packages multi-workflows conviennent aux ensembles de workflows partageant du code.

Workflow unique​

La forme la plus simple : un répertoire contenant un workflow.json et ses scripts Hook :

my-workflow/
├── workflow.json
└── hooks/
├── buildRequest.mjs
└── applyResult.mjs

Un workflow unique n'a pas de packageId, et les scripts Hook ne peuvent pas partager de code via des imports relatifs.

Package multi-workflows​

Lorsque plusieurs workflows partagent de la logique, ils peuvent être organisés en package :

my-package/
├── workflow-package.json # Manifeste du package
├── lib/ # Code partagé
│ └── runtime.mjs
│ └── util.mjs
├── workflow-a/
│ ├── workflow.json
│ └── hooks/
│ ├── buildRequest.mjs
│ └── applyResult.mjs
├── workflow-b/
│ ├── workflow.json
│ └── hooks/
│ └── applyResult.mjs
└── locales/ # Fichiers de localisation au niveau du package
├── zh-CN.json
└── ja-JP.json

workflow-package.json​

{
"id": "my-package",
"version": "1.0.0",
"workflows": [
"workflow-a/workflow.json",
"workflow-b/workflow.json"
],
"i18n": {
"defaultLocale": "en-US",
"locales": {
"zh-CN": "locales/zh-CN.json",
"ja-JP": "locales/ja-JP.json"
}
}
}

Code partagé au sein d'un package​

Les scripts Hook dans un package peuvent importer des modules partagés depuis lib/ via des chemins relatifs :

// workflow-a/hooks/applyResult.mjs
import { processResult } from "../../lib/util.mjs";

export async function applyResult({ parent, bundleReader, runtime }) {
return processResult({ parent, bundleReader, runtime });
}
// lib/util.mjs
export function processResult({ parent, bundleReader, runtime }) {
// Logique de traitement partagée
}

Remarque : Les scripts Hook sont exécutés en tant qu'ES Modules, supportant les instructions import, mais les chemins d'importation doivent être relatifs au fichier Hook lui-même.

Méthodes de déploiement​

Répertoire de workflows utilisateur​

Placez le répertoire du workflow dans le répertoire de workflows configuré dans les préférences de Zotero. Le Workflow Manager analyse automatiquement ce répertoire (y compris les sous-répertoires) et découvre tous les fichiers workflow.json.

Emplacement de configuration : Zotero → Paramètres → Zotero Agents → Répertoire de workflows.

Règles d'analyse de répertoires​

  • Le Workflow Manager analyse récursivement le répertoire de workflows et ses sous-répertoires
  • La découverte d'un workflow.json l'enregistre en tant que workflow
  • Si un workflow-package.json est trouvé dans un répertoire de package, les sous-workflows sont chargés en mode package
  • Si le répertoire de workflows n'existe pas ou ne contient aucun workflow valide, le Workflow Manager signale un avertissement mais n'affecte pas le fonctionnement du plugin

Compatibilité avec d'autres formats​

Emplacement de stockageVisibilitéDescription
Package de workflows officiel content/official/workflows/Tous les utilisateursInstallé indépendamment via le flux de contenu ; non modifiable directement par les utilisateurs
Répertoire de workflows utilisateurUtilisateur courantPeut être librement ajouté/modifié/supprimé
Répertoires officiel + utilisateurAffichage combinéLes workflows des deux emplacements sont affichés côte à côte dans le tableau de bord

Validation​

Après avoir déployé un workflow dans le répertoire utilisateur :

  1. Rouvrez le tableau de bord ; le nouveau workflow devrait apparaître dans la liste des workflows de la page d'accueil
  2. Après avoir sélectionné les notices correspondantes, faites un clic droit → Zotero Agents ; le nouveau workflow devrait apparaître
  3. Avant d'exécuter le workflow, vérifiez que les paramètres dans la boîte de dialogue sont corrects

Prochaines étapes​