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 & to
&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