Release 0.9.7 - Automation component

Jun 3, 2011 at 12:58 AM
Edited Jun 3, 2011 at 3:57 AM

The CommonLibrary.NET 0.9.7 version has a new Automation component.  It's a light-weight automation runner using xml scripts for running tasks in your application and for loading data into your application.


  1. "Data" automation for your application...  as opposed to system administration automation like "PowerShell"
  2. Load / Import data into your application ( e.g. easily load 1000 blog posts, and other data models into your system for testing purposes )
  3. Easy access to xml data in the script ( Commands can contain xml data )
  4. Similarity to NAnt but for your application, not for a build process
  5. Target users are not necessarily developers, but also Quality Assurance testers who want a simplified script based access to your API
  6. Need a specific way to inform user whether each command in the script succeeded



  1. PowerShell - More ideal for System level automation rather than data automation. This is a solid alternative and Powershell based scripts may also very likely be supported ( right now, xml and command line style scripts are supported )
  2. Iron Python - Did not want to drag in Iron Python libraries although it can be supported. Also wanted simplified and direct access to XML data



Scenario: Can use variables in script
Scenario: Can map commands to C# classes
Scenario: Can automap command parameters to C# class properties
Scenario: C# Command classes have access to use inner xml element for data
Scenario: Command can be configured to fail but allow script to continue running
Scenario: Script result has access to each command result ( command Index, return value, success / fail, message )
Scenario: Script result can build up text combining all command result messages
Scenario: Can specify a "RefKey" on a command to uniquey identify and retrieve that command result value
Scenario: Can include file into the script
Scenario: Can add script variables programmatically

Scenario: Variables can reference other variables using format ${variable_name} 
Scenario: Command parameters can reference variables using format ${variable_name} 
Scenario: Command can assign it's return value to a variable via "assignto" parameter assignto="${hello_world_result} 
Scenario: Registered default variables 
Scenario: Register functions ${date.hour} using name/lamda pairs


Scenario: Support For loops 
Scenario: Support If statements 

Scenario: Script can gracefully handle invalid xml
Scenario: Script can gracefully handle invalid command
Scenario: Script can gracefully handle command exception