Appboard/2.4/builder/data processing scripts: Difference between revisions

imported>Jason.nicholls
No edit summary
imported>Jason.nicholls
Line 13: Line 13:
#Configure the Data Processing Script
#Configure the Data Processing Script
##Input the path name of the script
##Input the path name of the script
##*Typically Data Processing Script are kept in the following directory:  ${appboard_server}/webapps/enportal/WEB-INF/groovy-script
##*Typically Data Processing Script are kept in the following directory:  <tt>${appboard_server}/webapps/enportal/WEB-INF/groovy-script/custom</tt>
##Set the priority (default 10)
##Set the priority (default 10)
##*Priority is only important if you have multiple scripts active
##*Priority is only important if you have multiple scripts active
Line 23: Line 23:
#Click through the wizard to finish
#Click through the wizard to finish
#View the appropriate data collection (re-query if necessary) to see if data is being updated
#View the appropriate data collection (re-query if necessary) to see if data is being updated


== Data Processing Script Example ==
== Data Processing Script Example ==

Revision as of 06:00, 2 October 2013


Data Processing Scripts are a method of processing data returned from Data Sources before it's made available to the rest of the system. This is a very flexible method to transform data in order to meet the specific needs of a solution.

Scripts are written in the Groovy programming language, which is a Java like dynamic language, and attached to Data Source entities.


Applying a Data Processing Script

  1. Open the AppBoard Builder and click on "Data Sources"
  2. Select the data source to be affected and click the "Edit" button
  3. Advance through the data source wizard to the "explore" stage
  4. Select the table you want to transform and then click the "Advanced" button
  5. Configure the Data Processing Script
    1. Input the path name of the script
      • Typically Data Processing Script are kept in the following directory: ${appboard_server}/webapps/enportal/WEB-INF/groovy-script/custom
    2. Set the priority (default 10)
      • Priority is only important if you have multiple scripts active
    3. Set script to run on "Response" or "Refresh"
      1. Response (called every time the client requests)
        • Example when to use: performing a join or status determination by requesting data from another dataset
      2. Refresh (called only when data is fetched from source)
        • Example when to use: substringing a value
  6. Click through the wizard to finish
  7. View the appropriate data collection (re-query if necessary) to see if data is being updated

Data Processing Script Example

TrimSiteCode.groovy

import com.edgetech.services.ServiceRequestFacade
import com.edgetech.services.ServiceResponseFacade
import com.edgetech.services.GenericRecord
import com.edgetech.services.Association
import com.edgetech.services.impl.ServiceRequestHelper
 
import java.util.Collection;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
 
// trim extra whitespace and concatenate two fields into a new one
 
ServiceResponseFacade serviceResponse = responseFacade;
ServiceRequestFacade serviceRequest = requestFacade;
 
                Collection recordsToClean = serviceResponse.getOrderedGenericRecords();
                if ( ( recordsToClean != null ) && !recordsToClean.isEmpty() ) {
                  for ( GenericRecord recordToClean:recordsToClean ) {
                                String siteCode = recordToClean.getAttributeValueAsString("SITE_CODE");
                                if ( siteCode != null ) {
                                                recordToClean.setAttributeValue("SITE_CODE", siteCode.trim());
                                                String stateCode = recordToClean.getAttributeValueAsString("STATE");
                                                if ( stateCode != null ) {
                                                                recordToClean.setAttributeValue("SITE_CODE2", siteCode.trim() + stateCode.trim());
                                                }
                                }
                                String region = recordToClean.getAttributeValueAsString("REGION");
                                if ( region != null ) {
                                                recordToClean.setAttributeValue("REGION", region.trim());
                                }
                  }
                }