Un motivo di progettazione che riproduce un diagramma di flusso?

3

Sto progettando un processo di trasformazione di un oggetto JSON in HTML / CSS. Consiste di:

  • Identificazione di componenti speciali
  • Estrazione dei componenti speciali
  • Analisi degli stili
  • Analisi del layout ecc.

Attualmente sto lavorando con una catena di promesse:

Promise.resolve(true)
    .then(copyBluePrint)
    .then(transformJsx)
    .then(readInputHTML)
    .then(writeOutputHTML)
    .then(uploadToHosting)
    .then(generateLink)
    .then(updateBuildRequest)
    .then(finish)
    .catch(err => {
        console.log('err -> ', err, err.stack);
    });

Ho due problemi principali:

  1. Flusso di lavoro rigoroso: uno stage non può modificare il corso del processo se necessario.
  2. Nessun payload: non ho alcun payload principale che viene passato tra le fasi.

Sto cercando uno schema, preferibile che possa essere implementato su NodeJS, che agisca come un diagramma di flusso - cioè un payload è passato & il flusso attraverso gli stadi è dinamico. Qualche suggerimento?

    
posta Guy 06.10.2016 - 15:50
fonte

1 risposta

1

Dall'aspetto dell'esempio che hai fornito, ciò di cui potresti aver bisogno è semplicemente reificare la composizione della funzione;

per es.,

function transform1(input) {
    ...
    return output;
}

function transform2(input) {
    ...
    return output;
}

Quindi, potresti definire, quando la necessità di un "transform3 < = > first transform1, then transform2" si presenta, come,

 function compose(from, to) {
    return function(input) {
        return to(from(input));
    }
 }

 transform3 = compose(transform1, transform2)

Sei comunque libero di archiviare e gestire le tue funzioni di trasformazione di prima classe come preferisci, così come codificare nei loro input e generare alcuni dati comuni per segnalare se la catena di composizione deve continuare ad applicare compose () o no .

'Spero che questo aiuti.

    
risposta data 07.10.2016 - 03:46
fonte

Leggi altre domande sui tag