Need clarifications on business rules
by Vkishore_Kumar
Hello,
I have a requirement to migrate some business rules from WebSphere Process Server (WPS) to the equivalent product of JBoss . The current functionality implemented on WPS is
1. Execute appropriate conditions like if-else and decision tables based on the content in the request message
2. The business rules can invoke an internal/external SOAP/HTTP web service based on the rule logic
3. The business rules can invoke an email adapter which in turn fires emails as needed
4. Eventually expose the business rules to external world as a SOAP/HTTP web service. This enables clients to invoke the business rules from a remote machine via SOAP/HTTP.
There are many products in JBoss suite like JBos Rules, JBoss Enterprise SOA Platform, JBoss Enterprise BRMS, JBoss Enterprise Middleware Suite etc.
Could anyone please suggest me what is the right product in JBoss suite using which I can build the same logic that I have built on WPS? Kindly let me know if you need any further details from my end for you to understand the requirement better.
Thanks & Regards
Kishore
________________________________
DISCLAIMER:
This email (including any attachments) is intended for the sole use of the intended recipient/s and may contain material that is CONFIDENTIAL AND PRIVATE COMPANY INFORMATION. Any review or reliance by others or copying or distribution or forwarding of any or all of the contents in this message is STRICTLY PROHIBITED. If you are not the intended recipient, please contact the sender by email and delete all copies; your cooperation in this regard is appreciated.
15 years, 4 months
Problem persisting human tasks
by raic
Hi,
I'm having problems using drools flow persistance with human tasks. I'm
using drools server.
On one hand, I have my test application, which starts a MinaTaskServer for
registering human tasks, and then, the application generates JSON commands
for executing a flow with human tasks on the execution server.
Without using flow persistence, this is working ok, i'm able to retrieve the
pending tasks and completing them without problems.
When I try to configure flow persistence on the execution server, i can
start the process, the tasks are registered ok and drools flow tables are
generated in my database (processinstanceinfo,sessioninfo,workiteminfo...)
with the correct flow information. The problem appears when i retrieve a
pending task, and then, i want to complete it. It seems that the
communication between MinaTaskServer and ExecutionServer is not ok.
The error i'm getting is the following:
[2010:11:327 18:11:661:debug] Message receieved on client :
EventTriggerResponse
[2010:11:327 18:11:661:debug] Arguments :
[org.drools.task.event.EventPayload@1b2df13]
Task completed 1
[2010:11:327 18:11:661:debug] Message receieved on client :
EventTriggerResponse
[2010:11:327 18:11:661:debug] Arguments :
[org.drools.task.event.EventPayload@1f7c6e1]
Task completed 1
[2010:11:327 18:11:770:debug] Message receieved on client : GetTaskResponse
[2010:11:327 18:11:770:debug] Arguments : [org.drools.task.Task@d17fbb51]
[2010:11:327 18:11:770:exception] Uncaught exception on client
java.lang.IllegalStateException: EntityManager is closed
at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java
:66)
at
org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
at $Proxy132.find(Unknown Source)
at
org.drools.persistence.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:88)
at
org.drools.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:250)
at
org.drools.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:80)
at
org.drools.task.service.mina.MinaTaskClientHandler.messageReceived(MinaTaskClientHandler.java:47)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
at
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:375)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:229)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Unknown Source)
And here is my configuration:
knowledge-services.xml (spring configuration)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:drools="http://drools.org/schema/drools-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://drools.org/schema/drools-spring
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-containe...">
<bean id="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/drools_flow" />
<property name="username" value="user" />
<property name="password" value="pass" />
</bean>
<drools:connection id="connection1" type="local" />
<drools:execution-node id="node1" connection="connection1" />
<drools:kbase id="kbProcessWorkItems" node="node1">
<drools:resources>
<drools:resource type="CHANGE_SET"
source="classpath:changeset.xml"/>
</drools:resources>
</drools:kbase>
<bean id="myEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="ds" />
<property name="persistenceUnitName"
value="org.drools.persistence.jpa.local" />
</bean>
<bean id="txManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="myEmf" />
</bean>
<drools:kstore id="kstore1" />
<drools:ksession id="ksession1" type="stateful" kbase="kbProcessWorkItems"
node="node1">
<drools:configuration>
<drools:jpa-persistence>
<drools:transaction-manager ref="txManager" />
<drools:entity-manager-factory ref="myEmf" />
<drools:variable-persisters>
<drools:persister for-class="javax.persistence.Entity"
implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
</drools:variable-persisters>
</drools:jpa-persistence>
</drools:configuration>
</drools:ksession>
</beans>
And here my persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
<persistence-unit name="org.drools.persistence.jpa.local"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.drools.persistence.session.SessionInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.processinstance.WorkItemInfo</class>
<class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
<class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
<!-- my persistent variables -->
<class>com.sample.bussiness.model.ClientModel</class>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.max_fetch_depth" value="3" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
I've seen some examples that uses bitronix but i'm not using it, i don't
know if that is the problem...
Some ideas?
Thanks
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Problem-persisting-hu...
Sent from the Drools - User mailing list archive at Nabble.com.
15 years, 4 months
How to validate literal values on the LHS of rules.
by groovenarula
Hello all,
In my use case, I am planning on using decision tables to implement rules
that contain product information (product attributes - like product grade,
product style etc). I've managed to put together the spreadsheet and have
been successful in generating different set of rules (using rule templates)
from this spreadsheet. The spreadsheet with contain basic product
information that product fact will be matched against.
e.g. The spreadsheet will contain columns of product grade and product
styles that when translated into rules, the LHS would look something like
Product ( grade == "010", style == "515" )
Where the '010' and '515' would come from a spreadsheet (decision table)
that the user's provide.
Now here's the challenge. I need to also provide a means for the user to
validate the "010" and "515". The available product grade and styles are
available in a database table. So I should be able to use that to build
second set of rules (templates). So I'm thinking, if there's a way to
convert the user supplied spreadsheet and make it a table of 'facts' of the
validation rules, I should be able to verify the value "010" "515" against
the database.
Is that the best way to go about this ? If so, can someone please point me
to a way to load facts from a spreadsheet ? I have looked around and found
that there is a jxls project that allows loading of JavaBeans from values in
spreadsheet. But it requires xml files to be configured. I really like the
way rule templates work (by simply state substitution variables in the
template itself - thereby avoiding the whole need to configuration xml
files). I think if there's a way to load facts using templates from a
spreadsheet, I should be able to use that concept to validate the values in
my rules.
So is it possible to do the above ? Also is there a better way ?
Any insight would be appreciated.
Thanks in advance,
Gurvinder
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/How-to-validate-liter...
Sent from the Drools - User mailing list archive at Nabble.com.
15 years, 4 months
How to specify relative URL in chagenset.xml file
by Pardeep Ruhil
Hi,
I am getting File Not Found Exception when I try to give relative path of the file.
<resource source='file:../HelloWorld.drl' type='DRL' />
But when I give the complete path, It picks the changeset.xml file.
<resource source='file:C:/Tomcat/webapps/DroolsCheck/HelloWorld.drl' type='DRL' />
Please tell me the syntax for using the relative path for my workflow or rule files.
Thanks & Regards
Pradeep Ruhil
________________________________
This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system.
______________________________________________________________________
15 years, 4 months
Drools Logging
by Laks Sundararajan
Hello There,
I'm using Drools as a part of my current project and have a few questions. I
subscribed to the forums and posted a new question but it keeps showing up
as pending.
Do I need to do anything else from my side?
Thanks!
15 years, 4 months
Re: [rules-users] Agenda group in excel
by FrankVhh
Hi all,
Let me tune in on this old post.
Is AGENDA-GROUP still unavailable in excel decision tables (V5.1)? The user
manual suggests it should be possible, but when I try it, it doesn't seem to
work.
In the same row as CONDITION, PRIORITY and ACTION, I named one of the
columns AGENDA-GROUP. Then, I filled up the column with names for the
groups.
In another decision table, I called drools.setFocus("$param"); underneath
ACTION to switch agendagroups.
Moreover, the spreadsheetcompiler returns priority as a salience attribute
in each rule, agenda-group can't be found in the outputs.
Regards,
Frank
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Agenda-group-in-excel...
Sent from the Drools - User mailing list archive at Nabble.com.
15 years, 4 months
Two instances of drools-guvnor can point to same database?
by Sartaj Shaik
Hi,
Can we deploy guvnor in two instances of jboss server pointing to same
oracle database?
Do we need to modify any settings to use same database by all the
instances?
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
15 years, 4 months
Unable to start drools-server 5.1.1 or 5.2.0.M1 under Tomcat 6.0.30
by A R
Hi,
I don't seem to be able to get the drools server (5.1.1 or 5.2.0.M1) to
startup correctly under Tomcat 6.0.30.
Here are the steps I've taken:
1) cp drools-5.1.1-server.war to my webapps directory
2) deleted servlet-api-2.3.jar due to a conflict with tomcat's
servrlet-api.jar
3) On startup however I get the following error in the logs (same error for
5.2.0.M1):
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Failed to import bean definitions from URL location
[classpath:knowledge-services.xml]
Offending resource: class path resource [beans.xml]; nested exception is
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line
25 in XML document from class path resource [knowledge-services.xml] is
invalid; nested exception is org.xml.sax.SAXParseException:
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration
can be found for element 'drools:execution-node'.
Where line 25 in the knowledge-services.xml file is:
<drools:execution-node id="node1" />
Full stack trace is here:
http://pastebin.com/Dweg29gJ
Any help appreciated.
Thanks!
15 years, 4 months
Converging gateway
by Salina Fung/UFL - ICIL
I have a flow as attached.
Before the Exit node, I have the Converging gateway with type = 'AND',
and before that, I have 2 human task:
1. Receive Cargo (Task 3)
2. Request for Approval
I don't understand why when I complete the Receive Cargo Task, I get the following
debug message in Eclipse Console, why I got the 'Request for Approval' task exit debug
message?
<<quote>>
Task completed 3
[2011:03:64 19:03:229:debug] Message receieved on client : EventTriggerResponse
[2011:03:64 19:03:230:debug] Arguments : [org.drools.task.event.EventPayload@1c52ac68]
Task completed 3
[2011:03:64 19:03:231:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:231:debug] Arguments : [org.drools.task.Task@1524adef]
[2011:03:64 19:03:245:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:245:debug] Arguments : [org.drools.task.Task@1524adef]
[2011:03:64 19:03:264:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:264:debug] Arguments : [org.drools.task.Task@1524adef]
[2011:03:64 19:03:267:debug] Message receieved on client : GetContentResponse
[2011:03:64 19:03:267:debug] Arguments : [org.drools.task.Content@fbfe1674]
Exiting 'Request for Approval' - status = [ON_HOLD]
Exiting 'Request for Approval' - booking status = [ON_HOLD]
AFTER REQUEST FOR APPROVAL
Exiting from warehouse
AFTER WAREHOUSE
Hibernate: select processins0_.InstanceId as col_0_0_ from ProcessInstanceInfo processins0_ where ? in (select eventtypes1_.element from EventTypes eventtypes1_ where processins0_.InstanceId=eventtypes1_.InstanceId)
[2011:03:64 19:03:273:debug] Message receieved on client : GetContentResponse
[2011:03:64 19:03:273:debug] Arguments : [org.drools.task.Content@fbfe1674]
Hibernate: select workitemin0_.workItemId as workItemId7_0_, workitemin0_.creationDate as creation2_7_0_, workitemin0_.externalVariables as external3_7_0_, workitemin0_.name as name7_0_, workitemin0_.processInstanceId as processI5_7_0_, workitemin0_.state as state7_0_, workitemin0_.OPTLOCK as OPTLOCK7_0_, workitemin0_.workItemByteArray as workItem8_7_0_ from WorkItemInfo workitemin0_ where workitemin0_.workItemId=?
[2011:03:64 19:03:307:debug] Message receieved on client : GetContentResponse
[2011:03:64 19:03:307:debug] Arguments : [org.drools.task.Content@fbfe1674]
Hibernate: select workitemin0_.workItemId as workItemId7_0_, workitemin0_.creationDate as creation2_7_0_, workitemin0_.externalVariables as external3_7_0_, workitemin0_.name as name7_0_, workitemin0_.processInstanceId as processI5_7_0_, workitemin0_.state as state7_0_, workitemin0_.OPTLOCK as OPTLOCK7_0_, workitemin0_.workItemByteArray as workItem8_7_0_ from WorkItemInfo workitemin0_ where workitemin0_.workItemId=?
<end quote>>
Then if I complete the 'Request for Approval' task, no debugging message from the
exiting action of the task, but only the below, and the flow does not end?
<quoted>
[2011:03:64 19:03:306:debug] Message receieved on client : EventTriggerResponse
[2011:03:64 19:03:306:debug] Arguments : [org.drools.task.event.EventPayload@1b2dd1b8]
Task completed 2
[2011:03:64 19:03:324:debug] Message receieved on client : EventTriggerResponse
[2011:03:64 19:03:324:debug] Arguments : [org.drools.task.event.EventPayload@51cfc277]
Task completed 2
[2011:03:64 19:03:326:debug] Message receieved on client : EventTriggerResponse
[2011:03:64 19:03:326:debug] Arguments : [org.drools.task.event.EventPayload@50a6023a]
Task completed 2
[2011:03:64 19:03:328:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:328:debug] Arguments : [org.drools.task.Task@7972f798]
[2011:03:64 19:03:346:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:346:debug] Arguments : [org.drools.task.Task@7972f798]
[2011:03:64 19:03:362:debug] Message receieved on client : GetTaskResponse
[2011:03:64 19:03:362:debug] Arguments : [org.drools.task.Task@7972f798]
[2011:03:64 19:03:365:debug] Message receieved on client : GetContentResponse
[2011:03:64 19:03:365:debug] Arguments : [org.drools.task.Content@37a4cf8d]
<<end quote>>
I did the reverse, complete 'Request for Approval' first, and then 'Receive cargo',
the same result.
I tried XOR, Discriminator, seems they are the same. Please help
Thanks
Salina
15 years, 4 months