This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 8dd2c6ffcd48165bf0d1c5829bcca9721e843234 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Aug 9 08:37:35 2021 +0200 Polish and cleanup documentation --- .../modules/eips/pages/correlation-identifier.adoc | 5 +- docs/user-manual/modules/ROOT/nav.adoc | 1 - .../modules/ROOT/pages/bam-example.adoc | 113 --------------------- docs/user-manual/modules/ROOT/pages/bam.adoc | 80 --------------- 4 files changed, 2 insertions(+), 197 deletions(-) diff --git a/core/camel-core-engine/src/main/docs/modules/eips/pages/correlation-identifier.adoc b/core/camel-core-engine/src/main/docs/modules/eips/pages/correlation-identifier.adoc index 803f004..919345c 100644 --- a/core/camel-core-engine/src/main/docs/modules/eips/pages/correlation-identifier.adoc +++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/correlation-identifier.adoc @@ -15,9 +15,8 @@ conversation (or business process). image::eip/CorrelationIdentifierSolution.gif[image] -The use of a Correlation Identifier is key to working with the -xref:latest@manual:ROOT:bam.adoc[Camel Business Activity Monitoring Framework] and can also -be highly useful when testing with simulation or canned data such as +The use of a Correlation Identifier is key to working with xref:components::tracing.adoc[Tracing] +and be useful when testing with simulation or canned data such as with the xref:components::mock-component.adoc[Mock testing framework] Some xref:enterprise-integration-patterns.adoc[EIP] patterns will spin off a sub message, and in diff --git a/docs/user-manual/modules/ROOT/nav.adoc b/docs/user-manual/modules/ROOT/nav.adoc index e877c00..f17ffa2 100644 --- a/docs/user-manual/modules/ROOT/nav.adoc +++ b/docs/user-manual/modules/ROOT/nav.adoc @@ -37,7 +37,6 @@ ** xref:asynchronous-routing-engine.adoc[Asynchronous Routing Engine] ** xref:backlogdebugger.adoc[Backlog debugger] ** xref:backlog-tracer.adoc[Backlog Tracer] -** xref:bam.adoc[Business Activity Monitoring] ** xref:batch-consumer.adoc[Batch Consumer] ** xref:bean-binding.adoc[Bean Binding] ** xref:bean-integration.adoc[Bean Integration] diff --git a/docs/user-manual/modules/ROOT/pages/bam-example.adoc b/docs/user-manual/modules/ROOT/pages/bam-example.adoc deleted file mode 100644 index 3389beb..0000000 --- a/docs/user-manual/modules/ROOT/pages/bam-example.adoc +++ /dev/null @@ -1,113 +0,0 @@ -[[BAMExample-BusinessActivityMonitorExample]] -= Business Activity Monitor (BAM) Example - -The BAM (Business Activity Monitor) example shows how to -monitor your transaction flows using Camel. - -In this example we will use Camel to monitor a business process -consisting of - -* purchase orders -* invoices - -Then we will check to see that for every purchase order created by -system A, that system B will generate an invoice within the specified -amount of time (2 seconds in this example). If an invoice is not -generated within the allowed amount of time and error is generated and -sent to an Endpoint. - -[[BAMExample-Overview]] -== Overview - -This example lives in the _examples/camel-example-bam_ directory. It -will poll the following directories - -* the child _src/data/purchaseOrders_ directory for XML purchase orders -* the child _src/data/invoices_ directory for XML invoices - -The -http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/java/org/apache/camel/example/bam/MyActivities.java[MyActivities] -class defines the BAM activities; that is - -* the input sources (the two directories above) which could be any of -the supported camel URIs -* how the activities relate to each other - namely the -Correlation Identifier pattern -* the maixmum amount of time allowed from the time a purchase order is -received when if an invoice is not received an error should be raised. - -There is also a spring configuration file in -http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/resources/META-INF/spring/camel-context.xml[src/resources/META-INF/services/camel-context.xml] -which defines the JPA `EntityManagerFactory` and tells Camel to look in -the *org.apache.camel.example.bam* package to find its routes. - -[[BAMExample-Codewalkthrough]] -== Code walkthrough - -So lets start with the activities definition in -http://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-bam/src/main/java/org/apache/camel/example/bam/MyActivities.java[MyActivities] - -[source,java] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -return new ProcessBuilder(entityManagerFactory, transactionTemplate) { - public void configure() throws Exception { - - // let's define some activities, correlating on an XPath on the message bodies - ActivityBuilder a = activity("seda:a").name("a") - .correlate(xpath("/hello/@id")); - - ActivityBuilder b = activity("seda:b").name("b") - .correlate(xpath("/hello/@id")); - - // now let's add some rules - b.starts().after(a.completes()) - .expectWithin(seconds(1)) - .errorIfOver(seconds(errorTimeout)).to("mock:overdue"); - } -}; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -The first two lines of code sets up the inputs for the -BAM activities via the *activity()* method which defines - -* the URIs of the inputs (which could come from any of -the Camel Components -* the Correlation Identifier used to -correlate together the purchase order and invoice messages which can be -any Expression via any of the -Languages Supported. In this case we are -using xref:components:languages:xpath-language.adoc[XPath]. - -Then the final line of code defines the temporal rules to use; namely -that it is considered to be an error if an invoice is not received -within 2 seconds of a purchase order being received. When a failure -occurs in this example we just send it to the xref:components::log-component.adoc[Log] -component to log out an error level message to commons-logging / log4j. -You could change this to use some of the other -Components such as ActiveMQ, -xref:components::jms-component.adoc[JMS], xref:components::jms-component.adoc[IRC], xref:components::jms-component.adoc[Mail], -xref:components::xmpp-component.adoc[XMPP] etc. - -[[BAMExample-Runningtheexample]] -== Running the example - -To run the example we use the xref:camel-maven-plugin.adoc[Camel Maven Plugin]. -For example from the source or binary distribution the -following should work - -[source,bash] ------------------------------ -cd examples/camel-example-bam -mvn camel:run ------------------------------ - -If you prefer you can just run the Main directly using - -[source,bash] ---------------------- -mvn compile exec:java ---------------------- - -Failing that you can run the Main from inside your IDE if you prefer. -Follow the Building instructions to create an -Eclipse/IDEA project to import diff --git a/docs/user-manual/modules/ROOT/pages/bam.adoc b/docs/user-manual/modules/ROOT/pages/bam.adoc deleted file mode 100644 index a738909..0000000 --- a/docs/user-manual/modules/ROOT/pages/bam.adoc +++ /dev/null @@ -1,80 +0,0 @@ -[[BAM-BusinessActivityMonitoring]] -= Business Activity Monitoring - -The *Camel BAM* module provides a Business Activity Monitoring (BAM) -framework for testing business processes across multiple message -exchanges on different Endpoint instances. - -Consider, for example, a simple system in which you submit Purchase -Orders into system A and then receive Invoices from system B. You might -want to test that, for a given Purchase Order, you receive a matching -Invoice from system B within a specific time period. - -[[BAM-HowCamelBAMWorks]] -== How Camel BAM Works - -Camel BAM uses a xref:{eip-vc}:eips:correlation-identifier.adoc[Correlation -Identifier] on an input message to determine the _Process Instance_ to -which it belongs. The process instance is an entity bean which can -maintain state for each _Activity_ (where an activity typically maps to -a single endpoint - such as the submission of Purchase Orders or the -receipt of Invoices). - -[source,java] ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -return new ProcessBuilder(entityManagerFactory, transactionTemplate) { - public void configure() throws Exception { - - // let's define some activities, correlating on an XPath on the message bodies - ActivityBuilder a = activity("seda:a").name("a") - .correlate(xpath("/hello/@id")); - - ActivityBuilder b = activity("seda:b").name("b") - .correlate(xpath("/hello/@id")); - - // now let's add some rules - b.starts().after(a.completes()) - .expectWithin(seconds(1)) - .errorIfOver(seconds(errorTimeout)).to("mock:overdue"); - } -}; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -You can then add rules to be triggered when a message is received on any -activity - such as to set time expectations or perform real time -reconciliation of values across activities. - -[[BAM-SimpleExample]] -== Simple Example - -The following example shows how to perform some time based rules on a -simple business process of 2 activities - A and B - which correspond -with Purchase Orders and Invoices in the example above. If you would -like to experiment with this scenario, you may edit this -http://svn.apache.org/repos/asf/camel/trunk/components/camel-bam/src/test/java/org/apache/camel/bam/BamRouteTest.java[Test -Case], which defines the activities and rules, and then tests that they -work. - -As you can see in the above example, we first define two activities, and -then rules to specify when we expect them to complete for a process -instance and when an error condition should be raised.p. The -ProcessBuilder is a RouteBuilder and can be -added to any CamelContext. - -[[BAM-CompleteExample]] -== Complete Example - -For a complete example please see the xref:bam-example.adoc[BAM Example], - which is part of the standard Camel -Examples - -[[BAM-UseCases]] -== Use Cases - -In the world of finance, a common requirement is tracking trades. Often -a trader will submit a Front Office Trade which then flows through the -Middle Office and Back Office through various systems to settle the -trade so that money is exchanged. You may wish to test that the front -and back office trades match up within a certain time period; if they -don't match or a back office trade does not arrive within a required -amount of time, you might signal an alarm.
