[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