[jboss-svn-commits] JBL Code SVN: r26109 - in labs/jbossrules/trunk: drools-docs/drools-docs-expert/src/main/docbook/en-US/Chapter-User_Guide and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 17 08:52:57 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-04-17 08:52:57 -0400 (Fri, 17 Apr 2009)
New Revision: 26109
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
labs/jbossrules/trunk/drools-docs/drools-docs-expert/src/main/docbook/en-US/Chapter-User_Guide/Section-Running.xml
Log:
-fixed some more docs
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2009-04-17 12:28:15 UTC (rev 26108)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2009-04-17 12:52:57 UTC (rev 26109)
@@ -509,8 +509,8 @@
* </p>
*
* <pre>
- * XStream xstream = new XStream();
- * Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+ * Marshaller marshaller = jaxbCtx.createMarshaller();
+ * Transformer transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
* transformer.setReceiver( receiver );
* </pre>
*
Modified: labs/jbossrules/trunk/drools-docs/drools-docs-expert/src/main/docbook/en-US/Chapter-User_Guide/Section-Running.xml
===================================================================
--- labs/jbossrules/trunk/drools-docs/drools-docs-expert/src/main/docbook/en-US/Chapter-User_Guide/Section-Running.xml 2009-04-17 12:28:15 UTC (rev 26108)
+++ labs/jbossrules/trunk/drools-docs/drools-docs-expert/src/main/docbook/en-US/Chapter-User_Guide/Section-Running.xml 2009-04-17 12:52:57 UTC (rev 26109)
@@ -636,7 +636,7 @@
<para>The KnowledgeRuntimeLogger uses the comprehensive event system in
Drools to create an audit log that can be used log the execution of drools
- for later inspection, in tools such as the Eclipse audit viewer. </para>
+ for later inspection, in tools such as the Eclipse audit viewer.</para>
<figure>
<title>KnowledgeRuntimeLoggerFactory</title>
@@ -706,7 +706,7 @@
ksession.execute( collection ); </programlisting>
</example>
- <para>If this was done as a single Command it would be as follows: </para>
+ <para>If this was done as a single Command it would be as follows:</para>
<example>
<title>Simple StatelessKnowledgeSession execution with InsertElements
@@ -748,7 +748,7 @@
</example>
<para>The third way is execution scopped globals using the CommandExecutor
- and SetGlobal Commands: </para>
+ and SetGlobal Commands:</para>
<example>
<title>Execute scoped global</title>
@@ -1064,30 +1064,150 @@
<title>Xstream Transformer</title>
<para></para>
+
+ <example>
+ <title>XStream FromXML transformer stage</title>
+
+ <programlisting>XStream xstream = new XStream();
+Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+transformer.setReceiver( nextStage );</programlisting>
+ </example>
+
+ <example>
+ <title>XStream ToXML transformer stage</title>
+
+ <programlisting>XStream xstream = new XStream();
+Transformer transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+transformer.setReceiver( receiver );</programlisting>
+ </example>
</section>
<section>
<title>JAXB Transformer</title>
<para></para>
+
+ <example>
+ <title>JAXB XSD Generation into the KnowlegeBuilder</title>
+
+ <programlisting>Options xjcOpts = new Options();
+xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+ getClass() ),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+</programlisting>
+ </example>
+
+ <example>
+ <title>JAXB FromXML transformer stage</title>
+
+ <programlisting>JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+ kbase );
+Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+transformer.setReceiver( receiver );
+</programlisting>
+ </example>
+
+ <example>
+ <title>JAXB ToXML transformer stage</title>
+
+ <programlisting>Marshaller marshaller = jaxbCtx.createMarshaller();
+Transformer transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
+transformer.setReceiver( receiver );
+</programlisting>
+ </example>
</section>
<section>
<title>Smooks Transformer</title>
<para></para>
+
+ <example>
+ <title>Smooks FromSource transformer stage</title>
+
+ <programlisting>Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+ "orderItem" );
+transformer.setReceiver( receiver );</programlisting>
+ </example>
+
+ <example>
+ <title>Smooks ToSource transformer stage</title>
+
+ <programlisting>Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+Transformer transformer = PipelineFactory.newSmooksToSourceTransformer( smooks );
+transformer.setReceiver( receiver );</programlisting>
+ </example>
</section>
<section>
- <title>Smooks Transformer</title>
+ <title> JXLS (Excel/Calc/CSV) Transformer</title>
- <para></para>
+ <para>Transforms from an Excel spread to a Map of pojos pojos using
+ jXLS, the resulting map is set as the propagating object. You may need
+ to use splitters and MVEL expressions to split up the transformation to
+ insert individual pojos. Note you must provde an XLSReader, which
+ references the mapping file and also an MVEL string which will
+ instantiate the map. The mvel expression is pre-compiled but executedon
+ each usage of the transformation. </para>
+
+ <example>
+ <title>JXLS transformer stage</title>
+
+ <programlisting>XLSReader mainReader = ReaderBuilder.buildFromXML( ResourceFactory.newClassPathResource( "departments.xml", getClass() ).getInputStream() );
+Transformer transformer = PipelineFactory.newJxlsTransformer(mainReader, "[ 'departments' : new java.util.ArrayList(), 'company' : new org.drools.runtime.pipeline.impl.Company() ]");
+ </programlisting>
+ </example>
</section>
<section>
<title>JMS Messenger</title>
- <para></para>
+ <para>Creates a new JmsMessenger which runs as a service in it's own
+ thread. It expects an existing JNDI entry for "ConnectionFactory" Which
+ will be used to create the MessageConsumer which will feed into the
+ specified pipeline.</para>
+
+ <example>
+ <title>JMS Messenger stage</title>
+
+ <programlisting>// as this is a service, it's more likely the results will be logged or sent as a return message
+Action resultHandlerStage = PipelineFactory.newExecuteResultHandler();
+
+// Insert the transformed object into the session associated with the PipelineContext
+KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+insertStage.setReceiver( resultHandlerStage );
+
+// Create the transformer instance and create the Transformer stage, where we are going from Xml to Pojo. Jaxb needs an array of the available classes
+JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+ kbase );
+Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+transformer.setReceiver( insertStage );
+
+// payloads for JMS arrive in a Message wrapper, we need to unwrap this object
+Action unwrapObjectStage = PipelineFactory.newJmsUnwrapMessageObject();
+unwrapObjectStage.setReceiver( transformer );
+
+// Create the start adapter Pipeline for StatefulKnowledgeSessions
+Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+pipeline.setReceiver( unwrapObjectStage );
+
+// Services, like JmsMessenger take a ResultHandlerFactory implementation, this is because a result handler must be created for each incoming message.
+ResultHandleFactoryImpl factory = new ResultHandleFactoryImpl();
+Service messenger = PipelineFactory.newJmsMessenger( pipeline,
+ props,
+ destinationName,
+ factory );
+</programlisting>
+ </example>
</section>
</section>
More information about the jboss-svn-commits
mailing list