| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import SiguiyamaAlgorithm from "./optimizer/siguiyama/SiguiyamaAlgorithm.js";
- import Graph from "./graph/Graph.js";
- import Node from "./graph/node/Node.js";
- import Edge from "./graph/edge/Edge.js";
- import BPMNError from "./errors/BPMNError.js";
- import {SiguiyamaContext} from "./optimizer/siguiyama/SiguiyamaContext.js";
- import DzwfJsonDeserializer from "./io/deserialize/json/DzwfJsonDeserializer.js";
- import {readFileSync, writeFileSync} from "node:fs";
- import CycleRemoveStep from "./optimizer/steps/CycleRemoveStep.js";
- import LayerAssignmentStep from "./optimizer/steps/LayerAssignmentStep.js";
- import NodeOrderingStep from "./optimizer/steps/NodeOrderingStep.js";
- import CoordinateAssignmentStep from "./optimizer/steps/CoordinateAssignmentStep.js";
- import EdgeRoutingStep from "./optimizer/steps/EdgeRoutingStep.js";
- import CleanupStep from "./optimizer/steps/CleanupStep.js";
- import DzwfJsonSerializer from "./io/serialize/json/DzwfJsonSerializer.js";
- export class BPMNOptimizer {
- private _optimizationAlgorithm?: SiguiyamaAlgorithm;
- public setOptimizationAlgorithm(algorithm: SiguiyamaAlgorithm) : this {
- this._optimizationAlgorithm = algorithm;
- return this;
- }
- public run(graph: Graph<Node, Edge<Node>>) : SiguiyamaContext {
- if(!this._optimizationAlgorithm)
- throw new BPMNError("Optimization algorithm not found, call \"setOptimizationAlgorithm\" method first!");
- return this._optimizationAlgorithm.run(graph);
- }
- }
- const deserializer = new DzwfJsonDeserializer();
- const data = deserializer.deserialize(readFileSync("./data/bpmn-graph.json", "utf8"));
- const algorithm = new SiguiyamaAlgorithm().addStep(new CycleRemoveStep()).addStep(new LayerAssignmentStep()).addStep(new NodeOrderingStep()).addStep(new CoordinateAssignmentStep()).addStep(new EdgeRoutingStep()).addStep(new CleanupStep());
- const optimizer = new BPMNOptimizer().setOptimizationAlgorithm(algorithm);
- optimizer.run(data.graph);
- const serializer = new DzwfJsonSerializer();
- writeFileSync("./data/document.dzwf", serializer.serialize(data));
|