summaryrefslogtreecommitdiff
path: root/calamus-engine/src/main/java/io/trygvis/engine/domain
diff options
context:
space:
mode:
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/engine/domain')
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java11
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/Process.java25
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java47
3 files changed, 83 insertions, 0 deletions
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java b/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java
index 922376b..2fb9beb 100644
--- a/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java
+++ b/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java
@@ -26,6 +26,17 @@ public class Artifact extends AbstractEntity {
@Column(length = 100, nullable = false)
private String extension;
+ protected Artifact() {
+ }
+
+ public Artifact(String groupId, String artifactId, String version, String classifier, String extension) {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.classifier = classifier;
+ this.extension = extension;
+ }
+
public String getGroupId() {
return groupId;
}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/domain/Process.java b/calamus-engine/src/main/java/io/trygvis/engine/domain/Process.java
new file mode 100644
index 0000000..16192f2
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/domain/Process.java
@@ -0,0 +1,25 @@
+package io.trygvis.engine.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+public class Process extends AbstractEntity {
+
+ @Column(length = 100, nullable = false)
+ private String name;
+
+ @OneToMany
+ private List<ProcessTrigger> processTriggers = new ArrayList<>();
+
+ public String getName() {
+ return name;
+ }
+
+ public List<ProcessTrigger> getProcessTriggers() {
+ return processTriggers;
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java b/calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java
new file mode 100644
index 0000000..00b1603
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java
@@ -0,0 +1,47 @@
+package io.trygvis.engine.domain;
+
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+@Entity
+public class ProcessTrigger extends AbstractEntity {
+
+ @ManyToOne
+ private Process process;
+
+ @Column(length = 1000)
+ private String mvel;
+
+ transient Serializable expression;
+
+ public String getMvel() {
+ return mvel;
+ }
+
+ // -----------------------------------------------------------------------
+ //
+ // -----------------------------------------------------------------------
+
+ private Serializable getExpression() {
+ if (expression != null) {
+ return expression;
+ }
+ ParserContext ctx = new ParserContext();
+ ctx.setStrongTyping(true);
+ ctx.addInput("artifact", Artifact.class);
+ return expression = MVEL.compileExpression(mvel, ctx);
+ }
+
+ public boolean matches(Artifact artifact) {
+ Map<String, Object> vars = new HashMap<>();
+ vars.put("artifact", artifact);
+ return MVEL.executeExpression(getExpression(), vars, Boolean.class);
+ }
+}