Passa al contenuto principale

Pacchettizzazione e distribuzione

I Workflow supportano due forme: Workflow singolo e pacchetto multi-Workflow. I Workflow singoli sono adatti a scenari semplici, mentre i pacchetti multi-Workflow sono adatti a raccolte di Workflow con codice condiviso.

Workflow singolo

La forma più semplice: una directory contenente un workflow.json e i suoi script Hook:

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

Un Workflow singolo non ha packageId e gli script Hook non possono condividere codice tramite importazioni relative.

Pacchetto multi-Workflow

Quando più Workflow condividono logica, possono essere organizzati come un pacchetto:

my-package/
├── workflow-package.json # Manifesto del pacchetto
├── lib/ # Codice condiviso
│ └── runtime.mjs
│ └── util.mjs
├── workflow-a/
│ ├── workflow.json
│ └── hooks/
│ ├── buildRequest.mjs
│ └── applyResult.mjs
├── workflow-b/
│ ├── workflow.json
│ └── hooks/
│ └── applyResult.mjs
└── locales/ # File di localizzazione a livello di pacchetto
├── 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"
}
}
}

Codice condiviso all'interno di un pacchetto

Gli script Hook in un pacchetto possono importare moduli condivisi da lib/ tramite percorsi relativi:

// 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 }) {
// Logica di elaborazione condivisa
}

Nota: Gli script Hook vengono eseguiti come ES Module, supportando le istruzioni import, ma i percorsi di importazione devono essere relativi al file Hook stesso.

Metodi di distribuzione

Directory dei Workflow dell'utente

Posiziona la directory del Workflow sotto la Directory dei Workflow configurata nelle Preferenze di Zotero. Il Workflow Manager scansiona automaticamente questa directory (incluse le sottodirectory) e scopre tutti i file workflow.json.

Posizione della configurazione: Zotero → Impostazioni → Zotero Agents → Directory dei Workflow.

Regole di scansione delle directory

  • Il Workflow Manager scansiona ricorsivamente la directory dei Workflow e le sue sottodirectory
  • Trovare un workflow.json lo registra come Workflow
  • Se viene trovato workflow-package.json all'interno di una directory del pacchetto, i sotto-Workflow vengono caricati in modalità pacchetto
  • Se la directory dei Workflow non esiste o non contiene Workflow validi, il Workflow Manager riporta un avviso ma non influisce sul funzionamento del plugin

Compatibilità con altri formati

Posizione di archiviazioneVisibilitàDescrizione
Pacchetto ufficiale dei Workflow content/official/workflows/Tutti gli utentiInstallato indipendentemente tramite il Feed dei contenuti; non direttamente modificabile dagli utenti
Directory dei Workflow dell'utenteUtente correntePuò essere liberamente aggiunta/modificata/eliminata
Directory ufficiali + utenteVisualizzazione combinataI Workflow di entrambe le posizioni vengono visualizzati fianco a fianco nella Dashboard

Validazione

Dopo aver distribuito un Workflow nella directory dell'utente:

  1. Riapri la Dashboard; il nuovo Workflow dovrebbe apparire nell'elenco dei Workflow della pagina Home
  2. Dopo aver selezionato gli elementi corrispondenti, fai clic con il tasto destro → Zotero Agents; il nuovo Workflow dovrebbe apparire
  3. Prima di eseguire il Workflow, verifica che i parametri nella finestra di configurazione siano corretti

Passi successivi