[rules-users] Drools Flow: Variable Persistence Strategies

Dale Wyttenbach dale.wyttenbach at gmail.com
Fri Feb 12 15:25:13 EST 2010


If you try to write a query that requires VariableInstanceInfo.processId, it
won't work because that class has no processId member.
I guessed that processInstanceId would be a better join column, and that
worked (patch attached)

Thanks for the reply.

2010/2/12 Mauricio Salatino <salaboy at gmail.com>

> Hmm..
> I'm looking at the source and I see the following mapping:
>
> @OneToMany(cascade = CascadeType.ALL)
>     @JoinColumn(name = "processId")
>     @MapKey(name = "name")
>     private Map<String, VariableInstanceInfo> variables          = new
> HashMap<String, VariableInstanceInfo>();
>
> That makes me think that there is a join column called processId between
> VariableInstanceInfo and ProcessInstanceInfo.
>
>
> 2010/2/12 Dale Wyttenbach <dale.wyttenbach at gmail.com>
>
>> I have a patch for drools-persistence-jpa should anyone agree with me that
>> ProcessInstanceInfo and VariableInstanceInfo should be joined by
>> processInstanceId.
>>
>>
>> On Fri, Feb 12, 2010 at 10:52 AM, Dale Wyttenbach <
>> dale.wyttenbach at gmail.com> wrote:
>>
>>> I'm trying to adapt the StringVariablePersister presented in
>>> http://blog.athico.com/2009/09/drools-flow-variable-persistence.html
>>>
>>>  <http://blog.athico.com/2009/09/drools-flow-variable-persistence.html>I
>>> can create process instances with variable "color":
>>>
>>>   private static WorkflowProcessInstance
>>> startProcess(StatefulKnowledgeSession ksession, String color) {
>>>     Map<String, Object> vars = new HashMap<String, Object>();
>>>     vars.put("color", color);
>>>     WorkflowProcessInstance p1 = (WorkflowProcessInstance)
>>> ksession.startProcess("com.sample.ruleflow", vars);
>>>     return p1;
>>>   }
>>>
>>> I can count them:
>>>
>>> select
>>>     count(*)
>>> from
>>>     ProcessInstanceInfo
>>>
>>> However I'm stymied as to counting process instances with a given color,
>>> as there appears to be no join column between ProcessInstanceInfo and
>>> VariableInstanceInfo.
>>> Can such a query be written?
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> --
> - http://salaboy.wordpress.com
> - http://www.jbug.com.ar
> - Salatino "Salaboy" Mauricio -
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100212/9b1ffed1/attachment.html 
-------------- next part --------------
### Eclipse Workspace Patch 1.0
#P drools-persistence-jpa
Index: src/main/java/org/drools/persistence/processinstance/variabletypes/VariableInstanceInfo.java
===================================================================
--- src/main/java/org/drools/persistence/processinstance/variabletypes/VariableInstanceInfo.java	(revision 31623)
+++ src/main/java/org/drools/persistence/processinstance/variabletypes/VariableInstanceInfo.java	(working copy)
@@ -30,6 +30,7 @@
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)
 	private Long id;
+  private  Long processInstanceId;
     private String name;
     private String persister;
 
@@ -37,7 +38,15 @@
 		return id;
 	}
 
-	public String getName() {
+	public Long getProcessInstanceId() {
+      return processInstanceId;
+    }
+
+    public void setProcessInstanceId(Long processInstanceId) {
+      this.processInstanceId = processInstanceId;
+    }
+
+  public String getName() {
         return name;
     }
 
Index: src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java	(revision 31623)
+++ src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java	(working copy)
@@ -86,7 +86,7 @@
     private @Transient
     Environment                               env;
     @OneToMany(cascade = CascadeType.ALL)
-    @JoinColumn(name = "processId")
+    @JoinColumn(name = "processInstanceId")
     @MapKey(name = "name")
     private Map<String, VariableInstanceInfo> variables          = new HashMap<String, VariableInstanceInfo>();
     private boolean                           externalVariables  = false;


More information about the rules-users mailing list