summaryrefslogtreecommitdiff
path: root/calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2014-04-13 00:04:13 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2014-04-13 00:04:13 +0200
commit07dde8de9d6040e60bf59e238444f620dba330c0 (patch)
tree0be82f05640bd84db734034f91022aa1532d5217 /calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java
parenta521a2d74c480c53c1004e7e5e2addd28a0578f4 (diff)
downloadcalamus-07dde8de9d6040e60bf59e238444f620dba330c0.tar.gz
calamus-07dde8de9d6040e60bf59e238444f620dba330c0.tar.bz2
calamus-07dde8de9d6040e60bf59e238444f620dba330c0.tar.xz
calamus-07dde8de9d6040e60bf59e238444f620dba330c0.zip
wip
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java')
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/ProcessTrigger.java47
1 files changed, 47 insertions, 0 deletions
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);
+ }
+}