User development,

A new message was posted in the thread "How to submit modifications em jBPM 
BPEL source code":

http://community.jboss.org/message/522152#522152

Author  : Carlos Oliveira
Profile : http://community.jboss.org/people/karluqs

Message:
--------------------------------------------------------------
Here the list of modifications:

-  The architecture  based on JMS  didn't support thousands of process 
instances in  receive state (tested with 50000 process), it caused high memory  
consumption (25GB) and several minutes waiting jboss to start to load all jms 
receivers (about 20 minutes  on a server with 12 cores and Oracle 10g).  We 
removed JMS parts and altered to query the  database when receiving a message 
to continue a process . This caused the  loss of  asynchronous messages which 
are not  necessary for us . Another  solution  will  be required  if  someone 
needs to use of asynchronous messages.
-  Performance  was degradated  when executed hundreds of  processes at same 
time causing crashes on JBoss. A ThreadPoolExecutor was added to 
SoapHandler.java to limit the number of  processes executing at same time. This 
can be configured.
- Added a class to  provide a central configuration for JBPM 
(ConfigurationManager.java), this  classes uses Jgroups to replicate 
configuration modifications on runtime.
-  Added static map (PROCESSES_IN_EXECUTION on JbpmContext.java) to provide a 
way  to the cluster doesn't execute the same process at the same time. JGroups 
was  added to support sending of messages between the machines to provide 
information  about which processes are running.
- Added support for 2nd level cache  cluster using EhCache and Jgroups, 
configuration on jbpm.hibernate.cfg.xml and  ehcache_jbpm.xml
- Inclusion of table JBPM_NODE_EXECUTED, to track the path a  process instance 
followed on bpel graph, we tried to use JBPM_TOKEN but it's  unpredictable and 
confuse to track a path.
- XMLs messages with quotes (" and  ') has several issues when parsing to and 
from xerces, the quotes are lost due  to the fact that XMLUtil.java encodes 
&amp; to &amp;amp;. This happens  with other characters (>, <, space, -, & and 
#). It was necessary to  modify ElementType.java to properly encode/unencode 
the xml files.
- Added  support to XSL transformations using javax.xml.transform.Transformer 
in  org.jbpm.bpel.sublang.xpath.cpqd.XSLTransformation file. The deploy of 
processes  was altered to include xsd files on table JBPM_BYTEBLOCK
- JBPM_JOB has a  design problem, it executes only one process by cycle, 
altered to execute as  many as necessary, each one in a transaction with crash 
recovery. Also added a  class to monitor 
- Use of JBPM_LOG was altered, studies of database growth  showed that this 
table was responsible for 30% of all database, so a  configuration was added to 
choose to log or not to log, see  DbLoggingService.java
- If a process crashes ,  the transaction  is rolled back depending on 
exception type so all the graph is lost and if the  process passed for a node 
that cannot be executed again the message can't be  resended. StartInstance and 
ResumeInstance was rewritten to provide means to  always save data.
- Added Xpath function to send email based on a xml with  the data 
(org.jbpm.bpel.sublang.xpath.cpqd.SendEmail)
- When assigning a node  that has several sub nodes with the same name, only 
the first node is assigned.  XPathEvaluator.java (method selectOrCreateNodes) 
was fixed.
- When copying  xmls nodes between different xmls namespace, the original 
namespaces are copied  also. XPathEvaluator.java was fixed.
- LockMonitorThread.java monitors when a  job is executing for a long time, but 
was not full implemented or used, it was  modified to properly monitor the jobs.
- ByteBlockChopper.java had  performance issues when glueing the chops because 
it created a new array for  each chop, altered to create only one initial array 
and glue the chops in the  right position. 
- Added class JbossWebDescriptorTool.java on  JBPM-BPEL-TOOLS, this class 
creates a jboss-web.xml to provide one context  (/jbpmservices) for all 
processes deployed.
- The .war file deployed does not  have version information, this causes the 
old processes instances crashs,  JBPM-BPEL-TOOLS to provide version information 
on classes generated and file  names.
- On deploying a process definition create classes without using  namespace for 
packaging, it causes a crash because of confliting xml nodes with  the same 
name, modified to create packages for each namespace.
- Added column  STATE_ to JBPM_PROCESSDEFINITION table, the definition is put 
in a activing  state when deploying, so a process can be deployed with jbpm in 
use and the  users can not access it until .war file is fully deployed.
- CatalogEntry is  cached when used for the first time, so an external web 
service address could  not be modified on runtime. The class was modified to 
support notification of  urls for all the process using the addresses on 
ServiceCatalog.java, even in  cluster.

--------------------------------------------------------------

To reply to this message visit the message page: 
http://community.jboss.org/message/522152#522152


_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to