From f53a602558b659bfdcb47a24ebcc1a0344a44b8e Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Mon, 15 Dec 2025 11:58:40 +0100 Subject: [PATCH 1/3] [NAE-2302] Check for process plugin dependencies on deploy - added parsing of pluginDependencies from action to Importer.java - added pluginDependencies attribute to PetriNet.java --- .../engine/importer/service/Importer.java | 19 +++++++++++++++++++ .../objects/petrinet/domain/PetriNet.java | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index b52ee3581b..ab16f44962 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -49,11 +49,15 @@ import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Unmarshaller; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; import java.io.*; import java.nio.file.Path; import java.util.*; import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Slf4j @@ -67,6 +71,8 @@ public class Importer { public static final String DEFAULT_FIELD_TEMPLATE = "material"; public static final String DEFAULT_FIELD_APPEARANCE = "outline"; public static final String DEFAULT_FIELD_ALIGNMENT = null; + public static final String PLUGIN_STRING_REGEX = "(?<=\\bPlugin\\.)[^.]+"; + public static final Pattern PLUGIN_STRING_PATTERN = Pattern.compile(PLUGIN_STRING_REGEX); @Getter protected Document document; @@ -222,6 +228,7 @@ protected Optional createPetriNet() throws MissingPetriNetMetaDataExce resolveCaseEvents(document.getCaseEvents()); evaluateFunctions(); actions.forEach(this::evaluateActions); + net.setPluginDependencies(extractPluginDependencies()); if (document.getCaseName() != null && document.getCaseName().isDynamic()) { net.setDefaultCaseNameExpression(new Expression(document.getCaseName().getValue())); @@ -1343,4 +1350,16 @@ protected Map buildTagsMap(List tagsList) { } return tags; } + + @Transactional + protected Set extractPluginDependencies() { + HashSet plugins = new HashSet<>(); + for (Action action: this.actions.values()) { + Matcher matcher = PLUGIN_STRING_PATTERN.matcher(action.getDefinition()); + while (matcher.find()) { + plugins.add(matcher.group(0)); + } + } + return plugins; + } } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java index a8b2fa447c..f40e929f5b 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java @@ -134,6 +134,10 @@ public abstract class PetriNet extends PetriNetObject { @Setter private Map tags; + @Getter + @Setter + private Set pluginDependencies; + public PetriNet() { this._id = new ObjectId(); this.identifier = "Default"; @@ -157,6 +161,7 @@ public PetriNet() { userRefs = new HashMap<>(); functions = new LinkedList<>(); tags = new HashMap<>(); + pluginDependencies = new HashSet<>(); } public PetriNet(PetriNet petriNet) { @@ -192,6 +197,7 @@ public PetriNet(PetriNet petriNet) { this.defaultRoleEnabled = petriNet.isDefaultRoleEnabled(); this.anonymousRoleEnabled = petriNet.isAnonymousRoleEnabled(); this.author = petriNet.getAuthor(); + this.pluginDependencies = petriNet.getPluginDependencies(); initializeArcs(); } From 3feadb1fcad7be57aaaf4fd887ec1b474b113c68 Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Mon, 15 Dec 2025 12:02:29 +0100 Subject: [PATCH 2/3] [NAE-2302] Check for process plugin dependencies on deploy - removed unused imports --- .../netgrif/application/engine/importer/service/Importer.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index ab16f44962..4d19fdc926 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -49,8 +49,6 @@ import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Unmarshaller; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; import java.io.*; import java.nio.file.Path; From c5f2a9e813c4b3b06b758d5d359a0f911cb71b10 Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Wed, 7 Jan 2026 09:47:19 +0100 Subject: [PATCH 3/3] [NAE-2302] Check for process plugin dependencies on deploy - removed useless @Transactional annotation from extractPluginDependencies method in Importer - changed copy behavior of new property pluginDependencies in copy constructor of PetriNet.java --- .../application/engine/importer/service/Importer.java | 1 - .../application/engine/objects/petrinet/domain/PetriNet.java | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index 4d19fdc926..524ab8c4b3 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -1349,7 +1349,6 @@ protected Map buildTagsMap(List tagsList) { return tags; } - @Transactional protected Set extractPluginDependencies() { HashSet plugins = new HashSet<>(); for (Action action: this.actions.values()) { diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java index f40e929f5b..a3254a8171 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java @@ -197,7 +197,10 @@ public PetriNet(PetriNet petriNet) { this.defaultRoleEnabled = petriNet.isDefaultRoleEnabled(); this.anonymousRoleEnabled = petriNet.isAnonymousRoleEnabled(); this.author = petriNet.getAuthor(); - this.pluginDependencies = petriNet.getPluginDependencies(); + Set sourcePlugins = petriNet.getPluginDependencies(); + this.pluginDependencies = sourcePlugins != null + ? new HashSet<>(sourcePlugins) + : new HashSet<>(); initializeArcs(); }