SlideShare a Scribd company logo
1 of 41
Building Complex Business Processes
Building Complex Business Processes
• Introduce logic within a Business Process that allows for process control loops.
• Show how to incorporate custom DLLs into a Business Process
• Explore debugging techniques for business processes
• Discuss exception management techniques
• Show how to access Neuron ESB specific APIs directly in a Business Process to enable
development of more dynamic and sophisticated solutions
Goals
Building Complex Business Processes
• Using logic steps in a business process
• Exception management techniques
• Building / returning ESB messages
• ESB Message Custom Properties and State
• Accessing Neuron ESB APIs and resources
• Using custom DLLs in language editors
• Using the Business Process Debugger
Lesson Plan
Building Complex Business Processes
• Simple predictive models commonly employed in situations where true / false rules need to be
enforced
• In a Business process logic steps provide certain benefits:
• Control the flow of the business process
• Dynamic routing inside a business process
• Anticipate errors and catch them before they occur
• Run portions of a process concurrently to speed up performance
Logical Steps
Building Complex Business Processes
Decision Process Step
• Uses Boolean values to return true
or false based on a condition
• Can have multiple branches
• Evaluated left to right – only one
branch executes
• This can be used to:
• Anticipate errors
• Control process flow
• Dynamically route messages
• In the example shown, we use a
Decision Step to determine if the
message contains data
• If not, audit the message and
cancel the flow
• Else, use another decision step
to determine which topic to
send the message to, based on
the value of a custom property
Building Complex Business Processes
Parallel Process Step
• The parallel step allows for aspects of a
business process to run concurrently.
• Inside of a business process this can be
used to:
• Control the logical flow of the business
process
• Allow for multiple functionalities to run
concurrently reducing processing time
Building Complex Business Processes
Parallel Process Step : Branches
• Each Branch gets a copy of the
original message (i.e.
context.Data.Clone(false) )
• Each Branch can modify the
message or replace it. (i.e.
context.Data )
• Each final Branch message is added
to a collection and stored in the
context property, “Messages”
• “Messages” collection can be
accessed in Process Steps following
the Parallel Process Step i.e. using a
C# Process Step
Building Complex Business Processes
Parallel Process Step : Messages
The “Messages” collection can be
accessed in Process Steps following
the Parallel Process Step using one of
the Control Flow steps such as the
ForEach Process Step
Building Complex Business Processes
Parallel Process Step
Within a Branch
Custom properties can be stored:
context.Properties["myprop"] = "my custom data";
The name of the Branch can be accessed:
context.Properties["CurrentBranch"] as string
After the Parallel Step
Custom properties can be accessed by preceding
the property name with the branch name:
var prop = context.Properties["Branch1.myprop"];
Building Complex Business Processes
Split Process Step
Used to process individual messages contained within a larger incoming
message (Batch file)
• Split
• Executes logic for determining the boundaries of individual messages within the Batch
• Each individual message is delivered to the Steps Block
• Options available via right-click context menu
• Code – Exposes Neuron ESB C# Code Editor
• XPATH – XPATH statement (assuming message is XML)
• Steps Block
• Contains the Process Steps used to process each individual message parsed from the Batch
• By default, each message does not have access to the other messages in the batch
• Can be configured to run either synchronously i.e. For Loop, or Asynchronously using the
following properties
• Synchronous – default is True
• Maximum Thread Count – default is 1. Determines number of threads to allocate ONLY if
Synchronous is set to False
• Join
• Executes logic to either dispose of, or aggregate the individual messages previously split and
processed into 1 outgoing message
• Options available via right-click context menu
• Code– Exposes Neuron ESB C# Code Editor
• Null – Individual messages are discarded
• Wrapper – XML element to wrap Individual
Building Complex Business Processes
Split Process Step : Split Type : XPath
XPATH – Easiest option when document is simple XML
<Orders>
<Order>
<OrderID>1234</OrderID>
<OrderDate>4/22/09</OrderDate>
<OrderAmount>100.00</OrderAmount>
</Order>
<Order>
<OrderID>1235</OrderID>
<OrderDate>4/22/09</OrderDate>
<OrderAmount>110.00</OrderAmount>
</Order>
<Order>
<OrderID>1236</OrderID>
<OrderDate>4/22/09</OrderDate>
<OrderAmount>120.00</OrderAmount>
</Order>
</Orders>
Building Complex Business Processes
Split Process Step : Split Type : Code
When dealing with NON XML or complex
documents where XPATH will not work
• List of Context Objects – This contains the
batch of messages that will be delivered to
the STEPS block
• Each individual message created using Clone
to preserve relationship
Building Complex Business Processes
Split Process Step : Steps Block
• Is a container that can contain any number of
Process Steps
• All Process Steps within the container will
execute for each Individual Message
• The Split feeds an individual message, one at
a time, to the container from the collection of
messages
• By default, there is only 1 thread that executes
an instance of the container with its message
(i.e. for loop)
• If Synchronous = False, more than 1 thread
can be allocated to process messages
• Example:
• Synchronous = False
• Maximum Thread Count = 10
• 10 messages, each with their own
instance of the container, will execute
concurrently
Building Complex Business Processes
Split Process Step : Join
• Code – When dealing with NON XML or
complex documents where a simple wrapper will
not work
• Loop through collection of processed
individual messages (i.e. splits )
• Null – When there is no need to pass on the
individual messages to other Process Steps
outside the Split Process Step
• Wrapper – Provides the name and
namespace for the XML Root to wrap all the
individual messages previously processed by the
Steps Block
Logical Process Steps : Demo
Purpose:
Familiarize users with using logic process steps in a business process.
Objectives:
Acquaint users with the following aspects of logic process steps.
• Using the Decision Step in logical processing
• Using the Parallel process step
• Using the Split Process Step for Batch Splitting
Building Complex Business Processes
Exception Management
Generic exception pattern
• Dedicated Business Process to handle
exceptions
• Should Audit to Failed Database
• Optionally enrich with business
specific info
• Optionally rethrow
• Called from Execute Process Step
in Catch block of Exception
Process Step
• See Samples **
Building Complex Business Processes
Why enrich an exception?
• To insert business domain information to assist in troubleshooting
• Exception shielding patterns
How to enrich an exception
• Access in Catch Block of Exception Process Step
• Use a C# Process Step
• PipelineException
• Accessed via a context property
• Contains name of process and process step that threw the exception
• Inner Exception is CurrentException
• CurrentException
• Accessed via a context property
• Actual error that is thrown
Enriching Exceptions
Building Complex Business Processes
Enriching Exceptions : Example
// Get the original exception that was thrown
PipelineException ex = (PipelineException)context.Properties["PipelineException"];
// business domain specific : get original record count and row number the exception occurred on
string rowNumber = "";
var recordCount = context.Data.GetProperty("CRO","RecordCount","0");
var rowNode = context.Data.ToXmlDocument().SelectSingleNode("/*/_RowNumber");
if(rowNode != null) rowNumber = rowNode.InnerText;
// Create a new exception message with more detail and return as new exception
var msg = String.Format(@"Batch Process aborted processing CRO Excel workbook,
'{0}'rnProcess Name: {0}, rnOriginal Exception Message: {4}", context.Data.GetProperty("CRO","ProcessedFileName",""), ex.InnerException.Message);
// reset the current exception object
context.Properties["CurrentException"] = new System.Exception(msg, ex);
Building Complex Business Processes
Always in Custom Process Step
• Allows runtime to forward and set exception property
OnPublish or OnReceive events
• Semantic = Mulitcast
• Audit (failure) and Cancel
• Semantic = Request
• Throw
ESB Message – Return instead of throw
• CreateReplyFromException() & CreateFromException()
• FaultType = Neuron.Esb.FaultType Enum
Throwing Exceptions
Exception Management : Demo
Purpose:
Familiarize users with using exception management techniques in a business processes.
Objectives:
Acquaint users with the following aspects of exception management.
• Using the Exception Process Step
• Enriching exception information
Building Complex Business Processes
Language Editors
Where can they be used?
• Neuron ESB Business Process Designer
• Neuron ESB Workflow Designer
What are they used for?
• Message mediation
• Custom business logic
• Calling external APIs (assemblies)
• Alternative to writing custom Process
Steps or Workflow Activities
• Extends Business Processes and
Workflow capabilities
Building Complex Business Processes
Using Custom .NET Assembles
• Can be called directly from a Code Process Step
• Must use full namespace reference to access
• Can add reference to assembly:
• At Code Step level
• At Business Process level
• Assembly must be manually deployed to Neuron install directory (location of esbservice.exe) or GAC
• To use an Alternative location, modify ProbePath:
• esbservice.exe.config
• neuronexplorer.exe.config
• esbhost.exe.config
Language Editors : Custom DLLs
Language Editors : Demo
Purpose:
Show users how to reference and call a function from an external .NET assembly within a Business Process.
Objectives:
Acquaint users with the following aspects of referencing external .NET assemblies
• Using the Code Editor to reference a .NET assembly
• Referencing a .NET assembly at the Business Process level
Building Complex Business Processes
Mediating the Neuron ESB Message
Accessing the ESB Message in a
Business Process
• In a Language Code Process Step
• context.Data is a ESBMessage()
• e.g. context.Data = new ESBMessage()
• e.g. context.Data =
context.Data.Clone(false)
• Every Process Step mediates the ESB
Message
Accessing the ESB Message in a
Workflow
• Message, reply and request arguments
is a ESB Message()
• Every Workflow Activity mediates the
ESB Message
Graphic Needed
Building Complex Business Processes
Mediating the Neuron ESB Message
Modifying the ESB Message Body
• ESBMessage methods:
• FromString
• FromXml
• Bytes
• Text
• Body
Retrieving the ESB Message Body
• ESBMessage methods
• ToXml, ToXmlDocument,
ToXDocument, Text, Bytes, Body,
GetBody<T>, WriteMessage(stream)
Graphic Needed
Building Complex Business Processes
Mediating the Neuron ESB Message
ESB Message Header
• Determines behavior of ESB Message
Common Header Properties
• Topic
• Semantic
• MessageID
• TransactionID
• Action
• Session
• SourceID
• Created
• FaultType
Graphic Needed
Building Complex Business Processes
Custom Properties and State : Message Level
• Lives with lifetime of the message
• Has a Prefix and a Name
• Can be read and written to in a
Business Process or Workflow
• ESBMessage.SetProperty()
• ESBMessage.GetProperty()
• Value is a string
Building Complex Business Processes
• Example preserving properties so they remain on the Reply message when making a request/reply call:
context.Data.Header.RequestHeadersToPreserve = "DA.Organization,DA.Dept";
• Setting a Property:
context.Data.SetProperty("DA", "Organization", "CPS");
• Setting a group of properties:
var myList = new System.Collections.Generic.List<Neuron.NameValuePair>();
myList.Add(new Neuron.NameValuePair("Organization","CPS"));
myList.Add(new Neuron.NameValuePair("Dept","Finance"));
context.Data.SetProperties("DA",myList);
• Retrieving a value of a property:
var myOrg = context.Data.GetProperty("DA","Organization","");
• Retrieving a group of a properties:
var myDAProps = context.Data.GetProperties("DA");
foreach(var prop in myDAProps)
context.Instance.TraceInformation(prop.Name + ": " + prop.Value);
Custom Properties and State : Message Level : Example
Building Complex Business Processes
Properties Collection
• Lives for lifetime of a Business Process “Instance”
• Value can be inserted in one Process step and accessed by any other Process Step
• Think “Module” level variable
• Value is an Object
• Used by some “Flow Control” Process Steps **
• NOT Captured during Auditing
• context.Properties
• Why?
• Can drive custom business logic
• Not visible to any other part of the system or Business Process instances
• Large amount of data that you DON’T want to live with the message
Custom Properties and State : Instance Level
Building Complex Business Processes
State Collection
• Lives for lifetime of an endpoint or application hosting the party
• Values are accessible for all instances of the Business Process
• Concurrent Dictionary object (thread safe)
• Think “Global Cache”
• Use a Lock if editing
• NOT Captured during Auditing
• context.State
• Why?
• Can drive custom business logic
• Increase Performance
• Must be managed in process
Custom Properties and State : State Level
Custom Properties and State : Demo
Purpose:
Show users when and how the various methods can be used to carry state within or across Business Process and/or
Service boundaries.
Objectives:
Acquaint users with the following aspects of business process scopes
• Using the Code Editor to create custom properties or store state
• How to access properties within a Business Process
Building Complex Business Processes
Allows access to the Neuron ESB Configuration
• Why?
• Access any entity and its properties at runtime/design time
• Configuration is loaded in memory at startup
• Retrieve/edit documents in repository
• Retrieve encryption keys
• Example
• Use XML/JSON documents in Repository as template approach for creating new messages
Sample C#
foreach(var key in context.Configuration.Keys)
context.Instance.TraceInformation(key.Key);
Neuron ESB APIs
Building Complex Business Processes
Allows access to Neuron ESB Environmental Variables
• Why?
• Access environment specific information
• Drive custom business logic
• Example
• Retrieve certificate name from environment, get actual cert from store
Sample C#
var certName = context.EnvironmentVariables["FinanceProjectCert"];
var cred = context.Configuration.Credentials[certName];
if(cred != null)
{
var findValue = cred.CertFindByValue;
var findType = cred.CertFindType;
var storeLocation = cred.CertStoreLocation;
var store = cred.CertStoreName;
factory.Credentials.ClientCertificate.SetCertificate(storeLocation, store, findType, findValue);
}
Neuron ESB APIs
Building Complex Business Processes
Allows access to Neuron ESB Client Context
• What is it?
• Does everything for the Party and communicates with Neuron ESB Server
• Why?
• Can obtain a reference to the Party running Business Process at runtime
• Can obtain a reference to each Topic Context of the Party
• Write a message to the Failed Auditing database
• Publish a message via C#
• Lots of things available...
• Caveat
• Only accessible in Runtime environment!
• Check design-time flag:
context.Runtime.DesignMode
Neuron ESB APIs
Building Complex Business Processes
Sample C#
if (context.Runtime.DesignMode)
throw new Exception("This will only work at runtime.");
// Retrieve client context
var clientContext = Neuron.Esb.Internal.PipelineRuntimeHelper.ClientContext;
// #1 way to publish.
clientContext.OwnerSubscriber.SendMessage(context.Data);
// #2 way to publish. Grab the Topic context...and do a Publish.
var topicContext = clientContext.TopicContexts[“RootTopic”];
if (topicContext != null)
topicContext.Publish(context.Data);
else
throw new Exception("The party doesn't have the topic as part of their subscription");
Neuron ESB APIs
Building Complex Business Processes
Business Process Debugger
Testing versus Debugging
• Testing
• High-level view if Process works or fails
• Provides error or output
• Debugging
• Can set Breakpoints and view state
at each Process Step
• Supports F5, F11
• Everything you do in Test applies to Debug
• Uses “Debug” toolbar button to launch
• Exposes Quick Watch Window
• View variable, context and ESBMessage state at each Process Step
• Allows the setting of Breakpoints within Language Process Steps
Building Complex Business Processes
Business Process Debugger : Quick Watch
• Quick Watch Window
• When Debug button is pressed we load all the
symbols
• This may take a few seconds....
• Will stop at first Breakpoint
• Will display Quick Watch Window
Building Complex Business Processes
Business Process Debugger : Breakpoints
• Setting Breakpoints
• On Process Steps
• Right-click menu option
• Within Language Code Process
Steps
• Click on left-hand pane by
statement
Business Process Debugger : Demo
Purpose:
Show users how to use the debugger within a Business Process.
Objectives:
Acquaint users with the following aspects of debugging business processes.
• Using the debugger to inspect context variables, messages and process step state
Building Complex Business Processes : Lab
Goal
In this lab, you will learn how to create a complex business, which will utilize different features of the Business Process
designer to accomplish intricate tasks and advanced scenarios.
Objectives
Creating a complex Business Process
Testing the Business Process at Design Time
Testing the Business Process at Runtime
Introduction to Neuron ESB
Review
• Neuron ESB provides a number of logical process steps to help control the flow of message
processing within a business process
• Decision
• Parallel
• Split / Join
• Exceptions should be handled by the business process, preferably using a separate business
process designed specifically for the task.
• Exceptions can, and should, be enriched before auditing or forwarding the exception.
• The Neuron ESB API provides access to many Neuron specific entities
• Configuration
• Environment Variables
• Client Context
• The business process debugger provides enhanced features, above and beyond testing, to help
ensure that your business process is running properly
• Quick Watch
• Breakpoints

More Related Content

What's hot

Face Off Domino vs Exchange On Premises
Face Off Domino vs Exchange On PremisesFace Off Domino vs Exchange On Premises
Face Off Domino vs Exchange On PremisesGabriella Davis
 
What is Node.js? (ICON UK)
What is Node.js? (ICON UK)What is Node.js? (ICON UK)
What is Node.js? (ICON UK)Tim Davis
 
HCL Domino and Notes v12 are coming!
HCL Domino and Notes v12 are coming!HCL Domino and Notes v12 are coming!
HCL Domino and Notes v12 are coming!panagenda
 
Spring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring BatchSpring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring BatchEberhard Wolff
 
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsInform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsJared Roberts
 
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)Sam Bowne
 
What's New in Notes, Sametime and Verse On-Premises
What's New in Notes, Sametime and Verse On-PremisesWhat's New in Notes, Sametime and Verse On-Premises
What's New in Notes, Sametime and Verse On-PremisesGabriella Davis
 
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...Benedek Menesi
 
Transactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsTransactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsVlad Mihalcea
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsTeamstudio
 
HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview hemantnaik
 
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)Sam Bowne
 
The View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityThe View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityBill Buchan
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Keith Brooks
 
Windows Phone 8 - 7 Local Database
Windows Phone 8 - 7 Local DatabaseWindows Phone 8 - 7 Local Database
Windows Phone 8 - 7 Local DatabaseOliver Scheer
 
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...John Head
 

What's hot (18)

Face Off Domino vs Exchange On Premises
Face Off Domino vs Exchange On PremisesFace Off Domino vs Exchange On Premises
Face Off Domino vs Exchange On Premises
 
Domino Adminblast
Domino AdminblastDomino Adminblast
Domino Adminblast
 
What is Node.js? (ICON UK)
What is Node.js? (ICON UK)What is Node.js? (ICON UK)
What is Node.js? (ICON UK)
 
HCL Domino and Notes v12 are coming!
HCL Domino and Notes v12 are coming!HCL Domino and Notes v12 are coming!
HCL Domino and Notes v12 are coming!
 
Spring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring BatchSpring Web Service, Spring Integration and Spring Batch
Spring Web Service, Spring Integration and Spring Batch
 
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsInform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
 
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S: 9: Attacking Data Stores (Part 2 of 2)
 
What's New in Notes, Sametime and Verse On-Premises
What's New in Notes, Sametime and Verse On-PremisesWhat's New in Notes, Sametime and Verse On-Premises
What's New in Notes, Sametime and Verse On-Premises
 
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
IBM Connect 2014 BP103: Ready, Aim, Fire: Mastering the Latest in the Adminis...
 
XMPP Academy #2
XMPP Academy #2XMPP Academy #2
XMPP Academy #2
 
Transactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsTransactions and Concurrency Control Patterns
Transactions and Concurrency Control Patterns
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
 
HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview HCL Domino V12 Key Security Features Overview
HCL Domino V12 Key Security Features Overview
 
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)
CNIT 129S Ch 9: Attacking Data Stores (Part 2 of 2)
 
The View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityThe View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database Connectivity
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!
 
Windows Phone 8 - 7 Local Database
Windows Phone 8 - 7 Local DatabaseWindows Phone 8 - 7 Local Database
Windows Phone 8 - 7 Local Database
 
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...
JMP201 Introduction to IBM Lotus Notes and IBM Lotus Domino Integration with ...
 

Similar to Building Complex Business Processes 3.7

Enhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptxEnhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptxRohit Radhakrishnan
 
Automated product categorization
Automated product categorizationAutomated product categorization
Automated product categorizationAndreas Loupasakis
 
Automated product categorization
Automated product categorization   Automated product categorization
Automated product categorization Warply
 
O365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudO365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudNCCOMMS
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementSharkrit JOBBO
 
Build, Test and Extend Integrated Workflows 3.7
Build, Test and Extend Integrated Workflows 3.7Build, Test and Extend Integrated Workflows 3.7
Build, Test and Extend Integrated Workflows 3.7StephenKardian
 
Cashing in on logging and exception data
Cashing in on logging and exception dataCashing in on logging and exception data
Cashing in on logging and exception dataStackify
 
Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016Yuta Iwama
 
python_development.pptx
python_development.pptxpython_development.pptx
python_development.pptxLemonReddy1
 
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and ChallengesBIOVIA
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environmentBIOVIA
 
Give your little scripts big wings: Using cron in the cloud with Amazon Simp...
Give your little scripts big wings:  Using cron in the cloud with Amazon Simp...Give your little scripts big wings:  Using cron in the cloud with Amazon Simp...
Give your little scripts big wings: Using cron in the cloud with Amazon Simp...Amazon Web Services
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauAmasty
 
O365con14 - powershell for exchange administrators
O365con14 - powershell for exchange administratorsO365con14 - powershell for exchange administrators
O365con14 - powershell for exchange administratorsNCCOMMS
 
transactions-advanced for automatic payment.pptx
transactions-advanced for automatic payment.pptxtransactions-advanced for automatic payment.pptx
transactions-advanced for automatic payment.pptxssusereced02
 
Yapc10 Cdt World Domination
Yapc10   Cdt World DominationYapc10   Cdt World Domination
Yapc10 Cdt World DominationcPanel
 
Top 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseTop 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseSandesh Rao
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
OpenSouthCode 2018 - Integrating your applications easily with Apache Camel
OpenSouthCode 2018 - Integrating your applications easily with Apache CamelOpenSouthCode 2018 - Integrating your applications easily with Apache Camel
OpenSouthCode 2018 - Integrating your applications easily with Apache CamelJosé Román Martín Gil
 

Similar to Building Complex Business Processes 3.7 (20)

Enhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptxEnhanced Reframework Session_16-07-2022.pptx
Enhanced Reframework Session_16-07-2022.pptx
 
Automated product categorization
Automated product categorizationAutomated product categorization
Automated product categorization
 
Automated product categorization
Automated product categorization   Automated product categorization
Automated product categorization
 
O365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudO365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloud
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server Management
 
Build, Test and Extend Integrated Workflows 3.7
Build, Test and Extend Integrated Workflows 3.7Build, Test and Extend Integrated Workflows 3.7
Build, Test and Extend Integrated Workflows 3.7
 
Cashing in on logging and exception data
Cashing in on logging and exception dataCashing in on logging and exception data
Cashing in on logging and exception data
 
Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016
 
python_development.pptx
python_development.pptxpython_development.pptx
python_development.pptx
 
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges
(ATS3-PLAT07) Pipeline Pilot Protocol Tips, Tricks, and Challenges
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment
 
Give your little scripts big wings: Using cron in the cloud with Amazon Simp...
Give your little scripts big wings:  Using cron in the cloud with Amazon Simp...Give your little scripts big wings:  Using cron in the cloud with Amazon Simp...
Give your little scripts big wings: Using cron in the cloud with Amazon Simp...
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
 
O365con14 - powershell for exchange administrators
O365con14 - powershell for exchange administratorsO365con14 - powershell for exchange administrators
O365con14 - powershell for exchange administrators
 
transactions-advanced for automatic payment.pptx
transactions-advanced for automatic payment.pptxtransactions-advanced for automatic payment.pptx
transactions-advanced for automatic payment.pptx
 
Yapc10 Cdt World Domination
Yapc10   Cdt World DominationYapc10   Cdt World Domination
Yapc10 Cdt World Domination
 
Top 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous DatabaseTop 20 FAQs on the Autonomous Database
Top 20 FAQs on the Autonomous Database
 
Scheduling Thread
Scheduling  ThreadScheduling  Thread
Scheduling Thread
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
OpenSouthCode 2018 - Integrating your applications easily with Apache Camel
OpenSouthCode 2018 - Integrating your applications easily with Apache CamelOpenSouthCode 2018 - Integrating your applications easily with Apache Camel
OpenSouthCode 2018 - Integrating your applications easily with Apache Camel
 

More from StephenKardian

Deployment and Configuration 3.7
Deployment and Configuration 3.7Deployment and Configuration 3.7
Deployment and Configuration 3.7StephenKardian
 
Tracing, Logging and Troubleshooting 3.7
Tracing, Logging and Troubleshooting 3.7Tracing, Logging and Troubleshooting 3.7
Tracing, Logging and Troubleshooting 3.7StephenKardian
 
Operational Security 3.7
Operational Security 3.7Operational Security 3.7
Operational Security 3.7StephenKardian
 
Workflow Hosting and Tracking 3.7
Workflow Hosting and Tracking 3.7Workflow Hosting and Tracking 3.7
Workflow Hosting and Tracking 3.7StephenKardian
 
Workflow Patterns and Correlation 3.7
Workflow Patterns and Correlation 3.7Workflow Patterns and Correlation 3.7
Workflow Patterns and Correlation 3.7StephenKardian
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7StephenKardian
 
Monitoring Neuron ESB 3.7
Monitoring Neuron ESB 3.7Monitoring Neuron ESB 3.7
Monitoring Neuron ESB 3.7StephenKardian
 
Building Custom Adapters 3.7
Building Custom Adapters 3.7Building Custom Adapters 3.7
Building Custom Adapters 3.7StephenKardian
 
Using Adapters and Mediation to Integrate Systems 3.7
Using Adapters and Mediation to Integrate Systems 3.7Using Adapters and Mediation to Integrate Systems 3.7
Using Adapters and Mediation to Integrate Systems 3.7StephenKardian
 
Introduction to Adapters 3.7
Introduction to Adapters 3.7Introduction to Adapters 3.7
Introduction to Adapters 3.7StephenKardian
 
Developing and Hosting SOAP Based Services
Developing and Hosting SOAP Based ServicesDeveloping and Hosting SOAP Based Services
Developing and Hosting SOAP Based ServicesStephenKardian
 
Developing and Hosting REST APIs 3.7
Developing and Hosting REST APIs 3.7Developing and Hosting REST APIs 3.7
Developing and Hosting REST APIs 3.7StephenKardian
 
Introduction to API and Service Hosting 3.7
Introduction to API and Service Hosting 3.7Introduction to API and Service Hosting 3.7
Introduction to API and Service Hosting 3.7StephenKardian
 
Extending Business Processes 3.7
Extending Business Processes 3.7Extending Business Processes 3.7
Extending Business Processes 3.7StephenKardian
 
`Neuron ESB Client API 3.7
`Neuron ESB Client API 3.7`Neuron ESB Client API 3.7
`Neuron ESB Client API 3.7StephenKardian
 
Introduction to Messaging 3.7
Introduction to Messaging 3.7Introduction to Messaging 3.7
Introduction to Messaging 3.7StephenKardian
 
Introduction to Neuron ESB 3.7
Introduction to Neuron ESB 3.7Introduction to Neuron ESB 3.7
Introduction to Neuron ESB 3.7StephenKardian
 

More from StephenKardian (20)

Deployment and Configuration 3.7
Deployment and Configuration 3.7Deployment and Configuration 3.7
Deployment and Configuration 3.7
 
Tracing, Logging and Troubleshooting 3.7
Tracing, Logging and Troubleshooting 3.7Tracing, Logging and Troubleshooting 3.7
Tracing, Logging and Troubleshooting 3.7
 
Operational Security 3.7
Operational Security 3.7Operational Security 3.7
Operational Security 3.7
 
Workflow Hosting and Tracking 3.7
Workflow Hosting and Tracking 3.7Workflow Hosting and Tracking 3.7
Workflow Hosting and Tracking 3.7
 
Workflow Patterns and Correlation 3.7
Workflow Patterns and Correlation 3.7Workflow Patterns and Correlation 3.7
Workflow Patterns and Correlation 3.7
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7
 
Monitoring Neuron ESB 3.7
Monitoring Neuron ESB 3.7Monitoring Neuron ESB 3.7
Monitoring Neuron ESB 3.7
 
Building Custom Adapters 3.7
Building Custom Adapters 3.7Building Custom Adapters 3.7
Building Custom Adapters 3.7
 
Using Adapters and Mediation to Integrate Systems 3.7
Using Adapters and Mediation to Integrate Systems 3.7Using Adapters and Mediation to Integrate Systems 3.7
Using Adapters and Mediation to Integrate Systems 3.7
 
Introduction to Adapters 3.7
Introduction to Adapters 3.7Introduction to Adapters 3.7
Introduction to Adapters 3.7
 
Web Security 3.7
Web Security 3.7Web Security 3.7
Web Security 3.7
 
Developing and Hosting SOAP Based Services
Developing and Hosting SOAP Based ServicesDeveloping and Hosting SOAP Based Services
Developing and Hosting SOAP Based Services
 
Developing and Hosting REST APIs 3.7
Developing and Hosting REST APIs 3.7Developing and Hosting REST APIs 3.7
Developing and Hosting REST APIs 3.7
 
Introduction to API and Service Hosting 3.7
Introduction to API and Service Hosting 3.7Introduction to API and Service Hosting 3.7
Introduction to API and Service Hosting 3.7
 
Extending Business Processes 3.7
Extending Business Processes 3.7Extending Business Processes 3.7
Extending Business Processes 3.7
 
Repository 3.7
Repository 3.7Repository 3.7
Repository 3.7
 
`Neuron ESB Client API 3.7
`Neuron ESB Client API 3.7`Neuron ESB Client API 3.7
`Neuron ESB Client API 3.7
 
Introduction to Messaging 3.7
Introduction to Messaging 3.7Introduction to Messaging 3.7
Introduction to Messaging 3.7
 
Introduction to Neuron ESB 3.7
Introduction to Neuron ESB 3.7Introduction to Neuron ESB 3.7
Introduction to Neuron ESB 3.7
 
ESB Fundamentals 3.7
ESB Fundamentals 3.7ESB Fundamentals 3.7
ESB Fundamentals 3.7
 

Recently uploaded

Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsKarinaGenton
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxUnboundStockton
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfadityarao40181
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfMahmoud M. Sallam
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 

Recently uploaded (20)

Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its Characteristics
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docx
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdf
 
Pharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdfPharmacognosy Flower 3. Compositae 2023.pdf
Pharmacognosy Flower 3. Compositae 2023.pdf
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 

Building Complex Business Processes 3.7

  • 2. Building Complex Business Processes • Introduce logic within a Business Process that allows for process control loops. • Show how to incorporate custom DLLs into a Business Process • Explore debugging techniques for business processes • Discuss exception management techniques • Show how to access Neuron ESB specific APIs directly in a Business Process to enable development of more dynamic and sophisticated solutions Goals
  • 3. Building Complex Business Processes • Using logic steps in a business process • Exception management techniques • Building / returning ESB messages • ESB Message Custom Properties and State • Accessing Neuron ESB APIs and resources • Using custom DLLs in language editors • Using the Business Process Debugger Lesson Plan
  • 4. Building Complex Business Processes • Simple predictive models commonly employed in situations where true / false rules need to be enforced • In a Business process logic steps provide certain benefits: • Control the flow of the business process • Dynamic routing inside a business process • Anticipate errors and catch them before they occur • Run portions of a process concurrently to speed up performance Logical Steps
  • 5. Building Complex Business Processes Decision Process Step • Uses Boolean values to return true or false based on a condition • Can have multiple branches • Evaluated left to right – only one branch executes • This can be used to: • Anticipate errors • Control process flow • Dynamically route messages • In the example shown, we use a Decision Step to determine if the message contains data • If not, audit the message and cancel the flow • Else, use another decision step to determine which topic to send the message to, based on the value of a custom property
  • 6. Building Complex Business Processes Parallel Process Step • The parallel step allows for aspects of a business process to run concurrently. • Inside of a business process this can be used to: • Control the logical flow of the business process • Allow for multiple functionalities to run concurrently reducing processing time
  • 7. Building Complex Business Processes Parallel Process Step : Branches • Each Branch gets a copy of the original message (i.e. context.Data.Clone(false) ) • Each Branch can modify the message or replace it. (i.e. context.Data ) • Each final Branch message is added to a collection and stored in the context property, “Messages” • “Messages” collection can be accessed in Process Steps following the Parallel Process Step i.e. using a C# Process Step
  • 8. Building Complex Business Processes Parallel Process Step : Messages The “Messages” collection can be accessed in Process Steps following the Parallel Process Step using one of the Control Flow steps such as the ForEach Process Step
  • 9. Building Complex Business Processes Parallel Process Step Within a Branch Custom properties can be stored: context.Properties["myprop"] = "my custom data"; The name of the Branch can be accessed: context.Properties["CurrentBranch"] as string After the Parallel Step Custom properties can be accessed by preceding the property name with the branch name: var prop = context.Properties["Branch1.myprop"];
  • 10. Building Complex Business Processes Split Process Step Used to process individual messages contained within a larger incoming message (Batch file) • Split • Executes logic for determining the boundaries of individual messages within the Batch • Each individual message is delivered to the Steps Block • Options available via right-click context menu • Code – Exposes Neuron ESB C# Code Editor • XPATH – XPATH statement (assuming message is XML) • Steps Block • Contains the Process Steps used to process each individual message parsed from the Batch • By default, each message does not have access to the other messages in the batch • Can be configured to run either synchronously i.e. For Loop, or Asynchronously using the following properties • Synchronous – default is True • Maximum Thread Count – default is 1. Determines number of threads to allocate ONLY if Synchronous is set to False • Join • Executes logic to either dispose of, or aggregate the individual messages previously split and processed into 1 outgoing message • Options available via right-click context menu • Code– Exposes Neuron ESB C# Code Editor • Null – Individual messages are discarded • Wrapper – XML element to wrap Individual
  • 11. Building Complex Business Processes Split Process Step : Split Type : XPath XPATH – Easiest option when document is simple XML <Orders> <Order> <OrderID>1234</OrderID> <OrderDate>4/22/09</OrderDate> <OrderAmount>100.00</OrderAmount> </Order> <Order> <OrderID>1235</OrderID> <OrderDate>4/22/09</OrderDate> <OrderAmount>110.00</OrderAmount> </Order> <Order> <OrderID>1236</OrderID> <OrderDate>4/22/09</OrderDate> <OrderAmount>120.00</OrderAmount> </Order> </Orders>
  • 12. Building Complex Business Processes Split Process Step : Split Type : Code When dealing with NON XML or complex documents where XPATH will not work • List of Context Objects – This contains the batch of messages that will be delivered to the STEPS block • Each individual message created using Clone to preserve relationship
  • 13. Building Complex Business Processes Split Process Step : Steps Block • Is a container that can contain any number of Process Steps • All Process Steps within the container will execute for each Individual Message • The Split feeds an individual message, one at a time, to the container from the collection of messages • By default, there is only 1 thread that executes an instance of the container with its message (i.e. for loop) • If Synchronous = False, more than 1 thread can be allocated to process messages • Example: • Synchronous = False • Maximum Thread Count = 10 • 10 messages, each with their own instance of the container, will execute concurrently
  • 14. Building Complex Business Processes Split Process Step : Join • Code – When dealing with NON XML or complex documents where a simple wrapper will not work • Loop through collection of processed individual messages (i.e. splits ) • Null – When there is no need to pass on the individual messages to other Process Steps outside the Split Process Step • Wrapper – Provides the name and namespace for the XML Root to wrap all the individual messages previously processed by the Steps Block
  • 15. Logical Process Steps : Demo Purpose: Familiarize users with using logic process steps in a business process. Objectives: Acquaint users with the following aspects of logic process steps. • Using the Decision Step in logical processing • Using the Parallel process step • Using the Split Process Step for Batch Splitting
  • 16. Building Complex Business Processes Exception Management Generic exception pattern • Dedicated Business Process to handle exceptions • Should Audit to Failed Database • Optionally enrich with business specific info • Optionally rethrow • Called from Execute Process Step in Catch block of Exception Process Step • See Samples **
  • 17. Building Complex Business Processes Why enrich an exception? • To insert business domain information to assist in troubleshooting • Exception shielding patterns How to enrich an exception • Access in Catch Block of Exception Process Step • Use a C# Process Step • PipelineException • Accessed via a context property • Contains name of process and process step that threw the exception • Inner Exception is CurrentException • CurrentException • Accessed via a context property • Actual error that is thrown Enriching Exceptions
  • 18. Building Complex Business Processes Enriching Exceptions : Example // Get the original exception that was thrown PipelineException ex = (PipelineException)context.Properties["PipelineException"]; // business domain specific : get original record count and row number the exception occurred on string rowNumber = ""; var recordCount = context.Data.GetProperty("CRO","RecordCount","0"); var rowNode = context.Data.ToXmlDocument().SelectSingleNode("/*/_RowNumber"); if(rowNode != null) rowNumber = rowNode.InnerText; // Create a new exception message with more detail and return as new exception var msg = String.Format(@"Batch Process aborted processing CRO Excel workbook, '{0}'rnProcess Name: {0}, rnOriginal Exception Message: {4}", context.Data.GetProperty("CRO","ProcessedFileName",""), ex.InnerException.Message); // reset the current exception object context.Properties["CurrentException"] = new System.Exception(msg, ex);
  • 19. Building Complex Business Processes Always in Custom Process Step • Allows runtime to forward and set exception property OnPublish or OnReceive events • Semantic = Mulitcast • Audit (failure) and Cancel • Semantic = Request • Throw ESB Message – Return instead of throw • CreateReplyFromException() & CreateFromException() • FaultType = Neuron.Esb.FaultType Enum Throwing Exceptions
  • 20. Exception Management : Demo Purpose: Familiarize users with using exception management techniques in a business processes. Objectives: Acquaint users with the following aspects of exception management. • Using the Exception Process Step • Enriching exception information
  • 21. Building Complex Business Processes Language Editors Where can they be used? • Neuron ESB Business Process Designer • Neuron ESB Workflow Designer What are they used for? • Message mediation • Custom business logic • Calling external APIs (assemblies) • Alternative to writing custom Process Steps or Workflow Activities • Extends Business Processes and Workflow capabilities
  • 22. Building Complex Business Processes Using Custom .NET Assembles • Can be called directly from a Code Process Step • Must use full namespace reference to access • Can add reference to assembly: • At Code Step level • At Business Process level • Assembly must be manually deployed to Neuron install directory (location of esbservice.exe) or GAC • To use an Alternative location, modify ProbePath: • esbservice.exe.config • neuronexplorer.exe.config • esbhost.exe.config Language Editors : Custom DLLs
  • 23. Language Editors : Demo Purpose: Show users how to reference and call a function from an external .NET assembly within a Business Process. Objectives: Acquaint users with the following aspects of referencing external .NET assemblies • Using the Code Editor to reference a .NET assembly • Referencing a .NET assembly at the Business Process level
  • 24. Building Complex Business Processes Mediating the Neuron ESB Message Accessing the ESB Message in a Business Process • In a Language Code Process Step • context.Data is a ESBMessage() • e.g. context.Data = new ESBMessage() • e.g. context.Data = context.Data.Clone(false) • Every Process Step mediates the ESB Message Accessing the ESB Message in a Workflow • Message, reply and request arguments is a ESB Message() • Every Workflow Activity mediates the ESB Message Graphic Needed
  • 25. Building Complex Business Processes Mediating the Neuron ESB Message Modifying the ESB Message Body • ESBMessage methods: • FromString • FromXml • Bytes • Text • Body Retrieving the ESB Message Body • ESBMessage methods • ToXml, ToXmlDocument, ToXDocument, Text, Bytes, Body, GetBody<T>, WriteMessage(stream) Graphic Needed
  • 26. Building Complex Business Processes Mediating the Neuron ESB Message ESB Message Header • Determines behavior of ESB Message Common Header Properties • Topic • Semantic • MessageID • TransactionID • Action • Session • SourceID • Created • FaultType Graphic Needed
  • 27. Building Complex Business Processes Custom Properties and State : Message Level • Lives with lifetime of the message • Has a Prefix and a Name • Can be read and written to in a Business Process or Workflow • ESBMessage.SetProperty() • ESBMessage.GetProperty() • Value is a string
  • 28. Building Complex Business Processes • Example preserving properties so they remain on the Reply message when making a request/reply call: context.Data.Header.RequestHeadersToPreserve = "DA.Organization,DA.Dept"; • Setting a Property: context.Data.SetProperty("DA", "Organization", "CPS"); • Setting a group of properties: var myList = new System.Collections.Generic.List<Neuron.NameValuePair>(); myList.Add(new Neuron.NameValuePair("Organization","CPS")); myList.Add(new Neuron.NameValuePair("Dept","Finance")); context.Data.SetProperties("DA",myList); • Retrieving a value of a property: var myOrg = context.Data.GetProperty("DA","Organization",""); • Retrieving a group of a properties: var myDAProps = context.Data.GetProperties("DA"); foreach(var prop in myDAProps) context.Instance.TraceInformation(prop.Name + ": " + prop.Value); Custom Properties and State : Message Level : Example
  • 29. Building Complex Business Processes Properties Collection • Lives for lifetime of a Business Process “Instance” • Value can be inserted in one Process step and accessed by any other Process Step • Think “Module” level variable • Value is an Object • Used by some “Flow Control” Process Steps ** • NOT Captured during Auditing • context.Properties • Why? • Can drive custom business logic • Not visible to any other part of the system or Business Process instances • Large amount of data that you DON’T want to live with the message Custom Properties and State : Instance Level
  • 30. Building Complex Business Processes State Collection • Lives for lifetime of an endpoint or application hosting the party • Values are accessible for all instances of the Business Process • Concurrent Dictionary object (thread safe) • Think “Global Cache” • Use a Lock if editing • NOT Captured during Auditing • context.State • Why? • Can drive custom business logic • Increase Performance • Must be managed in process Custom Properties and State : State Level
  • 31. Custom Properties and State : Demo Purpose: Show users when and how the various methods can be used to carry state within or across Business Process and/or Service boundaries. Objectives: Acquaint users with the following aspects of business process scopes • Using the Code Editor to create custom properties or store state • How to access properties within a Business Process
  • 32. Building Complex Business Processes Allows access to the Neuron ESB Configuration • Why? • Access any entity and its properties at runtime/design time • Configuration is loaded in memory at startup • Retrieve/edit documents in repository • Retrieve encryption keys • Example • Use XML/JSON documents in Repository as template approach for creating new messages Sample C# foreach(var key in context.Configuration.Keys) context.Instance.TraceInformation(key.Key); Neuron ESB APIs
  • 33. Building Complex Business Processes Allows access to Neuron ESB Environmental Variables • Why? • Access environment specific information • Drive custom business logic • Example • Retrieve certificate name from environment, get actual cert from store Sample C# var certName = context.EnvironmentVariables["FinanceProjectCert"]; var cred = context.Configuration.Credentials[certName]; if(cred != null) { var findValue = cred.CertFindByValue; var findType = cred.CertFindType; var storeLocation = cred.CertStoreLocation; var store = cred.CertStoreName; factory.Credentials.ClientCertificate.SetCertificate(storeLocation, store, findType, findValue); } Neuron ESB APIs
  • 34. Building Complex Business Processes Allows access to Neuron ESB Client Context • What is it? • Does everything for the Party and communicates with Neuron ESB Server • Why? • Can obtain a reference to the Party running Business Process at runtime • Can obtain a reference to each Topic Context of the Party • Write a message to the Failed Auditing database • Publish a message via C# • Lots of things available... • Caveat • Only accessible in Runtime environment! • Check design-time flag: context.Runtime.DesignMode Neuron ESB APIs
  • 35. Building Complex Business Processes Sample C# if (context.Runtime.DesignMode) throw new Exception("This will only work at runtime."); // Retrieve client context var clientContext = Neuron.Esb.Internal.PipelineRuntimeHelper.ClientContext; // #1 way to publish. clientContext.OwnerSubscriber.SendMessage(context.Data); // #2 way to publish. Grab the Topic context...and do a Publish. var topicContext = clientContext.TopicContexts[“RootTopic”]; if (topicContext != null) topicContext.Publish(context.Data); else throw new Exception("The party doesn't have the topic as part of their subscription"); Neuron ESB APIs
  • 36. Building Complex Business Processes Business Process Debugger Testing versus Debugging • Testing • High-level view if Process works or fails • Provides error or output • Debugging • Can set Breakpoints and view state at each Process Step • Supports F5, F11 • Everything you do in Test applies to Debug • Uses “Debug” toolbar button to launch • Exposes Quick Watch Window • View variable, context and ESBMessage state at each Process Step • Allows the setting of Breakpoints within Language Process Steps
  • 37. Building Complex Business Processes Business Process Debugger : Quick Watch • Quick Watch Window • When Debug button is pressed we load all the symbols • This may take a few seconds.... • Will stop at first Breakpoint • Will display Quick Watch Window
  • 38. Building Complex Business Processes Business Process Debugger : Breakpoints • Setting Breakpoints • On Process Steps • Right-click menu option • Within Language Code Process Steps • Click on left-hand pane by statement
  • 39. Business Process Debugger : Demo Purpose: Show users how to use the debugger within a Business Process. Objectives: Acquaint users with the following aspects of debugging business processes. • Using the debugger to inspect context variables, messages and process step state
  • 40. Building Complex Business Processes : Lab Goal In this lab, you will learn how to create a complex business, which will utilize different features of the Business Process designer to accomplish intricate tasks and advanced scenarios. Objectives Creating a complex Business Process Testing the Business Process at Design Time Testing the Business Process at Runtime
  • 41. Introduction to Neuron ESB Review • Neuron ESB provides a number of logical process steps to help control the flow of message processing within a business process • Decision • Parallel • Split / Join • Exceptions should be handled by the business process, preferably using a separate business process designed specifically for the task. • Exceptions can, and should, be enriched before auditing or forwarding the exception. • The Neuron ESB API provides access to many Neuron specific entities • Configuration • Environment Variables • Client Context • The business process debugger provides enhanced features, above and beyond testing, to help ensure that your business process is running properly • Quick Watch • Breakpoints

Editor's Notes

  1. The goals of this lesson are to introduce how to use logic within a business process that allows for process control loops, show users how to incorporate third party DLLS into a business process, explore debugging techniques in business processes, discuss exception management techniques and show how to access Neuron ESB specific APIs directly in a business process to enable the development of more dynamic and sophisticated solutions.
  2. To facilitate our goals this lesson is broken into seven sections to make the information presented easier to understand. The sections we will be covering are Using logic steps in a business process Exception management techniques Building / returning ESB messages ESB Message Custom Properties and State Accessing Neuron ESB APIs and resources Using custom DLLs in language editors Using the Business Process Debugger
  3. Logical steps are simple predictive models commonly employed in situations where true / false rules need to be enforced. In business processes, logical steps provide benefits in regards to controlling the flow of the business process, facilitating dynamic routing inside of a business process, enable the business process to anticipate errors and catching them before they can occur, and allowing for multiple sections of a business process to be run concurrently in order to speed up performance.
  4. The decision process step provides an if/else construct for use inside of business processes in support of decision trees that might be required for the implementation of business rules. It can be extended to implement an if/else if/ else if/ else construct, with no limitations to the amount of branches that can be added. Branches are evaluated from left to right, with the first branch whose condition evaluates to true, being the branch that will execute, as the decision process step will only execute a single branch of the tree. The conditions for each branch are express as .NET C# code which return a Boolean value, and are constructed through a code editor that is accessed via the “Condition” property in the decision process steps property grid. For those un familiar with the if/else construct in coding, it is important to note that if all conditions fail, the else branch will always execute.
  5. The parallel process step allows for aspects of a business process to run concurrently. This allows business process to not only control the flow in certain scenarios and depending on how the parallel process step is employed, but can also server to increase the speed at which a business process is able to complete it’s tasks. In the example, the message is passed to multiple service endpoints so information is gathered from each and then aggregated at the completion of the parallel step. Each branch can be configured to run on an independent thread
  6. Each Branch of the Parallel process step gets a cloned copy of the original message, but with a unique message id (i.e. Clone(false)). Each Branch can therefore modify the message it receives without affecting the messages being used in other branches, or the original message in the process. The message within the branch is still accessed via the context.Data() API. Once the branches have completed processing, the final message for each branch is stored in a collection which is added to the context properties with the key Messages. The Messages collection can then be accessed outside of the parallel process step.
  7. The Messages collection can be accessed using process steps such as the ForEach process step, as that takes in a collection and loops through each item in that collection, or via the language editors. In the image displayed you can see how both a language editor and a ForEach loop can be configured to access the Messages collection.
  8. From within the branch of a parallel process step custom properties can be stored for access once the parallel process step has complete processing. This is done by setting a context property with the relevant data. As the branch name is used as the prefix for the property, accessing the property outside of the parallel step is simply a matter of calling context.Properties with the key value of the branch name dot the property name.
  9. The split join step allows you to split messages based on either C# code or Xpath. Inside of a business process this can be leveraged to control the flow of the business process by having specific steps operate on small portions of a message, either synchronously or asynchronously. The split aspect of the split process step determines how the message is to be split, either by XPath or by code. Selecting code exposes a C# language editor where one would write the code to create the necessary collection (a process that we will show you in just a few slides). The step block aspect of the split process step is where you place all the process steps that need to be executed on each portion of the message identified by the split. This is like a foreach loop in that each item identified will be passed through these steps before until no more items remain. The join aspect of the split process step allows you to rejoin the messages that result from the processing of each individual portion into a larger message or to ignore those and restore the original message.
  10. Using XPath to split a message is the easier way to handle the processing of large XML files. In the example shown we have an orders document which contains multiple order records. Using the split step we treat each order record as it’s own individual message, processing it in accordance with business requirements (in this case publishing them to a different topic for further processing).
  11. If you are not working with an XML message or you are working with a complex XML message in which XPath will not work, then using code to split the message is the route you would want to take. As you can see in the image provided, you must create a List of type PipelineContext<ESBMessage>. This is the collection type that the split step is looking for. Once you have created that, you can process your message as you see fit, identifying the records as need be and creating an ESBMessage object to which you assign the identified information. You then add a new context, passing in the current context and the created ESBMessage object, which is added to the overall contexts collection.
  12. As we discussed the steps block is a container in which you can place any number of business process steps to be executed on each individual message created by the split aspect of the split process step. Think of this as a sub-business process nested inside a parent business process. Each message will run through all the steps in the steps block, just as they would through any business process. By default this happens synchronously, in case the order in which the messages are processed is important. If ordered processing is not a concern you can change the split process step to run asynchronously by setting the synchronous property to false. In which case the messages will run side by side with no regard for order. If performance is a concern you can limit the number of threads that the split process step uses, by setting the maximum thread count. The split process step will spin up as many threads as indicated, waiting for one to complete before spinning another until all messages are processed.
  13. The rejoining of the messages from the split block aspect of the split process step is something that needs to be taken into consideration when using a split process step. Sometimes what happens inside of the step block is not relevant to the rest of the process. For example if you are taking a large list of customers and splitting them in order to insert them into the database, unless there is a failure you may not care about the messages as they finish the step block because they are in the same state as when they entered. In such a case you can simply ignore them by selecting a null join, in which case what happens is simply disregarded and the original message is restored. Other times you may be concerned with what happens in the steps block. As I mentioned in the last example, if you are concerned only with the failures of the steps block, you can use code to parse through the results and find those messages that failed (you would need to handle how this is generated in the steps block) using a code join in which you write code to create a new message based on the results. Or in a case where each individual record that passes through the steps block does so in order to undergo some kind of transformation to XML format, you can capture that using wrapped which wraps the XML messages inside a namespace and root name.
  14. Exception management is an important aspect of building a business process, as business processes should always anticipate errors and have steps in place to properly handle those errors. The Neuron ESB team suggest creating a business process dedicated to handling errors, in accordance with business guidelines, and the using that business process in all other business processes (call it via the execute process process step). While an error handler will be different in many regards from company to company, certain aspects should be universal such as always auditing the failure to the failed message table in the Neuron ESB database. Other aspects are merely suggestions such as enriching the error before auditing, or re-throwing the error.
  15. Enriching an exception allows you to create a more intelligent version of the error that occurred so identifying the cause of the error is much simpler. Often times the error produced by the .NET framework is not always the most clearly understandable, such as Object reference not set to the instance of an object. However, by enriching the error and drawing out as much information as possible you can identify where in the business process the error occurred as well as other information that will narrow down the possible reasons for the error. In the catch block of the Exception step two exceptions are available for you to use to enrich the exception. The PipelineException, which provides you with the name of the process where the error occurred as well as the process step that threw the error, and the CurrentException which is the actual .NET error that was thrown. While the current exception is available via the context properties it is important to note that it is also the InnerException of the PipelineExeption.
  16. In this example you can see how the PipelineException and CurrentException are used to create much more intelligent and specific exception message. The PipelineException is retrieved from the context properties and used to get the name of the process that threw the error. The CurrentException is used to get the actual .NET error message that was thrown. That information is the used to create an intelligent and clear message explaining the situation and the error that occurred. Once the message is created it is assigned to the CurrentException context property as this will be what is audited along with the failed message to the failed message database table in the Neuron ESB database.
  17. So the question is when would you want to throw an exception instead of simply auditing it and moving on. If you are building a custom process step, which we discuss in Extending Business Processes, you always want to throw any errors that occur so that they can be bubbled up to the business process and handled via the Exception process step. In business processes that are attached to the OnPublish or OnReceive events of a party it is the semantic that will determine what you should do. If the semantic is multicast then there is no endpoint awaiting a response. In which case you would audit the message and either cancel the execution of the business process or continue on if there is more to be done. In a request/response scenario there is an endpoint awaiting a response and so you should either throw the exception or create a new ESBMessage object which contains a message informing the endpoint of the error. Make sure that when you create the response message that you set the FaultType header property to Fault.
  18. Language editors are extremely powerful tools which can be used both in the Business Process Designer and the Workflow designer. They enable you to write code directly into your business process or workflow definition in order to perform message mediation, implement custom business logic or call external assemblies. They can be used as an alternative to writing custom process steps or custom workflow activities, if there is no expectation of them needing to be reused by other processes, and they help you extended the capabilities business process and workflow definitions to meet the business requirements that your company has.
  19. While language editors allow you write .NET code directly into a business process or workflow definition, there are times where that code already exists in an external assembly and you merely wish to make use of it. Both business process and workflow definitions support this by allowing you to reference external assemblies inside of the language editors. Referencing an external assembly can be done at the language editor process step level, allowing that external assembly to be used only by that language editor, or at the process level allowing any language editor in the process to have access to them. When writing code against an external assembly you will need to use the full namespace to reference aspects of that assembly. External assemblies used by business processes must be deployed to the Neuron install director (the location of the esbservice.exe) or the GAC by default. You can change this by modifying the ProbePath in the esbservice.exe.config file, the neuronexplorer.exe.config file and the esbhost.exe.config file.