Как получить источник и цель края после любого изменения в соединении ячейки? - PullRequest
0 голосов
/ 11 июня 2019

Я программирую веб-приложение, использующее рабочий процесс.Я использовал jgraph (Mxgraph) для разработки рабочего процесса.

Я сохраню части рабочего процесса в базе данных (действия, уведомления, переходы).Мне нужно получить источник и цель переходов.Итак, как мне отследить какие-либо изменения в переходах в клиенте?

Я использовал ранее из этих трех событий, но не всегда работает.Например, когда я меняю цель подключения.

Editor.graph.connectionHandler.addListener(mxEvent.CONNECT, function (sender, evt) {
            console.log('connect');
});
Editor.graph.connectionHandler.addListener(mxEvent.START, function (sender, evt) {
            console.log('start');
});
Editor.graph.connectionHandler.addListener(mxEvent.RESET, function (sender, evt) {
            console.log('reset');
});

1 Ответ

0 голосов
/ 11 июня 2019

Я нашел это. Мы можем использовать событие mxEvent.Change для получения любых изменений в модели графа.

        editor.graph.getModel().addListener(mxEvent.CHANGE, function (sender, evt) {
            editor.graph.validateGraph();
            var xml = getEditorXml(Editor);
            $("#BpmnXml").val(xml);

            //console.log(getCells_ByType("Start"));
            // /console.log(getCells_ByType("Task"));
            let connectors = getCells_ByType("Connector");
            if (connectors != null && connectors.length > 0) {
                connectors.forEach(element => {
                    var source = Editor.graph.getModel().getTerminal(element, true);
                    var target = Editor.graph.getModel().getTerminal(element, false);
                    setData(element, { FromActivityClientId: source.getId(), ToActivityClientId: target.getId() });
                });
            }
        });

function getCells_ByType(TypeCell) { // dar report estafede mishavad
    var AllCells = Editor.graph.getChildCells(Editor.graph.getDefaultParent(), true, true);
    var result = $.grep(AllCells, function (s) { return s.getValue().localName == TypeCell; });
    if (result.length != 0)
        return result;
    else
        return null;
}
...