Defining Business Transaction
Before being able to define business transactions a corresponding application must have been defined which the business transaction should belong to. The page Defining Applications describes how to create application definitions.
Business transaction definitions are managed on the Business Transaction Definitions page of an application definition editor. To navigate there, open the target application and select the Business Transaction Definitions tab at the bottom of the editor:
Each application may have an arbitrary amount of business transaction definitions. Per default, each application definition has an immutable business transaction called Unknown Transaction. The Unknown Transaction is a placeholder for the case that none of the defined business transaction mappings apply to an incoming request.
Creating Business Transaction Definitions
To create a business transaction definition click on the Create button in the toolbar of the Business Transaction Definitions page. This opens a dialog requesting for the following information:
- Name: Unique name of the business transaction definition. If Dynamic Name Extraction is not activated for this definition, then this name is also used as the business transaction name.
- Description: Optional description for the business transaction definition.
- Insert Before: This value specifies where the new business transaction definition should be positioned in the list of available definitions. Section The Order of Business Transaction Definitions describes why the order of business transaction definitions matters!
A created business transaction definition appears in the upper table. Analogously to applications, business transactions definitions are evaluated in the order as displayed in that table. When selecting a business transaction definition, in the lower half of the page two additional sections appear:
- Business Transaction Mapping: Equivalent to application definitions, this section allows to specify matching rules for the selected business transaction. Specifying matching rules is described on a separate page.
- Dynamic Name Extraction: Allows to extract the name for the business transaction dynamically from some measurement data (e.g. the URI). Section Dynamic Name Extraction explains this in more detail.
The Order of Business Transaction Definitions
The order of business transaction definitions in the table plays an important role, if business transactions are not strictly separated.
When requests are evaluated to find the business transaction they should be assigned to, the business transaction definitions are processed in the same order as shown in the table. If the evaluation identifies a matching business transaction for a request, all subsequent business transaction definitions are not considered anymore for the corresponding request. This is not a problem if the matching rules of the differnet business transaction definitions are unabiguous. However, if this is not the case and the rules of one business transaction definition cover the rules of another business transaction definition, then the order of business transaction definitions is important.
Good Practice
Position business transaction definitions with rather generic rules below business transaction definitions with rather specific rules!
Lets assume we have two business transaction definitions in the following order and having following matching rules
- Browse: GET HTTP request to /dvdstore/browse
- Search: POST HTTP request to /dvdstore/browse with HTTP parameter "SearchForm" having the value "SearchForm"
If the matching rules are specified as shown in the screenshots above, then the Browse business transaction is more generic than Search. In particular, any request matching Search would also match Browse. And since Browse is before Search, all (Browse and Search-requests) will be assigned to the Browse business transaction.
To correct this, Search needs to be moved above Browse as it is more specific than browse. To move business transaction definitions use the
up andDynamic Name Extraction
Apart from assigning static business transaction names to user requests (by means of matching rules), inspectIT provides the possibility to extract business transacation names dynamically from measurement data. To activate dynamic name extraction just enable the checkbox "Extract name dynamically" in the Dynamic Name Extraction section.
During evaluation of requests the dynamic name extraction is only applied if the left-hand side rules (Business Transaction Mapping section) match the request.
The dynamic name extraction configuration provides the following properties:
- String Source Selection
This paragraph allows to select the string source from which the business transaction name shall be extracted. Available options are:- HTTP URI
- HTTP Parameter
- HTTP Request Method
- Method Signature
- Method Parameter
- IP
- Name Pattern Specification
This paragraph specifies how the business transaction name shall be extracted from the selected string source.- Use string value as name: If selected, then the selected string source is directly used as the name for the business transaction
- Specify name pattern: If selected, parts of the string source can be extracted and used in a custom name pattern.
- Regular Expression: Specifies a regular expression using one or more groups "(...)" to extract fragments from the string source.
- Name Pattern: Defines the target pattern for the business transaction name using the fragments previously extracted with the regular expression.
- Scope in Trace
This paragraph specifies how deep inspectIT should investigate the call graph of an request until the dynamic name extraction is applied. If disabled, inspectIT investigates only the root node of the call tree. If activated, the Maximum search depth defines how deep to search for a match (-1 means unlimited depth).
If the dynamic name extraction cannot be applied within the specified scope in the call tree of the request, then the corresponding request is marked with a generic business transaction name ("<Name Pattern> (unmapped)").
In the above example the business transaction name is extracted from the HTTP URI. In particular, the first path section after "/dvdstore/" is used as a fragment. This fragment is then used in the name pattern by referencing the first extraction group "... (1)".
Once the business transactions are defined, they are displayed in the Invocation Sequence view. In the example below we see the static definitions (Home, Browse and Search) as well as the dynamically extracted business transactions (BT - XXXXX):