5.2.x: HOWTO - De-serialize RuleFlowProcess
by Michael Anstis
Hi,
Please see https://bugzilla.redhat.com/show_bug.cgi?id=724409. This is
reported for BRMS 5.3.
The failure to update the package name is caused by (I presume) changes to
the de-serialization of RuleFlow files.
Drools Guvnor includes the following in
org.drools.guvnor.server.contenthandler.RuleFlowHandler:-
RuleFlowProcess process = null;
InputStreamReader reader = new InputStreamReader( is );
PackageBuilderConfiguration configuration = new
PackageBuilderConfiguration();
XmlProcessReader xmlReader = new XmlProcessReader(
configuration.getSemanticModules(),
getClassLoader() );
RuleFlowProcess process = (RuleFlowProcess) xmlReader.read( reader );
\\<---- CCE
The problem is that XmlProcessReader returns a List<Process> and hence
Guvnor gets a (swallowed) ClassCastException.
I could simply change this to use a List<Process> however I note that the
XmlProcessReader fails to parse the RuleFlow file attached to the BZ issue
(the processes list is null after parsing).
Furthermore there will (possibly) be an abundance of Drools Guvnor
repository files that contain legacy RuleFlowProcess XML that Guvnor will
need to continue to handle.
Are RuleFlowProcess deprecated in favor of Process? How can I convert a
RuleFlowProcess into a Process (and back again)? How can I de-serialize the
BZ RuleFlow XML into a RuleFlowProcess?
Whilst the BZ is for BRMS5.3 the problematic code is also in Drools Guvnor
5.4.0.CR1 and master branch (and jBPM 5.3.0-SNAPSHOT) so is not set to
resolve itself.
With kind regards,
Mike
12 years, 8 months