Xpath advanced functions examples

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Process wizard > Business Rules > Business rules elements > Expression element > Functions >

Xpath advanced functions examples

The following examples will be based on the following data model. Imagine you work for a telephone company and you are in change of the Help Desk to assist with claims and complaints. Each claim will be related to a customer. To resolve each case your team may contact the customer by phone several times. To keep track of all calls made a History log will be constantly updated.

 

 

Understanding xpath4

 

 

newCollectionItem: Allows to include new records in the collection. The records are initially added as an empty record. You can use XPath or variables to set the new record values.

 

Example: Each comment must be registered in the History collection.

var User = Me.Case.WorkingCredential.UserId;
CommentRecord=Me.newCollectionItem("ClaimsAndComplaints.History")
CommentRecord.setXPath("Actions",<ClaimsAndComplaints.Response>);
CommentRecord.setXPath("PostedBy",User);
CommentRecord.setXPath("Dates", DateTime.Now);

 

 

Distinct-values: Returns a filtered collection with no repeated values of an attribute.  It is necessary to indicate the attribute for which the values will not be repeated.

 

Example: We need to know how many different phone numbers have been dialed to contact the customer

DiffPhone = <distinct-values(ClaimsAndComplaints.Calls.TelephoneNumber)>;
<ClaimsAndComplaints.DiffPhoneNumbers> = DiffPhone.size();

 


 

Get value as collection: In some cases it is necessary to handle Collections in expressions without using the Iterate over XPath functionality to allow a complete manipulation of the code.

 

Example: It is necessary that all calls have an observation. The function transform a list of all calls stored as a text chain into an array list called AllCalls. Note this example is used to illustrate the functionality; it could be done using Iterate over XPath.

var AllCalls = CHelper.GetValueAsCollection(<ClaimsAndComplaints.Calls>);
for (var i = 0; i< AllCalls.size(); i++) {
  var CallRecord = AllCalls.get(i);
  if(BAIsNull(CallRecord.getXPath("Observations")))
    CHelper.ThrowValidationError("The Call "+CallRecord.getXPath("TelephoneNumber")+" has not observations");
}

 


 

RemoveRelation: Allows to delete items from a collection. It is possible to specify whether you want or not to delete the database records in the second parameter.

 

Example: All the calls that have not been marked must be removed.

Me.removeRelation("ClaimsAndComplaints.Calls[Mark = false]",true);

 

 

Sort: Sorts records of a collection in ascending order according to an attribute. It is possible to sort using an integer, float, date or string attribute.  The method receives a collection, and returns the collection sorts by the attribute’s value.

 

We will sort by date all the reviewed Calls and store them in a variable.

var CallsChecked=<sort(ClaimsAndComplaints.Calls[Mark = false],'DateAndTime')>;

 


 

Round: is used to reduce a number (currency, real, float) given a specific number of decimals.

 

Example: Round a currency value with two decimal places.

<Purchase.RoundedPrice> = CHelper.Math.Round(<Purchase.InitialPrice>,2)

Round a currency value without decimal places

<Purchase.RoundedPrice> = CHelper.Math.Round(<Purchase.InitialPrice>)

 

 

Floor: is used to round a number (currency, real, float) down to the closest integer.

 

Example: Round a currency attribute to the smallest integer.

<Purchase.RoundedPrice> = CHelper.Math.Floor(<Purchase.InitialPrice>)

 

 

Ceiling: is used to round a number (currency, real, float) up to the closest integer.

 

Example: Round a currency attribute to the biggest integer.

<Purchase.RoundedPrice> = CHelper.Math.Ceiling(<Purchase.InitialPrice>)