This action might not be possible to undo. Are you sure you want to continue?
com/ Tushar Jain
Standards & Guidelines for TIBCO Business Works
Standards & Guidelines for TIBCO Business Works
Page 1 of 24
http://architecture-soa-bpm-eai.blogspot.com/ Tushar Jain
Table of Contents
1.1 Objective 1.2 Tibco BW Concepts 1.2 Methodology
2 TIBCO Business Works 5.2 Performance Architecture
2.1 Main TIBCO Business Works Performance Components 2.1.1 Engine Processing 2.1.2 Determining the Available Memory 2.1.3 Flow Control 2.1.4 Paging Jobs 2.1.5 Paging Waiting Jobs 2.1.6 Enabling Paging
3 Best Practices
3.1 TIBCO Business Works Engine Tuning Guidelines 3.1.1 Calculating MaxJobs or Flow Limit 3.1.2 Memory Management Issues 3.1.3 Tuning Engine 3.1.4 Fault Tolerance and Load Balancing 3.2 JVM Tuning Guidelines 3.2.1 Specifying JVM Heap Size 3.2.2 Setting JVM and Processor Affinity 3.2.3 JVM Garbage Collection 3.3 TIBCO Business Works Transport and Palette Guidelines 3.3.1 HTTP/S 3.3.2 SOAP 3.3.3 JMS 3.3.4 FTP 3.3.5 JDBC 3.3.6 Transactional Activities 3.3.7 General Activities 3.4 Process and Activity Design Guidelines 3.4.1 Data and Caching 3.4.2 Checkpoints 3.4.3 Grouping Activities 3.4.4 Testing BW Process Definitions 3.4.5 Tracing in BW 3.5 Message, Payload and Schema Guidelines 3.5.1 Data Representation Guidelines for Tibco Rv and JMS 3.5.2 TIBCO Business Works Mapper Performance 3.6 Processing Large Sets of Data 3.6.1 Iterating Through Large Sets of Data Using a Mapper Activity 3.6.2 Sorting and Grouping Data 3.6.3 Large Document/Record Use Cases 3.6.4 SOA Best Practices
4 Configurations 4.1 Configuring Persistent Connections 4.2 Configuring HTTP/JMS Servers
Standards & Guidelines for TIBCO Business Works
Page 2 of 24
2 Naming Conventions 6 Logging 6.3 Enabling SSL Configurations via BW firstname.lastname@example.org Logging Parameters [Details.com/ Tushar Jain 4.http://architecture-soa-bpm-eai. Standards & Guidelines for TIBCO Business Works Page 3 of 24 .1 Logging Rules 6.1 Grouping & Sub-grouping Rules 5. frequency etc.com.com 5 Global Variables 5.blogspot. tusjain@gmail.
The current flavor TIB-BW is provides extensive solution where a process can be configured as a exposable Service adhering to SOA standard. J2EE or Legacy Systems or custom applications or exchanging data within protocols or Applications such as SAP. 1. the protocol involved in data transformation or data exchange.com The purpose of this document is to provide Standards. Analysis leading to defining the solution which defines a transport communication layer. Functional Consultants. Services Configuration . deciding the partners exchanging data and the rule the business need to obey etc. A2A. the business process involved. Tibco BW is extensible as it provides platform to plug in Other available Tibco Products(products providing BPM solution. Domain Setup .Install software & configure domain Decide the Tibco Infrastructure requirements i. scalable and extensible.1 Objective email@example.com Methodology TIB-BW integration project is developed in phases.http://architecture-soa-bpm-eai. which best suits for integration using BW as Integration tool.Configure adapters Standards & Guidelines for TIBCO Business Works Page 4 of 24 . Guidelines and methodology for implementing TIBCO BW related projects. Oracle. and the ease-ness of use. Methodology focuses on the aspects of a nature of a project where a project is in development or in migration phase following a short development cycle. Evaluate the Hardware and Software need to be used at different Phases of Integration. defining the problem statement.net. and easy to use event driven integration platform that allows developing Enterprise Application Integration (EAI) projects. BAM Solutions etc) and use these Product Features to Integrate systems which are decentralized or exists in different platforms . Messaging Solution.e. The required Interfaces and the associated end-point data elements are recorded. and analysis of the existing problem.com. Complex Event Processing Solutions. JDE or a business covering B2B. extensible. Some portion may be relevant and some may be irrelevant.Define & analyze problem Detailed problem analysis. Fig : Typical Domain Decide a Software-Hardware map where the software component(s) and machine(s) to be deployed on the machine is determined and the features such as load balancing and fail over and backing up strategies are well defined. TIBCO BusinessWorks also works with TIBCO Administrator. Defining the administration Domain setup and Planning of the Management of the Domain (defining a access control list . which involve clearly identification.com/ Tushar Jain 1 Introduction 1. the software. The document helps in defining the BW Project specific guidelines and can be used by the team of people mostly Architects. Developers who implements a BW Project and also helps in customer architecture and production readiness reviews. TIBCO BusinessWorks includes a graphical user interface (GUI) for designing business processes and an engine that executes the process.2 Tibco BW Concepts TIBCO BusinessWorks (TIB-BW) scalable. 1.blogspot.ACL) are the essential activities. the common universal Interfaces to be built in. a web-based GUI for monitoring and managing run-time components. tusjain@gmail. It is been observed that the sequential execution of these phases in results in a fast deployment Analysis . The current flavor TIB-BW design also supports BPEL standards of Design. Monitoring and Management solution.
Checkpoint/Reliable defining Checkpoints or Configuring a Reliable mode of Process usually takes more time to process as the time slot is allocated to refreshing a cache or a file system Logging Extensive logging does take more time to processing because of Unavailability of File descriptors at time of need and causing a delay.1. batch. Deployment . TIB-BW has capability to design and configure the required business process and have a dry run (a designing time test ) using its Test Mode environment.e. firstname.lastname@example.org/ Tushar Jain tusjain@yahoo. request – reply or request – response behavior.1 Main TIBCO Business Works Performance Considerations Connections Opening and Closing of Connections Retrying of failed/suspended processes.http://architecture-soa-bpm-eai. Connections. The processes and the inter process communication is well defined and can be validated for design time errors using the BW Designer.blogspot.com The different Nature of the Services exist in Tibco BW environment and configuring these services plays a key role. decision of the nature of work (automated.1 Engine Processing The Business works Process Execution always depend on the State of the Process. The More GVs used the more memory a process consumes. which is available as a service implementing a Adapter behavior. The post-deployed process is visible and manageable using the TIB-Administration Domain. Number of process need a primary attention Complexity of Data Validation and Transformation Complexity in XPath defined transition Event Source (Starter Processes) usually resource hungry 2. the data structures. Production .x Performance Architecture 2. Network Specific Filter: Using multicasting provides a lowest level filtering of traffic Transport Specific Filter – At Messaging Layer (RV: Subject Based Filter. publish-subscribe behavior. If (wait or suspend) state of flow. LB Process Specific (Short Living Master—Content Based Filter—Condition—Child Process (One can also aggregate from multiple sources) Use flow control provided by deployment. TIB. Job recovery Number of Process configuring a service to run in a single thread or multi thread mode and hence directly impacting the memory usage. the end points of the business process. JVM The Memory allocated to the JVM should be optimistic. The post-deploy run-time environment always checks for the newly defined configurations. HW Sizing of the Hardware based on the TPCC of the Hardware Processor Deciding on the number of Configurable Runtime variables. If this is unacceptable Need to build semaphore logic in java code Max Jobs and Activation Limit Memory. The BW Project defines the activity. The configurations need to be re-adjusted with the state of deployment i. sub-activity associated and the transitions involved.Manage & monitor deployments User Management can be achieved by defining a ACL (Access Control List) where by the TIB Administration domain can be obeying a Security (Authorization and Authentication) policy. CPU. web services (SOA) can well be accessed within the TIB-BW environment for integration. the business process execution paths. which can be Enterprise Archive or a Adapter Archive and are created using the TIB-BW designer interface.com. testing. Standards & Guidelines for TIBCO Business Works Page 5 of 24 . production etc. A User with a given role does controls / manages the Deployed Processes and the properties.Deploy to runtime engine The Project Archives contains the processes. Process Design . The Deployed processes can also be monitored and traced using the runtime logging. The process Times out and renders to Error when talking with a third party non-responsive Application. JMS: Topic Based) Process Engine Specific Filter – At Process Management Level (RVFT and RVCMQ) Transport based FT. It has limitations. acceptance. manual etc) is recorded involved are been finalized. The business process. 2 TIBCO Businesses Works 5. CPU and DISK Usage.Administration domain can be monitored for the products and run time availability. the memory available to JVM (heap size) to executes Process. Threads. They are considered to be part of the count. the buffer associated with the state.Implement & test business processes The artifacts.
1. The CPU cycle is allocated to each thread. It also frees space for another process to enter the process pool. the process executes 20 steps and goes back to dispatch queue leading to a thread switch allotting the thread to the next available job. The BW Deployment configuration should be well adjusted with the parameters Max Jobs(in memory). tusjain@gmail. Flow Limit (max jobs in memory and paged) using the TIBAdministration at deployment. Activations Limit. Activations Limit helps in reducing paging out.5 Paging Waiting Jobs Flow control enables the waited process to be placed into the paged process pool.com. a load test with verity of services viz. Thread Count are adjusted to achieve the optimal memory usage. If the task that waits for an event is a Signal In or Sleep task.com/ Tushar Jain email@example.com://architecture-soa-bpm-eai.1 TIBCO Business Works Engine Tuning Guidelines Standards & Guidelines for TIBCO Business Works Page 6 of 24 . JMS publisher/subscriber. MaxJobs and FlowLimit are two attributes to control flow in to TIBCO BusinessWorks process where JVM parameters are useful to control TIBCO BusinessWorks Engine memory. Thread Count. This parameter is specified in the Job Starters. file. MaxJobs. Maximum Heap Size (MB) . the JVM size.com The number of threads spawned behaves as a unique instance of the process. So the CPU sizing is always a must. MaxJobs. 2. To improve on processing the jobs are paged/buffered using the flowlimit or the activation limit for that process. Java Thread Stack Size (KB).3 Flow Control Mostly the deployed archives always have a number starter process configured either with Adapter. or the Maxjobs Limit is exceeded or Activation Limit is disabled. Piling of jobs cause the paging out of the system(database. For example. Parameters such as Initial Heap Size (MB). Process can either be staying in a ready state or at a Dispatched state or at a wait/blocked state. normal sequential can be carried on the specified System with the given HEAP size i. By enabling paging. request -reply. In this scenario if the steps are executed and the thread is not released then the process goes to a blocked state reaching a incomplete state of the process and this does not allow the next job to page in. Setting MaxJobs to more than one and Activation Limit enabled(gives priority to new jobs) will limit n-jobs to be processed as a batch at one time.1. To reach a correct figure on the number of services. 2. system allows the number of active and waiting jobs to be greater than the MaxJobs/FlowControl setting. The FlowLimit property limits the number of jobs created. HTTP/SOAP. and the process automatically re-enters the process pool and becomes a ready process.e.4 Paging Jobs Existing Jobs get paged out when the job is blocked. It is useful for situations where resources downstream for concurrent processing are limited. adapter. 2. Once a Job is submitted to a thread. The rate at which the process gets completed depends on the number of threads and the max job configured for this. Restricting the flow of incoming events is necessary to avoid memory overflow when processing lags behind.2 Determining the Available Memory The size of Memory and the number Processes it can handle at a specified time is part of a tuning activity. Each instance consumes a processor slot and comparable to a tiny CPU. 2. Setting FlowLimit. Paged jobs returned to the Dispatch Queue provided the job is unblocked and the MaxJobs limit is not exceeded Some other paged in job is blocked and can be paged out to make room. The Job pool hold the jobs in queue and process in sequence.1. a Rendezvous message arrives for the Signal In task. 2. memory) which can be adjusted using parameters such as FlowLimit. 3 Best Practices 3. the process paging feature is used to write the process to disk and allowing a new job to run using the thread. when the event occurs.6 Enabling Paging The Activation Limit setting is used in the deployment configuration to control process paging. New job can be paged when MaxJobs limit is exceeded and Activation Limit is enabled or All paged-in jobs are unblocked.blogspot.1.
StepCount This TIBCO BusinessWorks property controls the max number of execution steps (unless inside a transaction) for a job before an engine thread switch occurs. a variable that reads in a very big XML file. the number of worker threads controls how many jobs can run simultaneously. In the event of a failure. Normaly MaxJobs as 0 and FlowLimit as 0 which allows process engine to create an unbounded number of services and eliminates the overhead of paging. Standards & Guidelines for TIBCO Business Works Page 7 of 24 . The engines send heartbeats to notify each other they are operating normally. Can be determined from a stress/load test.blogspot. One engine is configured as the master. for example. and necessary tuning parameters. firstname.lastname@example.org://architecture-soa-bpm-eai. It is always advised that the rate at which event source acts should be followed with a same rate where the event sink should process. thus improving the performance of processes with large amounts of data.com Allocate significant time for selecting the JVM vendor. A third party software integrated with the BW process tries to consume memory to store its state leading to unavailability of memory to the process and if the process is not optimized to handle this scenario causes a choke or in-stability.4 Fault Tolerance and Load Balancing The TIBCO BusinessWorks process engine can be configured to be fault-tolerant. Number of process instances per engine .com. Do a load test/stress test List out how many jobs and the type of jobs that can be accommodated in the given JVM MaxJobs and FlowLimit configuration for a process engine depends on the Amount of memory reserved for the engine JVM.3 Tuning Engine Parameter: Engine. Parameter: EnableMemorySavingMode=True Turning this parameter on makes engine to release references to unused process data so that it can be garbage collected by the JVM. and it creates and executes services. version. under the Server Settings tab. The second engine is a secondary engine. Processes with heavy nesting/hierarchy calling sub-process should be refined or partitioned to simple modules to avoid a run time overhead. other engines restart process starters and the corresponding services. General section. In this scenario. This feature is very useful in the scenario where a large amount of memory is occupied by a variable defined in a process. 3. One can start up several engines. The exception gets reported to Hawk monitor if available and configured in the infrastructure. There are two ways to take benefit of CPU utilization: Optimize engine thread or Increase number of TIBCO BusinessWorks Engines on a single node or distribute on different nodes based on a optimal configuration Typical numbers of worker threads range between 8 and 32. or sequencing or configuring a flow control.1.1 Calculating MaxJobs or Flow Limit MaxJobs and FlowLimit are two attributes to control flow in to TIBCO BusinessWorks process where JVM parameters are useful to control TIBCO BusinessWorks Engine memory. The default value is 20.2 Memory Management Issues and tracing Memory related issues some times occur other than the JVM. Specifying too low a value can cause lower engine throughput even though spare CPU resources exist. and it stands by in case of failure of the master. 3.1. Increase in thread count definitely consumes more resource leading to degrade in performance. it is best to release memory right after process instance completes. The number of threads that an engine will allocate is set in the TIBCO Administrator Edit Service Instance dialog box.1. If the rate of incoming processes exceeds the number of threads available to run them then alternate approach would be to control the process using either a delay.1. thereby preventing frequent thread switches (which can slow down the engine) in processes with a large number of steps.com/ Tushar Jain tusjain@yahoo. 3. so a proper thread sizing need to be done. Each engine process on a separate Java thread. Maximum size of a process instance object. Throughput can be increased by Measuring the available CPU and memory resources. Specifying too high a value can cause CPU thrashing behavior. 3.
com Normal operation: master processing while secondary stands by In the event the master process engine fails. The weight determines the type of relationship between the Fault -tolerant engines.com. such as the heartbeat interval and the weight of each group member. The group can be configured with several advanced configuration options. A master and its secondary engines is known as a fault--tolerant group. when the machine containing the currently active process engine fails. Additional hardware or software required to redirect the incoming events to the appropriate place in the event of a failure. The Fault-tolerant tab of the Process Engine deployment resource allows to specify the member weight of each member of a Fault -tolerant group. One can also select Custom to specify oner own values for the weight of each member of the group. the new machine is now listening for HTTP requests on the specified port. Each process starter has different configuration requirements. the secondary engine shuts down and the master takes over processing again. Process Starters and Fault -tolerant When a master process engine fails. If the engines are configured as master and secondary. One can select Primary/Secondary to configure the engines as master and secondary. the secondary engine resumes processing when the master fails. This may not be possible with all process starters. they all have the same weight). the HTTP Receiver process starter listens for HTTP requests on a specified port on the machine where the process engine resides. Once the master recovers. One can select "Peer" in the first field on the tab to configure all engines as peers (that is. another peer process engine resumes processing for the first engine. Standards & Guidelines for TIBCO Business Works Page 8 of 24 . For example. Peer or Master and Secondary Relationships Members of a Fault -tolerant group can be configured as peers or as master and secondary engines. There can have multiple secondary engineswith a specified weight for each engine. If a secondary engine resumes operation for a master engine. The member with the highest weight is the master.com/ Tushar Jain tusjain@yahoo. and continues processing until its machine fails. the secondary engine detects the stop in the master’s heartbeat and resumes operation in place of the master. and services are restarted to the state of their last checkpoint. HTTP requests always specify the machine name. If all engines are peers. The secondary engine continues processing until the master recovers. so incoming HTTP requests will not automatically be redirected to the new machine. tusjain@gmail. its process starters are restarted on the secondary engine. and not all process starters may gracefully resume on a different machine.blogspot. All process starters are restarted on the secondary.http://architecture-soa-bpm-eai. Fault -tolerant failover Scenario The expected deployment is for master and secondary engines to reside on separate machines.
depending upon how the engine’s Max Jobs and Activation Limit properties are set when the engine is deployed. it will first go to Standby mode as it checks the status of the other engines. If only primary gets started . process instances are not restarted. it shouldbe ensured that one engine does not attempt to accept and confirm a large number of incoming messages before other engines can receive the messages. the appropriate secondary engine starts automatically. However. It is advisable to load the process definitions that can gracefully migrate to a new server during a failure.2 JVM Tuning Guidelines Each TIBCO BusinessWorks engine runs as a multi-threaded Java server application. as Starting Up). When balancing incoming messages across TIBCO BusinessWorks engines. most JMS servers balance the load by distributing messages in a roundrobin fashion to all queue receivers. any JDBC activities will not be able to execute. TIBCO recommends that TIBCO Standards & Guidelines for TIBCO Business Works Page 9 of 24 . If that server goes down. 3.blogspot. tusjain@gmail. and then the secondary engines can recover process instances up to their last checkpoint. Any change in the status of a component that has been deployed as part of a FT group. In TIBCO BusinessWorks. Processes and other objects used internally by TIBCO BusinessWorks are Java objects that consume memory while the engine is running. Once a process engine reaches the maximum number of sessions. When process engines are started at different times. Once the message is acknowledged. set the Acknowledge Mode field to "Client". Load-Balancing of Incoming Messages One common application of a JMS queue is to distribute queue messages across multiple receivers. After deployed the process engines. both the JMS server and TIBCO BusinessWorks must be properly configured. For example.http://architecture-soa-bpm-eai. there by it balances the processing of the messages on the queue. the session is released and the process engine can accept a new message. One can specify that secondary process engine loads different process definitions than the master. Because Fault -tolerant engines are expected to be on separate machines. can avoid this problem by setting the acknowledge mode to TIBCO EMS Explicit and then use the Flow Limit property in the deployment configuration to control the number of process instances created by the process starter. Therefore. It is possible to start one or more process engines in the group. the exclusive property on the queue controls whether messages can be delivered across receivers or not. the display includes the information about the group. it may not be possible to load process definitions that use JDBC activities in oner secondary process engine. This allows to specify the same JDBC Connection resource for the master and secondary engines. and therefore all engines can share the information stored for process instance checkpoints. It then changes to Running. For example. in TIBCO Enterprise Message Service. In general.com. The Fault –tolerant mode of running of the process can be configured in the administrator. TIBCO Enterprise Messaging Service. After the primary and secondary engines have communicated. it is most efficient to select all process engines and start these together. only one is displayed as Running and all other engines are displayed as Standing By (or.com Sometimes servers may not have all of the necessary software for restarting all of instances. If not using TIBCO Enterprise Messaging Service. To achieve this goal. The JMS server must allow the queue messages to be distributed across multiple receivers. If the Acknowledge Mode field is set to "Auto" on the Configuration tab of the JMS Queue Receiver. Java provides some useful parameters for tuning memory usage. database may reside on the same machine as the master process engine. the process definition containing the JMS Queue Receiver must be deployed across multiple process engines. the status change affects all other members of the group. initially. If more than one engine has started. Upon shutdown of a process engine. If the domain includes components that were deployed as part of a fault-tolerant group. another process engine can begin to accept incoming messages. the master will display as Running and all other engines as Standby. this can lead to one process engine receiving all queue messages and paging them to disk. If engines do not share the checkpoint information. If all engines share the checkpoint information. the process starter confirms messages as it receives them. it is advisable to use a database for storage for each process engine.com/ Tushar Jain tusjain@yahoo. there are situations that can cause an uneven distribution of messages across queue receivers. In this mode. Setting Fault Tolerant Options The FT Group Settings panel displays only if the TIBCO BusinessWorks process has been added to at least two (different) machines. a process engine can only receive as many messages as it has sessions specified in the Max Sessions field. This creates multiple queue receivers for the same queue. A process engine cannot receive more messages until the messages have been acknowledged by using the Confirm activity and can be considered as a draw back.
This memory is committed for engine activities and job processing. XML over JMS. for medium 512MB. JVM internally handles GC with its inbuilt algorithm. 3. Experimenting with processor sets with multiple engines is a good idea. the process pool can contain up to the MaxJobs value. Maximum heap size per engine can be configured and saved using the Tibco Administartor TIBCO Runtime Agent™ allows to modify the Java heap size. The total amount of JVM memory needed to operate a TIBCO BusinessWorks Engine should be the memory for each process plus the maximum number of processes that can be in the process pool. the throughput increased.com BusinessWorks customers consider various factors when selecting a JVM. and SOAP servers: • As the payload increased from 1KB to 5KB.1 Specifying JVM Heap Size The default Java heap size. Recommended heap size for a small workload is 256MB. 3. is a conservative estimate made by the developers of the particular type of Java being used. one should determine the largest heap size that can reside in physical memory. and JVM settings that the TIBCO BusinessWorks Engine uses when it is started. •Heap size mostly depends on the memory available. the most relevant tuning parameters are: • JVM heap size • Server VM vs. 3. the throughput dropped. If flow control is enabled. JVM selection. HTTP servers. since there is an overhead cost of creating and parsing the SOAP envelope.3 TIBCO Business Works Transport and Palette Guidelines Choose a appropriate Transport which adheres to interoperability. which is available in Jdk. 3.blogspot. • As the number of HTTP/SOAP client requests increased (concurrent requests). Choice of using XML over HTTP.com. TIBCO Software recommends that one assign processor affinity with different instances of TIBCO BusinessWorks Engines: • On Windows. SOAP over JMS. Besides JVM version and vendor. paging to disk should be avoided. message size. use the following parameters: • The Initial JVM Size parameter sets the minimum amount of memory used • Maximum JVM Size sets the maximum.x. create processor set using psrset/psradm/pbind. and perm). and security requirements. Standards & Guidelines for TIBCO Business Works Page 10 of 24 . SOAP clients. tusjain@gmail. • Consider using the multi-threaded garbage collector. tenured. Sun also claims better performance for Hotspot Server JVM. To calculate the amount of memory needed for a TIBCO BusinessWorks Engine. It is observed that SOAP over HTTP is performs better than SOAP over JMS.com/ Tushar Jain tusjain@yahoo. SOAP over HTTP. For best engine performance. use the Task Manager facility to assign affinity. which varies according to platform.http://architecture-soa-bpm-eai. • There was no significant increase in the latency when the payload increased from 1KB to 5KB. reliability. • On a Solaris platform.2.4. TIBCO Rendezvous messages and TIBCO Active Enterprise™ messages are a few combinations based on the requirement and infrastructure. • On Linux.3 JVM Garbage Collection The recommendation is not to do a make direct explicit garbage collection.2. The following observations can be made based on various comparisons of HTTP clients.2. Client VM based setting • Garbage collection settings • Hotspot Server JVM will give better performance with TIBCO BusinessWorks. and longevity (oneng. To set the JVM available memory. The SOAP protocol adds significant overhead whether one use it on HTTP or JMS. and for large workload 1GB or more.2 Setting JVM and Processor Affinity If machine is equipped with multiple processor machines. However tuning garbage collection requires good understanding of garbage collection frequency. use the taskset command to set processor affinity.
Usually. this feature should be used only after fully understanding implications of using this feature. CPU time is saved in routers and hosts (clients. non-persistent connections Persistent HTTP connections have a number of advantages: • By opening and closing fewer TCP connections. or caches). The value of this property controls the size of the thread pool.blogspot. In TIBCO BusinessWorks has the ability that checks for stale connections (see property bw. it can improve performance because instead of creating and destroying a connection for each job. • Network congestion is reduced by reducing the number of packets caused by TCP opens.com/ Tushar Jain tusjain@yahoo. and memory used for TCP protocol control blocks can be saved in hosts. If one set the value too high. gateways. Optimal thread pool count can be determined with a test and monitoring the test behavior. If persistent connections are chosen.http. In TIBCO BusinessWorks 5. The cost of the HTTP connection is deemed important. Decision to use persistent vs. Best Practices for using persistent connections are as follows: • Tthe client should check the connections before using them. be careful to set the value of this property to a reasonable number for oner system.plugin. the connections that are persisted may become stale. proxies. the Send HTTP Request-Reply and SOAP/HTTP RequestReply activities can now share connections.plugin. When the underlying HTTP Standards & Guidelines for TIBCO Business Works Page 11 of 24 .client.http://architecture-soa-bpm-eai. bw. these issues occur when the client is not configured to check for stale connections.3. the underlying HTTP client application may fail. Each Request/Response activity that uses the HTTP protocol (for example.1 HTTP/S There are two important tuning considerations related to the HTTP client: • HTTP/S Client Thread Pool • Persistent Connection Manager (PCM) HTTP/S Client Thread Pool Thumb rule is to have the process tuned such that the HTTP Server and HTTP Client should run with the same bit. The default value of this property is 10. When attempting to use a stale connection. Send HTTP Request or SOAP Request Reply) is associated with a unique thread pool. HTTP (SOAP/HTTP) request-reply activity configuration is enhanced to allow users to setup a pool of persistent HTTP connections with the server. • HTTP can evolve more gracefully.ResponseThreadPool Persistent Connection Manager By default HTTP provides non-persistent connections.com. and by allowing TCP sufficient time to determine the congestion state of the network. The rate at which a request is produced by client follows with the same rate at which the request gets consumed by server. 3.2. Persistent Connections Pool (PCP) is a new important feature when the client makes a call to the same server very frequently. The number of threads in the pool determines the maximum number of concurrent requests a request/response activity can execute. • The HTTP server may end up receiving duplicate requests from the same client. a pool of reusable shared persistent connections will be maintained. since errors can be reported without the penalty of closing the TCP connection. it may result in extra resources being allocated that are never used. and state management of the connection is very well understood. However. belonging to the thread pool associated with the activity. Each request is executed in a separate thread.client. • Latency on subsequent requests is reduced since there is no time spent in TCP's connection opening handshake. The thread pool is created when the engine starts: therefore. the CPU utilization increased. tunnels. throwing an exception that may be propagated to the business process layer. For different reasons.checkForStaleConnections). The most important disadvantages of using persistent connections are: • The HTTP (SOAP/HTTP) client may report exceptions that are not usually reported when using non-persistent connections.http. servers. email@example.com • As the number of HTTP/SOAP client requests increased.
or Reactivity helps in determining the content.blogspot. when a stale connection is not an issue. Alternatives are available. and the only way to load balance SOAP over HTTP is to include a Local Director for directing requests to a set of configured engines. • Use persistent connections when making repeated connection to the same endpoint.3. Flow Control in HTTP HTTP Properties such as FlowLimit. • Within TIBCO BusinessWorks 5. • Open and close fewer TCP connections to save CPU time.1.3 and prior versions. and when the server handles or supports duplicate messages.http. note that this adds overhead and that overall request/response throughput may drop.server.minProcessors etc are tuned to have control on the process flow leading to a good result.com/ Tushar Jain tusjain@yahoo. throwing an exception.com. it closes it and gets another connection from the pool.plugin.http://architecture-soa-bpm-eai. 3. Details about configuring Persistent Connection Manager are described in the section “Configuring Persistent Connections. such as creating reverse proxy solution. New for this release is the combination of TIBCO Enterprise Message Service features Explicit Acknowledge and FlowLimit. since the HTTP port is bound to a specific machine. Sarvega (now in INTEL).maxProcessors. making the use of a non-persistent connection a better choice. However. 3. the client fails. This is straightforward and the impact is easily measured.2 SOAP Simple Object Access Protocol (SOAP) is a lightweight protocol for the exchange of information between web services. bw. significant improvements have been made to this mechanism. • HTTP traffic that arrives from external sources should be evaluated carefully. the next option is to make sure the server provides support for duplicate message detection. The more complex the process the greater impact on the parsing (packing and unpacking) of the message as it travels through various stages of the SOAP protocol. since it causes the overall performance to drop significantly. location of ack in process makes no difference. Currently. If one cannot rely on the client to detect the stale connection. In this case. bw. Use of content aware XML accelerators or routers such as Cisco® Application-Oriented Networking (AON). • Load Balanced.2. • HTTP servers can be deployed in various load-balanced situations.com application detects a stale connection. The performance characteristics of SOAP are closely tied to the performance of the HTTP and JMS implementation in TIBCO BusinessWorks. JMS doesn’t deliver more messages until some of the sessions have been acknowledged.server. Standards & Guidelines for TIBCO Business Works Page 12 of 24 .3. • When using HTTP over SSL. However. firstname.lastname@example.org. it is very likely that the server would receive duplicate messages. The use of a local director to distribute incoming requests. • Secured.” HTTP/SOAP Server Following important considerations apply to HTTP and SOAP over HTTP server: • Configure minProcessor & maxProcessor as described in the configuration section. The decision to use basic authentication will affect performance. but they are beyond the scope of this document.plugin. deploying multiple HTTP servers that listen on the same machine is not possible.3 JMS Recommendations for using Java Message Service (JMS) are as follows: • Within TIBCO BusinessWorks 5. Major influences of performance for SOAP are similar to the generic influences: • Message Complexity. transport such as JMS can be throttled by limiting the number of sessions. When the client cannot check for stale connections. After three unsuccessful attempts to get a non-stale connection. the supported transports for SOAP are HTTP and JMS. this option should be used with caution.
com. Use Batching instead of Statement when possible (Better Latency) A general rule of thumb is to initially set the maximum number of database connections to slightly less than engine thread count.4 FTP FTP activities that share the same host. Keeping the session open for all activities can improve performance because there is significant overhead creating a session for each activity. which will have to hold messages for a longer period of time. some jobs may be blocked waiting to free a connection. • Using JMS Queue Sender and the Wait For JMS Queue message instead of the combined JMS Queue Requestor activity may improve throughput. • Acknowledge (confirm) messages as soon as possible to improve throughput. • The best way to increase performance beyond the capability of a single engine is to distribute the load over multiple engines using a load-balanced transport such as JMS Queue or TIBCO Rendezvous CMQ transport to distribute the work. JDBC Update activity has been enhanced to allow multiple statements to be executed. tusjain@gmail. • With TIBCO Enterprise Message Service Explicit Ack. • If possible. and specific DB tools to monitor the overall number of database sessions. 3.3. In most cases.3. If there are not enough database connections allocated. described in this paper. One should continue to monitor the number of database connections using database tools. • TIBCO BusinessWorks allows one to configure multiple sessions to receive messages faster. • Simple and Text JMS message types have the lowest processing overhead. and to set number of sessions higher than the number of engine threads. the JMS session cannot receive a new message until the current one is acknowledged. This means one will slow down the rate at which TIBCO BusinessWorks pulls messages from the JMS server. 3. External mechanisms exist to allow HTTP to be used for this purpose also. username. • Procedure Over-riding is not allowed • Define a time-out when execute a Block of SQL code 3. and provides more even load distribution across multiple engines. • To design a long running process to fetch a message and process it. one will block that session.http://architecture-soa-bpm-eai. high performance JDBC drivers or the recommended drivers available at BW.6 Transactional Activities Avoid Development Misuses • Inefficient queries – sending SQL data that asks the database to do more work than necessary. 3.3. a single session is used to receive all messages. • Large data sets – processing large sets of data in ResultsSets. The Quit (post-command) field specifies that the command should close the session. and password within the same process definition can now share the same session.blogspot.com/ Tushar Jain tusjain@yahoo. • must use a hardware/software load balancer to improve HTTP performance and load distribution. This mode allows for more efficient resource utilization. • By holding Client ack to the end of the process. A test can be done in-order to determine the Driver type giving a positive response.com • When using Client Ack. for example. choose NON_PERSISTENT as the delivery mode in replying to a JMS message. use Get JMS Queue message activity in a loop instead of Wait For JMS Queue message. port.5 JDBC JDBC activity most frequently used data access activity that has a significant performance implication. The JDBC Query activity can now fetch batches of records at a time instead of retrieving the entire result set. • Excessive querying – efficient queries called too frequently.3. There are a few tools that one should be familiar with: TIBCO trace tool. a JMS starter will be sufficient in this scenario. tables without indexes. It is recommended to use certified.7 General Activities Standards & Guidelines for TIBCO Business Works Page 13 of 24 .
blogspot.1 Data and Caching Data could be Static. TIBCO BusinessWorks hangs on to it in memory. SemiStatic. the field Local Only in Notify Configuration for more information. cache carefully. 3. Unused variables can increase the latencies. Keeping this obvious cost in mind.com/ Tushar Jain 3. If the unwanted GV are there the cost is incurred in traversing. Rule of thumb is not to use many Global variables(GV) as it stays in memory in form of a tree and to retrieve the bind-ed value process has to traverse the tree.com. and lazily check for updates.4. In most cases reference is made to original entity. The Java Global Instance shared configuration resource allows one to specify a Java object that can be shared across all process instances in JVM. Shared at process run time.4. These applications frequently need faster access to checkpoint data. 3.4. Example: XML Documents (Name Value Pair) Dynamic data • Work on local data. Although the cache has the MFU (Most Frequently Used) to LFU (Least Frequently Used) list of GV for its use. • Shared Java object (example : a shared variable which allowing to implement a wait and gain nature of inter process communication) should be instantiated at engine startup time and shared by all activities that access it. Dynamic. replication of checkpoint data between different systems for failover reason. the designer should always be mindful of use of CP and continuously evaluate cost vs. Standards & Guidelines for TIBCO Business Works Page 14 of 24 . One example is global variables implemented internally as the XML structure known as $_globalVariables. and database server-failure protection. Near static data • Keep a local copy. It provides a data caching option which simply removes any performance overhead of looking up data from the database. See TIBCO BusinessWorks Palette Reference. Local Only Field The Notify Configuration has been enhanced with a Local Only field to allow an in-memory notification when the Wait and Notify activities are performed on the same machine.4 Process and Activity Design Guidelines tusjain@yahoo. whenever data is mapped a copy of data is created. however. and use optimistic locking.2 Checkpoints The high volume applications which make a significant use of checkpoint have to be continuously aware of the performance cost of writing data to the checkpoints. It is ineffective because the signal-in’s internal queue is unbounded for out-of-band events waiting to be matched up with a job key. • TIBCO® BusinessWorks Smart Mapper is another example which has been used extensively in cross-referencing (1-1 or 1-n) data.3 Grouping Activities Signal-In and Group Do NOT use Signal-in within a loop group to receive/process one message at a time.com 3. hang on to it in memory. • TimesTen is an in-memory database that can improve the performance of checkpoints and wait/notify activities. tusjain@gmail. • If an object can be shared across multiple process instances. Static data These data are typically kept as a local copy. especially for repeat-until-true where iterator conditions XPATH formula contains Global Variables instead of constants.http://architecture-soa-bpm-eai. input data including process instance data are bounded to the subprocess input data structure. CP modularization. Chapter “General Activities Palette. instantiate shared data only once to improve performance and reduce overhead. Call Process Every time CP is called.
Set breakpoints in the process definition at points where one wish to stop a running process and examine its state. Define Break points at design time and Test. modularization • CP should be frequently reusable sub-processes with reasonable complexity • Use shared process variables to avoid data copying cost in CP • Review use of large strings that requires manipulation • Evaluate need for passing large strings especially between CPs • Any changes within CPs will create a new copy • Parse structure upfront • Keep string reference out • FTP • Use session caching • Wait for Notify • Do NOT use Wait for Notify within a loop group to receive/process one message at a time. Standards & Guidelines for TIBCO Business Works Page 15 of 24 .e. so one may want to use a development system for testing purposes. The integration time test should be certified with minimal activity oriented logging. This is not possible in a production environment. Write a custom micro agent to monitor specific scenarios. Use of Custom Activity. Once in testing mode.com • Consider using “Spawn” CP for heavy asynchronous process (such as logging).5 Tracing in BW Tracing activity needed in order to manage and monitor a deployment.com/ Tushar Jain • Call Process (CP) tusjain@yahoo. 3. 3. system log and application log. See Process Instances During testing for more information about process instances in the test panel.com. followed with capture of the test proofs. • Notify Configuration (Local Only) • Use Local Only field in Notify Configuration. If the process begins with a Start activity and the Start activity has a schema defined. Use the toolbar buttons (Pause testing.4. Start and stop process engines and adapters. testing usually involves setting breakpoints in the process model to stop the running process instances at desired points. Click the Tester tab on the left of the project panel. and can collect tracing information for later analysis. The project panel becomes the test panel. In general. From the test panel one can start process instances or load more process definitions. configuring a hawk micro agent on the logs. changes to oner process definitions are not reflected in the running process instances.4 Testing BW Process Definitions Each process has to be unit tested against a use case. Examine the data of the process by selecting any of the activities in the process. Also. View the status of components and generate tracing information. TIBCO Administrator GUI allows monitoring of the running project at different levels of detail.blogspot. • It is ineffective because the Wait for Notify’s internal queue is unbounded for out-of-band events waiting to be matched up with a job key. and the currently executing activity is highlighted as the process instance runs. testing should be done during the design and development phase of a project. TIBCO BusinessWorks provides a testing environment for stepping through oner process models and determining the sources of errors. This will not decrease response time (not CPU usage) • Be aware of tradeoff between data binding cost vs. The engine starts process instances based on the process definitions stored in oner project. testing a deployed project is possible. Testing a process definition typically involves these steps: Select the process definition one wish to test in the project panel. One can select one of the running process instances to display in the design panel. Use of Logging i.http://architecture-soa-bpm-eai. Step to Next Activity. Return to design mode before changing process definitions. The current state of the process data is displayed on the Process Data tab of each activity. tusjain@gmail. and so on) in the test panel to either continue through the process instance or to stop the current process instance. Entering the testing environment starts a TIBCO BusinessWorks engine. one can supply input data to the process before executing it. but might be difficult depending upon the volume of the workload of the system. Allow an in-memory notification when the Wait and Notify activities are performed on the same machine.4.
This influences the rate the process starter is able to receive the JMS Message. Payload and Schema Guidelines There is no specific guide line but the criteria such as Size of Message or payload size becomes a performance factor. tusjain@gmail. consider using file reference • If oner scenario includes a large memory space occupied by a variable defined in the process. which has an adverse affect on the incoming rate.com For the example discussed in this manual.5 Message.com/ Tushar Jain tusjain@yahoo. Comparing Performance of Different Data Types Message Type Simple Performance Rating Very High Comments Without a body portion there is no extra parsing required. Users can access TIBCO Administrator using the TIBCO Administrator GUI. 3. but one should certainly experiment with different options especially in the high throughput environment: Table 1. No parsing needed. data from a PeopleSoft Order Management System via the appropriate adapter. the process engine could perform these tasks: Receive data from an application server via JMS.5. This is by far the best performing message type. Specify tracing information if desired. which also provides security and repository management. such as tracing to a network sink. TIBCO Designer allows one to specify simple tracing to a file or standard out using the configuration panel directly. A set of name-value pairs that can be accessed sequentially or by name.blogspot. such as activity#1 (a variable that reads in a very big XML file). keep message size as small as possible • If one are using binary or large document. Send certain orders out for credit approval and receive approval or refusal. plan to release memory right after the process instance completes: Enable MemorySavingMode=True This parameter significantly improves memory footprint for processes that manipulate a large amount of data for a small part of their lifetime. Use these as a general rules.com. • Keep XML Structure and schema complexity as simple as possible • Review use of large string that requires manipulation • Any changes within CPs will create a new copy • Parse structure upfront • Keep string references out • Avoid or re-architect XML schema with XML elements that contain nested elements of nested elements. It requires a level of parsing in the incoming activity. One can also specify advanced tracing. Enter data into a PeopleSoft Order Management system and data into a Siebel customer service system via the appropriate adapters. All components are monitored and managed by way of TIBCO Administrator. The general guidelines are as follows: • Be aware of performance cost of message. Text Bytes High High Map Medium Standards & Guidelines for TIBCO Business Works Page 16 of 24 . thus improving the performance of processes with large amounts of data.http://architecture-soa-bpm-eai.1 Data Representation Guidelines for Tibco Rv and JMS While using JMS as a transport for TIBCO BusinessWorks. Treated as single text field. and data from a shipping service via SOAP. Bytes require parsing downstream in the process. This TIBCO BusinessWorks property allows the engine to release references to unused process data so that it can be garbage collected by the JVM. 3. Many Open Applications Group Business Object Documents (OAG BODs) have these issues. the following matrix should be considered as very high-level performance guidelines.
This has two effects on performance: • Memory Large parsed objects can consume considerable memory very quickly.com. The object is deserialized in the process starter. Proper understanding of mapper and code optimization may be necessary for the best performance. Mapper on other hand dynamically loads definitions and evaluates at input document and mapping rules at the runtime. it is important to keep in mind that improper use of drag-and-drop may end up creating inefficient XSLT. This is due to the increased lookup time as the data “tree” is traversed from the start Standards & Guidelines for TIBCO Business Works Page 17 of 24 . which will be parsed by the process starter.6 Processing Large Sets of Data Common uses of a TIBCO BusinessWorks process are to retrieve a large set of data (for example. De-serializing requires significant CPU and memory resources. performance will degrade in a non-linear (quadratic) fashion as the number of records grows. When XML Text format has been chosen. • Don’t let the same expression get evaluated many times (especially if the data is large).http://architecture-soa-bpm-eai. users should pay attention to following guidelines: • Use Mapper (startup time parse) instead of Transform XML activity wherever possible for better performance. TIBCO Rendezvous will use the internal TIBRVMSG_XML type and compress the message on the wire.blogspot.0 features (such as for-eachgroup). However. • Note that large data sets (1000s of records) take time to traverse. Be aware that the Transform XML activity invokes XSL parser at the runtime and hence it may add performance overhead every time a process runs. A single text field containing XML. Although TIBCO BusinessWorks mapper provides greater flexibility. It is important to note that the default behavior of the JDBC query activity. • Note that XPath expressions are evaluated to take one to a specific element (node) or group of nodes. tusjain@gmail. No parsing needed. This section will focus on providing a better design practices for an improved performance using TIBCO BusinessWorks. Many TIBCO BusinessWorks mapper performance issues arise from this inefficient XSLT. Care should be exercised to limit this data to a manageable “chunk” before processing. • Use tib:render-xml function instead of Render XML if one are not modifying XML structure. In general. there are some cases appropriate for using the Transform XML activity. such as input and style sheets being different every time Transform XML activity is invoked.x provides a full-featured XSLT editor.com A set of ordered values. This is a major change in TIBCO Active Enterprise™ 5 wire format. 3. • Indexing of records If oner data has a large number of repeated records/elements and one plan to iterate through them.2 TIBCO Business Works Mapper Performance TIBCO BusinessWorks 5. a JDBC result set) and then process it through a series of activities.com/ Tushar Jain Stream XML Text* Medium Medium tusjain@yahoo. A serialized Java object. therefore allowing an unspecified number of records to be retrieved at once can cause memory usage problems. and other activities such as parse data or parse XML. • Use variables and evaluate them only once. • Think of the process or source data as an XML tree.5. granularity and support for XSLT 2. Object Low 3. is to parse/retrieve the entire result into memory for downstream processing. always use the "iteration element" in a loop if there are more than a small number of records. • Because of XML tree traversing.
it is much more efficient to use the mapper and utilize xsl:foreach. 3. once one create the variable in the input pane. Using the mapper GUI. which makes it possible to iterate through data within the mapper using the statement xsl:for-each or xsl:for-each-group instead of using a group around the mapper. one may need to create a list from an input list where every item that has a unique value gets created on the output. The XPath for one output value in the mapper (contained in an iteration group) might look like the following: $JDBC-Query/resultSet/Record[$index]/field1 If this expression is repeated many times for multiple fields. This obviously does not apply if multiple activities must execute within each iteration. tusjain@gmail. If the tree is large and the mappings define many lookups of related or identical data. For the JDBC query activity. using variables to store that data can improve performance significantly. In TIBCO BusinessWorks 5. the total processing time will be significantly less than retrieving all 100K rows at once. The way to do this varies based on the input data source. This effect can be amplified by referencing that node many places in mapping/binding activities. but a couple of common inputs are results of Parse Data and JDBC Query activities. An example is a large number of records in an input tree that are processed one at a time. This obviously gets progressively slower as the number of items grows. The solution to both of these problems is to retrieve the data in smaller sets/chunks and use a group to iterate through the entire set. instead of placing the mapper in a group and using the “accumulate output” feature of the group. it will be more efficient to create a variable at the top of the mapper input pane (and generated XSLT) that evaluates the repeated portion of the XPath ($JDBC-Query/resultSet/Record[$index]) and then use the variable as part of all subsequent XPath expressions. Therefore. One feature of the parse data activity is that it does not buffer the whole file from the disk.6. 3.1 Iterating Through Large Sets of Data Using a Mapper Activity Mapping technology in TIBCO BusinessWorks (XSLT) has mechanisms for iteration and looping.http://architecture-soa-bpm-eai. If the mapper is the sole activity.2.com. how complex the expression is. one can easily configure it to retrieve a set number of records and process them before retrieving more. Or one may create a list in which every item that has a matching itemType gets grouped on the output. such as: $var1/field1 $var1/field2 $var1/field3 The benefits of using variables within the mapper will vary depending on how large the data is. Some experimentation can be used to optimize the size of the chunk depending on the type of data and processing required. it is possible to retrieve the results in chunks by using more selective SQL and surrounding the JDBC query activity with an iterate group.blogspot. one can store the current iteration element in a process variable for faster access during iterations. Standards & Guidelines for TIBCO Business Works Page 18 of 24 . one will see it on the left side with the appropriate schema representation to allow drag-and-drop mapping. but duplicates are dropped. Use of Variables One of the single most important optimizations in the mapping activity and any activity that transforms data is the use of variables. The mapper GUI makes this easy to use.2 Sorting and Grouping Data A common mapping requirement that can result in very inefficient XSLT is to sort or group a list-style output by a value of some data in the input data. For example.com/ Tushar Jain tusjain@yahoo. One way to do this is use the preceding-sibling axis to check all of the previously processed items for a specific value before processing the current item. and how many times it is repeated. For the parse data activity. The use of variables can minimize this impact.6.com record/element to the current node being processed. For example. one can use it to process extremely large (1G +) files with a controlled amount of memory usage. if the table holds 100K rows and one retrieve 1K at a time and iterate 100 times. The mapper activity retrieves data at runtime by evaluating XPath expressions and traversing the input tree to access the matching data.
or Mail process starters. such as Universal Application Network (UAN) • Carefully consider pros and cons of .” Is a feature that can achieve dramatic performance improvements for these use cases. “Converting a List into a Grouped List. Sarvega. a new connection is created if the maximum pool size has not been reached. • Eliminate frequently repeated XML tags and elements • Consider async invocation style • Use synchronous or fine-grained invocation for a frequent back-and-forth communication between nodes • Keep in mind that exception handling and document passing requirements will increase.0 statement that is supported in TIBCO BusinessWorks 5.blogspot.http://architecture-soa-bpm-eai.X supports design where a service and the Implementation of service (BW process) are having isolation. HTTP.com/ Tushar Jain tusjain@yahoo. One can specify a threshold size for incoming large documents and messages so that items that exceed the threshold are written to disk instead of stored in memory. one can use the Read File activity to obtain the contents of the file.Pull parser (XPP3). When a Send HTTP Request activity requires a connection. an XSLT 2. hardware based solutions (Cisco AON. Large documents or messages can consume considerable memory and may degrade the performance of oner system. Email: Use option process starter streaming option • Later read it using File Reader Data Parse 3.1.4 SOA Best Practices These are the best practices for working with Service Oriented Architecture (SOA): BW 5. It is possible specify the maximum number of connections to create in the persistent connection pool. email@example.com The solution is to use for-each-group.1 Configuring Persistent Connections Persistent connections are created for each HTTP server that Send HTTP Request activities in process instances communicate with.6. it is used. and It is also possible to specify the maximum number of persistent connections for each HTTP server. if necessary of course a large IO is associated.6. Connections for each HTTP server are created in the pool until the maximum is reached. Standards & Guidelines for TIBCO Business Works Page 19 of 24 . Once the large document or message is written to disk. such as WS-Discovery 4 Configurations 4. Each HTTP Client holds a persistent connection until the HTTP server sends the response message. BW gives flexibility to derive to process skeletons framework (no implementation) out of a third party WSDL (Port. If the maximum number of connections for that particular server has been reached. If a corresponding unused connection is found.Reducing overly frequent validation • Investigate parsing technology . the pool is searched for a connection that corresponds to the HTTP server. 3. Reactivity) • Reduce overly chatty protocol uses.Compressing technique (binary compression such as Gzip) .2 and later. the request must wait for a connection to be released before using it. HTTP. Process Large Incoming documents • SOAP.com. If no connection is found to a corresponding HTTP server.3 Large Document/Record Use Cases One may receive large documents or messages with the SOAP. Message. The connection is then released by the client and returned to the pool. Service) and also in a reversed way WSDL can be generated out of a plain process definition and can be exposed as service with the use of the generated WSDL.
The default value for this property is false.client.client.plugin.client.plugin.blogspot.maxConnectionsPerHost The value of this property is ignored unless the bw. Checking for stale connections adds significant processing overhead. The thread pool’s size can be configured using this property.plugin.client. Standards & Guidelines for TIBCO Business Works Page 20 of 24 .plugin.client.maxTotalConnections property.http. These threads are taken from a thread pool.plugin.plugin. The number of connections for each host is limited by the bw. Each HTTP request is sent out in a separate thread in order to not keep the engine’s thread blocked while waiting for the response message.plugin. The default value for this property is 20. The total number of connections in the pool is limited by the bw. Refer to oner HTTP server documentation for more information about support for persistent connections.client.http. When this property is set to true.http. a connection can become stale.http.plugin. bw.usePersistentConnectionManager This property specifies that a pool of HTTP connections to each HTTP server should be created so that connections can be reused by Send HTTP Request activities. bw.com. When using persistent connections.http. Not all HTTP servers support persistent connections.maxTotalConnections The value of this property is ignored unless the bw. The default value for this property is 200.maxConnectionsPerHost property. Each HTTP (SOAP/HTTP) Request-Reply activity has its own thread pool.client.checkForStaleConnections The value of this property is ignored unless the bw. bw. This property specifies the maximum number of persistent connections to create for all HTTP servers. bw.http.client.client.usePersistentConnectionManager property is set to true. firstname.lastname@example.orgPersistentConnectionManager property is set to true.usePersistentConnectionManager property is set to true. The default value of this property is false.http.http.com/ Tushar Jain tusjain@yahoo. This property specifies the maximum number of persistent connections to each remote HTTP server.http://architecture-soa-bpm-eai. but it does improve reliability. The default value for this property is 10.plugin.com bw.client.ResponseThreadPool The HTTP (SOAP/HTTP) client uses a thread pool for sending the HTTP messages.plugin. a pool of connections is created for each HTTP server that the HTTP (SOAP/HTTP) Request-Reply activities connect to. When this property is set to true. a persistent connection is checked to determine if it is stale before it is used by an HTTP (SOAP/HTTP) Request-Reply activity.http.
While a connection is in the TIME_WAIT state.2 Configuring HTTP/JMS Servers In some situations. FTP.com/ Tushar Jain tusjain@yahoo. this parameter corresponds to the number of sockets open at a time. A connection refuse might happen if the resource available for a incoming request. tusjain@gmail. one may wish to alter the configuration of the HTTP server that receives incoming HTTP requests for TIBCO BusinessWorks. the socket pair cannot be reused. See RFC 793 for further details. which is normally set to 30 seconds. How ever Passing a User name .http.3 Enabling SSL Configurations via BW SSL can be implemented into a transport with JMS. The existing hardware. 4. on Windows. Please note that other operating systems may have similar limiting parameters. Another important parameter is TcpWaitedTimeDelay. To change these values. these properties will automatically become part of the deployment configuration. MaxUserPort specifies the ephemeral port numbers (by default. While a connection is in the TIME_WAIT state.1 without the HTTP Persistent support). 5 Global Variables Global Variables and Grouping of GV Standards & Guidelines for TIBCO Business Works Page 21 of 24 . the socket pair cannot be reused. processor and memory should also be considered while defining the above properties.plugin.plugin. This parameter determines the length of time that a connection stays in the TIME_WAIT state when being closed. For example.maxProcessors can be configured to handle the incoming HTTP requests.com. Increasing or reducing the processor count may lead to performance related problems and so can be optimized with number of tests. short-lived ports are allocated in the range from 1024 through 5000.http. Properties such as bw.http://architecture-soa-bpm-eai. When one deploy oner project using TIBCO Administrator.server. RV. 4. Hence. SOAP.minProcessors and bw. Generally. For example.1 or HTTP 1. This is also known as the 2MSL state because the value should be twice the maximum segment lifetime on the network. For scenarios where an HTTP server is using non-persistent connections (such as a Web server prior to HTTP 1.server. This is also known as the 2MSL state because the value should be twice the maximum segment lifetime on the network.com There are several public domain connection manager tools available to monitor progress of the connections. Configuration Considerations for Non-Persistent Connections Many operating systems by default are tuned for the limited numbers of UserPort parameters.blogspot. the following two parameters should be carefully tuned: Key: Tcpip\Parameters Value Type: REG_DWORD-maximum port number Valid Range: 5000-65534 (decimal) Default: 0x1388 (5000 decimal) This parameter controls the maximum port number used when an application requests any available user port from the system. Setting this parameter to a value outside of the valid range causes the nearest valid value to be used (5000 or 65534).tra file. Windows allows 10245000). Adapter and also at process level. Key: Tcpip\Parameters Value Type: REG_DWORD-time in seconds Valid Range: 30-300 (decimal) Default: 0xF0 (240 decimal) This parameter determines the length of time that a connection stays in the TIME_WAIT state when being closed. HTTP. Normally. TIBCO Software recommends that during performance testing one monitor progress of connection using one of these tools. on Windows 2000. one should consider tuning those parameters when similar limitations are encountered. password or importing a identity or the certificate controls unauthorized access. tuning should be very carefully understood on the Windows platform. add the appropriate property to the bwengine. The designer is equipped with the tool to import the certificate and Identity and makes it available at run time to prevent connections from unauthorized users and connect to a authentic System.
For-Each-Group is a shortcut to create a For-Each-Group statement with the repeating element as a child element and a Grouping statement to contain the element you wish to group-by. it can be set as Global Variable and can be managed as property associated with a specific process. They are typically used in adapter configuration and deployment. Two properties named PTY_LogLevel and PTY_PublishLogLevel are crucial in defining the way logging is done using the Logging service and these properties are initialized from the property file or default to global variables if they are not defined within the property file. Issues: We strongly recommend that one define a well-defined naming & usage convention for Global Variable across oner project(s). Grouping Related GV is easy from Deployment and maintenance aspect of a process. connection string in some cases. Deployment/Config uration Specific Variables CFG_ These variables are global across the project and don’t vary from one migration environment to other. This service provides a mechanism to read process-specific properties into memory at initialization time and these properties can then be used through out the process using x-path functions. and suffix. Location Independence/Dependence: Special care must be given to certain parameters such as RV Subjects. username. Naming Conventions for Prefix Element The configuration parameters used inside our BPs for connectivity to external applications changes frequently. PROD) such as ENV. Global Across Projects GLB_ These variables are global across the project and don’t vary from one migration environment to other. The Grouping statement creates the list grouped by the desired element. One must take following issues under consideration before designing “Global Variable” naming convention. For more details please see TIBCO BusinessWorks Common Utility Services(1) 5. once process engine has been started. Initially. 5. They change when the development hands over the BPs to QA for testing or when QA decides to move from one system to another or even when the developers decide to move from one system to another for end-to-end testing. Standards & Guidelines for TIBCO Business Works Page 22 of 24 . which changes from one environment to another (DEV. which provides a category. and the current-group() function allows you to access the items in the Requests repeating element that correspond to the group that is currently being processed. the utility function introduced with “BWTemplate” provides a mechanism to specify process specific variables.blogspot. 2. 1. Choose the repeating element in the Activity Input schema that holds the grouped data. RVCM ledger file. They are typically used in processes.com/ Tushar Jain tusjain@yahoo. 4.g. which conveys meaning of variable. 3. This allows finer granularity at “Process Level” Naming Convention for Suffix Element Global variable should have unique names. Category Prefix Comments Migration Variables MIG_ These variables.com Global variables are used within the deployment process to maintain environment specific values.com. Deployment doesn’t allow “Global Variable” substitution yet.1 Grouping & Sub-grouping Rules Grouping Related GV is easy from Deployment and maintenance aspect of a process. ProductNameType) including first letter The name should not have spaces First letter must be “Alphabetical” and “Upper Case” Only. there is one central place onecan take a look at the configuration parameters and hence can be easily administered. In a reverse excersise if a repeating element is coming and the index is known then the element at a particular index of the repeating element can be determined using the xpath.tra" file. Use leading upper case for resources (e. Currently BW doesn’t provide any facility to modify “global variables”. such as database or mainframe connectivity information. Having different port numbers and subject names based on the environment ensures that messages from a project in one environment are not inadvertently picked up by same project in another environment. These parameters may have dependency with migration environment or machine. Generally we recommend that one categorize them and use naming convention accordingly. STAGE. email@example.com or “processengine.http://architecture-soa-bpm-eai. Adding the Grouping statement creates the $=current-group() element in the Process Data area. and HTTP Port. Process LevelProperty PTY_ Though these are not strictly “Global Variables”. Once global variable is set into the repository it is loaded when business process engine is loaded. Naming convention should consist of prefix. All the global variables are listed in the bwengine. this will include values such as port number and subject name but may be expanded based on the project requirements. Process Variables Though this concept is not available out of box. Themigration script can simply look at any global variable starting MIG_ and provide property file corresponding to environment.2 Naming Conventions Any BW related projects should carefully define global variables for the projects.
success code & description etc. 7. There can be only one log4j. If the in-bound data. If one wish to use properties from a different log4j. out-bound data which is very high then a smaller portion of that can be logged as a high I/O is always associated with logging. Utility Services These covers the most granular processes and utilised/referenced from main business process.0 Logging Parameters Details. developer should use this fields.properties file before altering it. log. and message correction file locations. transport name should only be used if Application detail is not available.properties file. Logging for Third-Party Components TIBCO BusinessWorks can use a variety of third-party components. One can alter the properties in this file. frequency etc. Stack Trace. out-bound data. schemas. Logging need to cover Application Process Name.blogspot. Activity. main. transform The name should uniquely identify the project in the domain The first letter of each word in the project should be capitalized. Many third-party components can use the standard log4j logging services.properties or one can alter the bwengine. and only [Source] is available.properties file per Java VM. Do not remove any required properties from this file. Time Stamp of Logging. It can also be transport such as “JMS” or “RV”.properties file has comments describing property usage.properties file. a group of activity should be precede and followed with a log. Audit & Debug Standards & Guidelines for TIBCO Business Works Page 23 of 24 . TIBCO BusinessWorks provides the bw/<relNum>/lib/log4j. The properties defined in bw/<relNum>/lib/log4j.1 Logging Rules Application Specific success or failure should be logged System Specific startup shutdown error should be logged Process Specific log for each instance Obey the format of logging. failure code. unit test. Valid <ResourceType> are starter.tra file to point to the location of oner own log4j.http://architecture-soa-bpm-eai.properties are required by the components used by TIBCO BusinessWorks.com/ Tushar Jain tusjain@yahoo. It is a good idea to create a backup copy of the log4j. The purpose of this “File System” structure is to provide a uniform referencable external resource location such as property. 6 Logging 6.properties file to allow one to configure logging services for third-party components. However. validation. the Apache Tomcat server is used to accept incoming HTTP or SOAP requests or the Arjuna Transaction Service can be used as a transaction manager. For example.properties file. failure description. if [Source] [Target] is required. one can either add the properties to bw/<relNum>/lib/log4j.com. [Source] and [Target] can be “Application Name” such as ERP or CRM. If one use oner own log4j. Each Major Activity. one must include all of the required properties from the file supplied with TIBCO BusinessWorks in oner file. Example : a common query interface getting used at different business processes within a project 8.com By default all name should follow: <Prefix><Free Form><Suffix><ResourceType> convention If following table contains required field and if resource context information is available. Exception. if one wish to configure logging for oner environment. For example. in-bound data. The name should describe the functionality of the component. input/output data. The supplied log4j. This allows one to return to the original configuration if oner changes result in errors. static maps. No Extensive logging as it hinders performance 1. developer should [Source] in respective area. tusjain@gmail.
activity.http://architecture-soa-bpm-eai. component related ) or exceptions to an audit interface which usually mails and stores the details from which an Audit report can be generated. System Exceptions. A utility service can be designed to report the errors(system. time stamp of exception generated can be well traced and monitored. the process id causing the exception.Components Exceptions. Each exception is maintained with a code and description in XML flat file or in Database.blogspot. Hawk and micro agents can well monitor the Process and the Logs generated to report the exception in form of a mail. Business Exceptions . application. The fault messages can be audited and the message can be remediated based on the requirement further. Standards & Guidelines for TIBCO Business Works Page 24 of 24 .com The errors or fault can be categorized into mainly Internal Exceptions.com. alert or it can restart a failed job.com/ Tushar Jain tusjain@yahoo. tusjain@gmail. The Exception .
This action might not be possible to undo. Are you sure you want to continue?
We've moved you to where you read on your other device.
Get the full title to continue reading from where you left off, or restart the preview.