Wednesday, April 29, 2015

IBM BPM Design Patterns for Performance. (73/285 technotes for 2015)

BPM - performance

  • Use high performance disk subsystems
  • Use most current BPManager and BPMonitor reelase
  • Appropriate JVM Heap Size for optimal throughput and response time
  • Tune your DB for optimal performance
  • Disable tracing and logging
  • Configure thread pools to ensure sufficient concerrency
  • Use fast, high bandwidth network connections
  • For Business Processes - that use 
    • BPMN
      • tune the bpd-queue-capacity & max thread pool size - optimal throuput and scalling
      • remove unnecessary snapshots from Process Center
      • disable notifications is they are not required
      • define auth alias, when using CEI to emit events
      • tune cache parameters
      • tune participant groups
      • optimize data search operations
      • tune Event Manager - tune BPD pool size, and worker thread pool size.
      • tune number of timer events
      • tune Process Server DB - increase log file size & enable file system caching
    • BPEL  
      • maximize the use of micro flow
      • use non-incorruptible processes - if macroflow is needed - separate the solution to use microflows and macroflows
      • For task and process list queries - use composite query tables
      • Use Work Manager based navigation to improve the throughput for long running processes.
      • avoid using asynchronous processes unnecessarily.
      • avoid overly granular transaction boundaries in SCA





Model & Development:


BPEL / Integration Designer:

  • use short running processes - run in one J2EE Transaction with no persistence – Where possible use synchronous interaction for non-interruptible processes
  • if macro flow is required create a seperate BPEL
  • Avoid using - async calls
  • fewer transactional boundaries - best case use      
    • Join Transaction (Interface of the called component) - true, 
    • Suspend Transaction (Reference of the calling transaction) - false,
    • Transaction - any global
      • Services that are automated or start other services - web services, enterprise resource applications

Events: 

      • start and end - 2 events are sufficient 

Architecture:  

    • Choose query tables for task list and process list queries.
    • Choose efficient metadata management - 
      • performance is better if BO types follow the Java naming standards 
      • reuse dataobject type metadata where possible - rather than using DataFactory.create(String URI, String typeName) use DataFactory.create(Type type)             -
      • Business State Machine uses more power …  so choose BPEL is possible.
    • Use - share by reference libraries where possible
    • Ensure content in toolkit is used in several applications.
    • BO parsing mode - Applications which Data Streams - like Webservices, SCA components benefit from lazy parsing.  
 


BPMN / BPD:

  • Involve Human Interactions     
  • Business Process - should have a Business Significance … and not just programming - level granularity

Events:     

  • use of Events (CEI) - should be for Business Monitoring - as event emission uses persistent mechanism      
  • Business Monitoring should not be confused with IT Monitoring     
  • Clients are concerned about state of their business - so use events to track when a task completes / or changes state

Architecture:

  • Fast connection between Process Designer and Process Center     
  • Minimize the use of Service Tasks -      
  • Use searchable business variables - with caution    
  • minimize the number of variables used     
  • minimize the size of each variable used     
  • set variables to null when no longer use - like DB result sets    
  • turn off auto-tracking - auto tracking in BPD is not required - enabled by default - if required create tracking groups to track key events. 
  • avoid BPDs that run perpetually / continuously – as it polls continuously for events -  alternatives - use JMS service or UCA 
  • develop efficient coaches          
    • Avoid large complex coaches         
    • Avoid large / repeating tables - use pagination          
    • Always wire coaches to end node     
  • Minimize use of Large Javascript scripts - it might produce large DOM models - which is expensive - limit it to 50 lines     
  • Avoid direct sql access to internal BPM tables - such as LSW_TASK or LSW_PROCESS - use BPM javascript / rest apis     

Development Best Practice:

  • clear variables in exposed human services that are not intended to end 
  • donot use multi instance loops in the system lane or for batch activities   
  • use conditional joins only when necessary
  • Avoid global error handling
  • Use sequential System lane activities efficiently.
  • Ensure Process Center is tuned
  • preventing wsdl validation from slow web service performance

References:

http://www.evernote.com/l/AKZrhhusWANG75yXr6HJbHEDMoWmyCvplqM/

No comments: