You are viewing a plain text version of this content. The canonical link for it is here.
Posted to imperius-commits@incubator.apache.org by jn...@apache.org on 2008/02/05 19:29:04 UTC
svn commit: r618755 [1/2] - in /incubator/imperius/site: build/site/en/
build/site/en/community/ build/site/en/docs/ build/site/en/download/
build/tmp/ build/tmp/cocoon-work/cache-dir/ src/documentation/
src/documentation/content/xdocs/ src/documentati...
Author: jneeraj
Date: Tue Feb 5 11:28:59 2008
New Revision: 618755
URL: http://svn.apache.org/viewvc?rev=618755&view=rev
Log:
1. Added SPL reference
2. Added more tabs for a consistent look-n-feel
3. Minor editor updates
Added:
incubator/imperius/site/build/site/en/docs/spl_reference.html (with props)
incubator/imperius/site/src/documentation/content/xdocs/docs/spl_reference.xml (with props)
Modified:
incubator/imperius/site/build/site/en/community/bugs.html
incubator/imperius/site/build/site/en/community/community.html
incubator/imperius/site/build/site/en/community/contribute.html
incubator/imperius/site/build/site/en/community/mail-lists.html
incubator/imperius/site/build/site/en/docs/getting_started.html
incubator/imperius/site/build/site/en/docs/javaspl_user_guide.html
incubator/imperius/site/build/site/en/docs/spl_editor_guide.html
incubator/imperius/site/build/site/en/download/download.html
incubator/imperius/site/build/site/en/index.html
incubator/imperius/site/build/site/en/license.html
incubator/imperius/site/build/site/en/linkmap.html
incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.data
incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.index
incubator/imperius/site/build/tmp/projfilters.properties
incubator/imperius/site/src/documentation/content/xdocs/docs/spl_editor_guide.xml
incubator/imperius/site/src/documentation/content/xdocs/site.xml
incubator/imperius/site/src/documentation/content/xdocs/tabs.xml
incubator/imperius/site/src/documentation/resources/images/Thumbs.db
incubator/imperius/site/src/documentation/skinconf.xml
Modified: incubator/imperius/site/build/site/en/community/bugs.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/community/bugs.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/community/bugs.html (original)
+++ incubator/imperius/site/build/site/en/community/bugs.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li class="current">
+<a class="selected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
Modified: incubator/imperius/site/build/site/en/community/community.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/community/community.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/community/community.html (original)
+++ incubator/imperius/site/build/site/en/community/community.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li class="current">
+<a class="selected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
Modified: incubator/imperius/site/build/site/en/community/contribute.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/community/contribute.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/community/contribute.html (original)
+++ incubator/imperius/site/build/site/en/community/contribute.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li class="current">
+<a class="selected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
Modified: incubator/imperius/site/build/site/en/community/mail-lists.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/community/mail-lists.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/community/mail-lists.html (original)
+++ incubator/imperius/site/build/site/en/community/mail-lists.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li class="current">
+<a class="selected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
Modified: incubator/imperius/site/build/site/en/docs/getting_started.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/docs/getting_started.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/docs/getting_started.html (original)
+++ incubator/imperius/site/build/site/en/docs/getting_started.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li class="current">
+<a class="selected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -103,6 +109,9 @@
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menupage">
<div class="menupagetitle">Getting Started</div>
+</div>
+<div class="menuitem">
+<a href="../docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
</div>
<div class="menuitem">
<a href="../docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
Modified: incubator/imperius/site/build/site/en/docs/javaspl_user_guide.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/docs/javaspl_user_guide.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/docs/javaspl_user_guide.html (original)
+++ incubator/imperius/site/build/site/en/docs/javaspl_user_guide.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li class="current">
+<a class="selected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -103,6 +109,9 @@
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../docs/getting_started.html" title="Get Started">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="../docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
</div>
<div class="menupage">
<div class="menupagetitle">JavaSPL User Guide</div>
Modified: incubator/imperius/site/build/site/en/docs/spl_editor_guide.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/docs/spl_editor_guide.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/docs/spl_editor_guide.html (original)
+++ incubator/imperius/site/build/site/en/docs/spl_editor_guide.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="../download/download.html">Download</a>
</li>
+<li class="current">
+<a class="selected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -105,6 +111,9 @@
<a href="../docs/getting_started.html" title="Get Started">Getting Started</a>
</div>
<div class="menuitem">
+<a href="../docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
+</div>
+<div class="menuitem">
<a href="../docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
</div>
<div class="menupage">
@@ -215,17 +224,18 @@
<p>
To use the JavaSPL editor you will first need to download and install
<a href="http://www.eclipse.org/downloads">eclipse platform 3.3 or later </a>
- and <a href="http://www.eclipse.org/downloads"> EMF 2.3 or later </a>
+ ,<a href="http://www.eclipse.org/downloads"> EMF 2.3 or later </a> and
+ the <a href="http://antlreclipse.sourceforge.net"> ANTLR v2 plugin </a>
</p>
-<a name="N10050"></a><a name="download_editor"></a>
+<a name="N10054"></a><a name="download_editor"></a>
<h3 class="boxed"> Download or build the SPL Editor </h3>
<p>
Download and extract <a href="http://incubator.apache.org/imperius/downloads.html"> SPLEditor.zip </a>
to a temporary location. You can also <a href="http://incubator.apache.org/imperius/community/contribute.html"> Build the editor from source </a>
</p>
-<a name="N10062"></a><a name="installation"></a>
+<a name="N10066"></a><a name="installation"></a>
<h3 class="boxed"> Install the Editor </h3>
<p> To install the editor simply unzip <strong> SPLEditor.zip </strong> into your
<strong> ECLIPSE_HOME </strong> and restart <strong> Eclipse </strong>
@@ -233,10 +243,10 @@
</p>
</div>
-<a name="N10076"></a><a name="use_editor"></a>
+<a name="N1007A"></a><a name="use_editor"></a>
<h2 class="boxed"> Using the Editor </h2>
<div class="section">
-<a name="N1007C"></a><a name="create_spl_project"></a>
+<a name="N10080"></a><a name="create_spl_project"></a>
<h3 class="boxed"> Create SPL Project </h3>
<ol>
@@ -253,7 +263,7 @@
</ol>
-<a name="N100A2"></a><a name="create_spl_policy"></a>
+<a name="N100A6"></a><a name="create_spl_policy"></a>
<h3 class="boxed"> Create a SPL Policy </h3>
<ol>
@@ -281,7 +291,7 @@
</ol>
-<a name="N100DD"></a><a name="import_spl_policy"></a>
+<a name="N100E1"></a><a name="import_spl_policy"></a>
<h3 class="boxed"> Import a SPL Policy </h3>
<ol>
@@ -313,7 +323,7 @@
</ol>
-<a name="N1011F"></a><a name="editing_spl_policy"></a>
+<a name="N10123"></a><a name="editing_spl_policy"></a>
<h3 class="boxed"> Editing a SPL Policy </h3>
<p>
<img alt="Icon" src="../images/spleditor.png"> </p>
@@ -337,7 +347,7 @@
at the bottom. </li>
</ul>
-<a name="N1013C"></a><a name="using_customexpressions"></a>
+<a name="N10140"></a><a name="using_customexpressions"></a>
<h3 class="boxed"> User-Defined Expressions </h3>
<p> SPL allows users to add custom actions or expressions to the runtime.
The Editor needs to be configured to recognize these custom expressions.
@@ -375,7 +385,7 @@
</ol>
-<a name="N10172"></a><a name="customizing_editor"></a>
+<a name="N10176"></a><a name="customizing_editor"></a>
<h3 class="boxed"> Customizing the SPL Editor </h3>
<p>
<img alt="Icon" src="../images/customizeeditor.png"> </p>
Added: incubator/imperius/site/build/site/en/docs/spl_reference.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/docs/spl_reference.html?rev=618755&view=auto
==============================================================================
--- incubator/imperius/site/build/site/en/docs/spl_reference.html (added)
+++ incubator/imperius/site/build/site/en/docs/spl_reference.html Tue Feb 5 11:28:59 2008
@@ -0,0 +1,1710 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8">
+<meta name="Forrest-skin-name" content="pelt">
+<title>SPL Language Reference</title>
+<link type="text/css" href="../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../skin/profile.css" rel="stylesheet">
+<script src="../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">Apache</a> > <a href="http://incubator.apache.org/">Incubators</a> > <a href="http://incubator.apache.org/imperius/">Imperius</a><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://incubator.apache.org/"><img class="logoImage" alt="Apache Incubator" src="../images/apache-incubator-logo.png" title="Apache Incubator"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://incubator.apache.org/imperius"><img class="logoImage" alt="Imperius" src="../images/project-logo.png" title="Imperius Simple Policy Language"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<!--+
+ |start Search
+ +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="unselected" href="../index.html">Home</a>
+</li>
+<li>
+<a class="unselected" href="../download/download.html">Download</a>
+</li>
+<li class="current">
+<a class="selected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="../community/contribute.html">Community</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs/getting_started.html" title="Get Started">Getting Started</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">SPL Language Reference</div>
+</div>
+<div class="menuitem">
+<a href="../docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
+</div>
+<div class="menuitem">
+<a href="../docs/spl_editor_guide.html" title="Editor Guide">SPL Editor Guide</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2"></div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<h1>SPL Language Reference</h1>
+<div class="abstract">
+ This document provides a reference to the SPL language detailing the language syntax, built-in operators and actions
+ It is aimed as providing a quick reference for users authoring SPL policies. Please refer to the
+ CIM-SPL specification for more details.
+ </div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#language_structure">SPL Language Structure </a>
+<ul class="minitoc">
+<li>
+<a href="#import_stmt"> Import Statement </a>
+</li>
+<li>
+<a href="#strgy_stmt"> Strategy Statement </a>
+</li>
+<li>
+<a href="#decl_stmt">Declaration Statement </a>
+</li>
+<li>
+<a href="#pol_stmt"> Policy Statement </a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#datatypes"> SPL Data Types </a>
+</li>
+<li>
+<a href="#builtin_ops">SPL Built-in Operators</a>
+<ul class="minitoc">
+<li>
+<a href="#numeric_ops"> Numeric Operators </a>
+</li>
+<li>
+<a href="#Comp_ops"> Comparison Operators </a>
+</li>
+<li>
+<a href="#bool_ops"> Boolean Operators </a>
+</li>
+<li>
+<a href="#string_ops"> String Operators</a>
+</li>
+<li>
+<a href="#coll_ops"> Collection Operators </a>
+</li>
+<li>
+<a href="#calendar_ops"> Calendar Operators</a>
+</li>
+<li>
+<a href="#Unary_ops"> Unary Operators</a>
+</li>
+<li>
+<a href="#Cast_ops"> Cast Operators </a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#builtin_actions">Built in Actions </a>
+</li>
+<li>
+<a href="#refs"> References </a>
+</li>
+</ul>
+</div>
+
+<a name="N10010"></a><a name="intro"></a>
+<h2 class="boxed">Introduction</h2>
+<div class="section">
+<p> Imperius (Simple Policy Language) or SPL - Is a simple standards based
+ object-oriented policy language that allows expression of management policies
+ using condition-action rules. Imperius provides an extensible set of over
+ 100 operations for expressing conditions and actions.Imperius is a generalization
+ of the CIM-SPL language. Conversely, CIM-SPL can be thought of as Imperius
+ with CIM binding. Imperius can be extended to create similar bindings for
+ other environments. JavaSPL (Imperius with Java binding) is another such example.
+
+ </p>
+</div>
+
+<a name="N1001A"></a><a name="language_structure"></a>
+<h2 class="boxed">SPL Language Structure </h2>
+<div class="section">
+<p> An SPL Policy is actually a group of one or more sub policies.
+ Each sub policy is a simple condition - action pair. An import statement
+ declares one or more anchor classes and instances that are referenced throughout the
+ policy.
+ </p>
+<p>
+<strong> Canonical Policy syntax </strong>
+</p>
+<pre class="code">
+ Import Qualifier <namespace> Class <Class Name> : <instances>*; (one or more)
+ Strategy <strategy>
+ Policy (one or more)
+ {
+ Declaration {
+ <List of constant definition> (Optional)
+ <List of macro definitions> (Optional)
+ }
+ Condition { (Optional)
+ <If Condition> /* java-like boolean expression */
+ }
+ Decision { (Required)
+ <Then Decision > /* sequence of actions */
+ /* invocations */
+ }
+ } <priority>;
+
+
+ </pre>
+<p>
+<strong> A Sample Policy</strong>
+</p>
+<pre class="code">
+ Import Class org.apache.imperius.javaspl.samples.windowscomputersystem.WindowsComputerSystem:system1;
+
+ Strategy Execute_All_Applicable;
+
+ Declaration {
+
+ from = "johndoe@us.ibm.com";
+ to = "johndoe@us.ibm.com";
+ }
+ Policy {
+ Declaration {
+ supportedJavaVersion = "1.5" ;
+ subject = "Java version noncompliance";
+ message = Concatenate( "IBM does not support java :", system1.javaVersion );
+ }
+
+ Condition {
+
+ system1.javaVersion != supportedJavaVersion
+
+ }
+
+ Decision {
+
+ SendMail( from, to, subject, message )
+
+ }
+ }:1;
+
+ </pre>
+<a name="N10037"></a><a name="import_stmt"></a>
+<h3 class="boxed"> Import Statement </h3>
+<p> Declares the anchor classes and the instances of these
+ classes which are referenced throughout the policy. An anchor class encapsulates the state of the
+ system managed using policies</p>
+<p>
+<strong>Syntax: </strong> Import <qualifier> Class <classname> <instance>,...;</p>
+<p>The Qualifier is unused by JavaSPL and there can be more than one Import statements</p>
+<a name="N1004A"></a><a name="strgy_stmt"></a>
+<h3 class="boxed"> Strategy Statement </h3>
+<p> Allows the policy author to specify which of the sub-policies will be executed at execution time</p>
+<ul>
+
+<li>
+<em>Execute_All_Applicable:</em> This strategy specifies that all polices with condition evaluating
+ to true should be executed. The policies are evaluated in the descending order of their priorities. This strategy is useful
+ in conditions when several actions based on several different conditions need to be performed</li>
+
+<li>
+<em>Execute_First_Applicable:</em> This strategy specifies that only the policy with the highest priority with its
+ condition evaluating to true should be executed.</li>
+
+</ul>
+<a name="N10062"></a><a name="decl_stmt"></a>
+<h3 class="boxed">Declaration Statement </h3>
+<p> Allows the policy author to declare constants and macros that can be referenced later on in the policy. Declarations
+ support the paradigm of <em>declare once and use anywhere</em>. The constants and macros declared are visible
+ within the current policy and other embedded policies. The constants declared in the Declaration section after
+ the <em>Strategy </em> Statement are visible throughout the policy</p>
+<p>
+<strong> Constant Declaration: </strong> As the name suggests declares a constant. The syntax is as follows: </p>
+<pre class="code"> <constant> = <expression> </pre>
+<p> The data type of the LHS is determined at compile time as being same as the RHS. During evaluation of a policy the
+ RHS expression is evaluated and its result populated in the symbol table entry for the LHS.</p>
+<pre class="code"> //Example constant declaration
+ Declaration {
+ x = 2;
+ }
+ </pre>
+<p>
+<strong> Macro Declaration: </strong> Macros are actually user defined functions that can be called from within the policy. The Macros
+ can take one or more parameters and return exactly one value. Macros help in simplifying a policy by hiding the complexity of a function
+ in the declaration section. </p>
+<pre class="code"> Macro {
+
+ Name = <string expression>;
+ type = <type constant>;
+ argument = <argumentname:argumenttype>,...;
+ procedure = <expression with type same as the one declared in the type field of Macro>
+ }
+ // type constants of SPL are : Sint8, Sint16, Sint32, Sint64, Real32, Real64, String, DateTime, Boolean, Char16
+ </pre>
+<pre class="code">
+ //Example of a Macro Declaration
+ Declaration {
+ Macro /* macro that calculates avrg of 2 nos */
+ {
+ Name = GetAverage; /* Name of the macro */
+ type = Real64; /* Return type */
+ argument = number1:Sint64,number2:Sint64; /* Input parameters and types */
+ procedure = (number1 + number2) / 2 /* Actual code */
+ }
+
+ // Sample invocation
+
+ ...
+ Condition {
+ 2 > GetAverage(8,4)
+ }
+
+ }
+
+ </pre>
+<a name="N10093"></a><a name="pol_stmt"></a>
+<h3 class="boxed"> Policy Statement </h3>
+<p> Consists of a "if" "then" style rule. The "if" is specified using
+ the <em>Condition</em> Statement and the "then" specified using the <em>Decision</em> Statement</p>
+<p>
+<strong> Condition Statement:</strong> Consists of a boolean expression. If the Condition statement is absent it is assumed
+ to be true. </p>
+<pre class="code">
+ // Condition example
+ Condition {
+ freeMemory < freememorythreshold
+
+ }
+
+
+ </pre>
+<p>
+<strong> Decision Statement: </strong> Is a required statement that consists of one or more actions
+ arranged in a sequence using the decision operators. </p>
+<p>
+<strong> Types of Actions:</strong>
+</p>
+<ul>
+
+<li> Invoke a method on the imported anchor class instance.
+ <p><instancename>.<method name>(<expression>[,<expression>]*) <boolean operator> <numeric return code></p>
+
+<pre class="code">
+ // Example of invoke method action
+ anchorInstance1.method1("xx", 2) == 0
+
+ </pre>
+
+
+</li>
+
+<li>
+ Modify the properties of the imported anchor class instance.
+ <p> Set(<instanceName>.<argument name>=<expression>[,<argument name> = <expression>]*)</p>
+
+<pre class="code">
+ //Example of set property action
+ Set(anchorInstance1.property1 = 2, anchorInstance1.property2 = "x")
+ </pre>
+
+
+</li>
+
+<li>
+ Invoke a custom action. Custom actions are user created actions that are made available to the policy runtime as a jar.
+ The ability to define custom actions enables the SPL language to be extended or customized for a user's environment.
+ <p> <custom action name>(<expression>[,<expression>]*) </p>
+
+<pre class="code">
+ //Example of a custom action
+ SendMail("xxx@mail.com","yyy@mail.com","hello","hi how are you?")
+
+ </pre>
+
+
+
+
+</li>
+
+
+
+</ul>
+<p>
+<strong>Ordering the Actions:</strong>
+</p>
+<ul>
+
+<li>
+
+<p> If-Then action ordering. </p>
+
+<p> Execute action block1 if that succeeds then execute action block2. The result of executing the action block2
+ will be returned. If action block1 execution fails return without execution action block2 with failure. </p>
+
+<p> <action block1> -> <action block2> </p>
+
+<pre class="code">
+ // If-Then action
+ Decision { //Clean up the system and if that succeeds send out an email
+ system.cleanup() -> SendMail(...)
+ }
+
+ </pre>
+
+<div class="note">
+<div class="label">Note</div>
+<div class="content"> An action is deemed a success if no exceptions are thrown and if the returned value satisfies
+ the constant boolean expression.</div>
+</div>
+
+</li>
+
+<li>
+
+<p> Concurrency "some semantics " action ordering. </p>
+
+<p> Both action blocks are executed concurrently. If either of the action blocks executes successfully the
+ entire execution is deemed successful.</p>
+
+<p> <action block1> || <action block2> </p>
+
+<pre class="code">
+ // Concurrency some semantics action
+ Decision { //Clean up the system and send out an email
+ system.cleanup() || SendMail(...)
+ }
+
+ </pre>
+
+
+</li>
+
+<li>
+
+<p> Concurrency "all semantics " action ordering. </p>
+
+<p> Both action blocks are executed concurrently. Both action blocks should execute successfully for
+ entire execution to be deemed successful.</p>
+
+<p> <action block1> && <action block2> </p>
+
+<pre class="code">
+ // Concurrency all semantics action
+ Decision { //Clean up the system and send out an email
+ system.cleanup() && SendMail(...)
+ }
+
+ </pre>
+
+
+</li>
+
+<li>
+
+<p> Conditional action ordering. </p>
+
+<p> Action block1 is executed first if that fails only then action block2 is executed. If action block1 succeeds then
+ the block returns with success, if block 1 fails then the result of execution will be whatever block2 returns.</p>
+
+<p> <action block1> | <action block2> </p>
+
+<pre class="code">
+ // Conditional action
+ Decision { //Clean up the system if that fials send out an email
+ system.cleanup() | SendMail(...)
+ }
+
+ </pre>
+
+
+</li>
+
+
+</ul>
+<p>
+<strong> Priority: </strong> Priority is an integral value assigned to each policy that determines the relative
+ order of execution among subpolicies. Higher number implies higher priority</p>
+<pre class="code">
+ Policy {
+ ...
+ }1;
+
+ </pre>
+</div>
+
+<a name="N10132"></a><a name="datatypes"></a>
+<h2 class="boxed"> SPL Data Types </h2>
+<div class="section">
+<p> SPL supports all the basic Java data types along with the arrays of the data types </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> SPL and Java data types comparison</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">SPL Data Type</th>
+ <th colspan="1" rowspan="1">Java Data Type</th>
+ <th colspan="1" rowspan="1">Notes </th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Sint8</strong></td>
+ <td colspan="1" rowspan="1">byte</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Sint16</strong></td>
+ <td colspan="1" rowspan="1">short</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Sint32</strong></td>
+ <td colspan="1" rowspan="1">int</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Sint64</strong></td>
+ <td colspan="1" rowspan="1">long</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Real32</strong></td>
+ <td colspan="1" rowspan="1">float</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Real64</strong></td>
+ <td colspan="1" rowspan="1">double</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Char16</strong></td>
+ <td colspan="1" rowspan="1">char</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>String</strong></td>
+ <td colspan="1" rowspan="1">String</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>DateTime</strong></td>
+ <td colspan="1" rowspan="1">Calendar</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Reference</strong></td>
+ <td colspan="1" rowspan="1">Java object</td>
+ <td colspan="1" rowspan="1">Any Java object</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Boolean</strong></td>
+ <td colspan="1" rowspan="1">boolean</td>
+ <td colspan="1" rowspan="1"></td>
+
+</tr>
+
+
+
+</table>
+</div>
+
+<a name="N1021D"></a><a name="builtin_ops"></a>
+<h2 class="boxed">SPL Built-in Operators</h2>
+<div class="section">
+<p> SPL ships with over a 100 core Operators. These operators are especially useful
+ while defining complex conditions within a policy. New custom operators can be added to
+ enhance SPL to work with a user's specific need. </p>
+<a name="N10226"></a><a name="numeric_ops"></a>
+<h3 class="boxed"> Numeric Operators </h3>
+<p> These operators perform numeric calculations on numeric operands. The implementation is largely
+ the encapsulation of the Java Math operations.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Numeric Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>+</strong></td>
+ <td colspan="1" rowspan="1">Returns the sum of two given numeric expressions</td>
+ <td colspan="1" rowspan="1">(<numeric expression1> + <numeric expression2> )</td>
+ <td colspan="1" rowspan="1"> 2 + 4 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>/</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of dividing two numeric expressions</td>
+ <td colspan="1" rowspan="1">(<numeric expression1> / <numeric expression2> )</td>
+ <td colspan="1" rowspan="1"> 4 / 2 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>*</strong></td>
+ <td colspan="1" rowspan="1">Returns the product of numeric expression1 and numeric expression2 </td>
+ <td colspan="1" rowspan="1">(<numeric expression1> * <numeric expression2>)</td>
+ <td colspan="1" rowspan="1"> (2*2) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>-</strong></td>
+ <td colspan="1" rowspan="1">Subtracts numeric argument 2 from numeric argument 1 </td>
+ <td colspan="1" rowspan="1">(<numeric expression1> - <numeric expression2>)</td>
+ <td colspan="1" rowspan="1"> (4 - 2) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Abs</strong></td>
+ <td colspan="1" rowspan="1">Returns the absolute value of the given numeric expression</td>
+ <td colspan="1" rowspan="1">Abs( <numeric expression> )</td>
+ <td colspan="1" rowspan="1"> Abs(2.4) </td>
+
+</tr>
+
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Ceiling</strong></td>
+ <td colspan="1" rowspan="1">Returns the closest integer greater than or equal to the given numeric expressions</td>
+ <td colspan="1" rowspan="1">Ceiling(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Ceiling(2.4) </td>
+
+</tr>
+
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Exp</strong></td>
+ <td colspan="1" rowspan="1">Returns the exponential value of the given numeric expressions</td>
+ <td colspan="1" rowspan="1">Exp(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Exp(2) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Floor</strong></td>
+ <td colspan="1" rowspan="1">Returns the closest integer smaller than or equal to the given numeric expressions</td>
+ <td colspan="1" rowspan="1">Floor(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Floor(2.4) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Ln</strong></td>
+ <td colspan="1" rowspan="1">Returns the natural log of the given numeric expressions</td>
+ <td colspan="1" rowspan="1">Ln(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Ln(2.4) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Log10</strong></td>
+ <td colspan="1" rowspan="1">Returns the log to the base 10 of the given numeric expressions</td>
+ <td colspan="1" rowspan="1">Log10(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Log10(2.4) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Mod</strong></td>
+ <td colspan="1" rowspan="1">Returns the remainder after diving numeric expression1 with numeric expression2</td>
+ <td colspan="1" rowspan="1">(<numeric expression1> % <numeric expression2>)</td>
+ <td colspan="1" rowspan="1"> (4%2) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Power</strong></td>
+ <td colspan="1" rowspan="1">Returns the numeric value after raising numeric expression1 to the power of numeric expression2 </td>
+ <td colspan="1" rowspan="1">Power(<numeric expression1> , <numeric expression2>)</td>
+ <td colspan="1" rowspan="1"> Power(2,2) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Rint</strong></td>
+ <td colspan="1" rowspan="1">Rounds to the closest integer </td>
+ <td colspan="1" rowspan="1">Rint(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Rint(2.4) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Round</strong></td>
+ <td colspan="1" rowspan="1">Adds 0.5 to the argument and returns the closest integer </td>
+ <td colspan="1" rowspan="1">Round(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Round(2.4) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>SquareRoot</strong></td>
+ <td colspan="1" rowspan="1">Returns the square root of the given numeric expressions </td>
+ <td colspan="1" rowspan="1">SquareRoot(<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> SquareRoot(4) </td>
+
+</tr>
+
+
+
+</table>
+<a name="N103B5"></a><a name="Comp_ops"></a>
+<h3 class="boxed"> Comparison Operators </h3>
+<p> As the name suggests these operators perform comparisons among type comparable
+ operands. The return value is always Boolean. </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Comparison Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>==</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the given two comparable expressions are equal</td>
+ <td colspan="1" rowspan="1">( <expression1> == <expression2> )</td>
+ <td colspan="1" rowspan="1"> 2 == 2 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>></strong></td>
+ <td colspan="1" rowspan="1">Returns true if the value of expression1 is greater than the value of expression2. The given two expressions need to be comparable</td>
+ <td colspan="1" rowspan="1">( <expression1> > <expression2> )</td>
+ <td colspan="1" rowspan="1"> 5 > 4 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>>=</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the value of expression1 is greater than or equal to the value of expression2. The given two expressions need to be comparable
+ Only permitted on String, numeric or calendar types</td>
+ <td colspan="1" rowspan="1">( <expression1> >= <expression2> )</td>
+ <td colspan="1" rowspan="1"> 5 >= 5 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong><</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the value of expression1 is less than the value of expression2. The given two expressions need to be comparable
+ Only permitted on String, numeric or calendar types</td>
+ <td colspan="1" rowspan="1">( <expression1> < <expression2> )</td>
+ <td colspan="1" rowspan="1"> 3 < 4 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong><=</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the value of expression1 is less than or equal to the value of expression2. The given two expressions need to be comparable
+ Only permitted on String, numeric or calendar types</td>
+ <td colspan="1" rowspan="1">( <expression1> <= <expression2> )</td>
+ <td colspan="1" rowspan="1"> 3 <= 4 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>!=</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the given two comparable expressions are not equal</td>
+ <td colspan="1" rowspan="1">( <expression1> != <expression2> )</td>
+ <td colspan="1" rowspan="1"> 2 != 4 </td>
+
+</tr>
+
+
+</table>
+<a name="N1046C"></a><a name="bool_ops"></a>
+<h3 class="boxed"> Boolean Operators </h3>
+<p>These operators perform Logical operations like And, Or, Xor on Boolean operands.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Boolean Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>&&</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of a logical and on the two given boolean expressions</td>
+ <td colspan="1" rowspan="1">( <boolean expression1> && <boolean expression2> )</td>
+ <td colspan="1" rowspan="1"> true && true </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>!</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of a logical not on the given boolean expression</td>
+ <td colspan="1" rowspan="1">!(<boolean expression> )</td>
+ <td colspan="1" rowspan="1"> !(false) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>||</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of a logical Or on the given two boolean expressions</td>
+ <td colspan="1" rowspan="1">(<boolean expression1> || <boolean expression2> )</td>
+ <td colspan="1" rowspan="1"> (false || true) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>^</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of a logical XOr on the given two boolean expressions</td>
+ <td colspan="1" rowspan="1">(<boolean expression1> ^ <boolean expression2> )</td>
+ <td colspan="1" rowspan="1"> (false ^ true) </td>
+
+</tr>
+
+</table>
+<a name="N104F3"></a><a name="string_ops"></a>
+<h3 class="boxed"> String Operators</h3>
+<p> A group of operators that deal with string operands. These include operators to manipulate strings
+ or test strings for specific patterns. </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> String Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Concatenate</strong></td>
+ <td colspan="1" rowspan="1">Returns the result of concatenating the two given string expressions</td>
+ <td colspan="1" rowspan="1">Concatenate( <string expression1>, <string expression2> )</td>
+ <td colspan="1" rowspan="1"> Concatenate("x","y") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Contains</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 contains string expression2</td>
+ <td colspan="1" rowspan="1">Contains( <string expression1>, <string expression2> )</td>
+ <td colspan="1" rowspan="1"> Contains("xyz","y") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ContainsOnlyDigits</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 only contains digits</td>
+ <td colspan="1" rowspan="1">ContainsOnlyDigits( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> ContainsOnlyDigits("100") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ContainsOnlyLetters</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 only contains letters</td>
+ <td colspan="1" rowspan="1">ContainsOnlyLetters( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> ContainsOnlyLetters("abc") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ContainsOnlyLettersOrDigits</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 only contains letters or digts</td>
+ <td colspan="1" rowspan="1">ContainsOnlyLettersOrDigits( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> ContainsOnlyLettersOrDigits("abc12") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>EndsWith</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 ends with string expression2</td>
+ <td colspan="1" rowspan="1">EndsWith( <string expression1>,<string expression2>)</td>
+ <td colspan="1" rowspan="1"> EndsWith("abc12","12") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>LeftSubString</strong></td>
+ <td colspan="1" rowspan="1">The LeftSubstring operator returns a prefix of a given string argument by taking three arguments.
+ How to compute the prefix is determined by the arguments. The first argument MUST be a string and
+ it indicates the given string, the second argument MUST be either an integer or a string indicating
+ an offset, and the third argument MUST be a string indicating a direction and is either
+ "LeftToRight" or "RightToLeft". When the offset is given by a number, the prefix is determined by
+ counting the character position by the offset from either left to right (from the beginning of the string)
+ or from right to left (from the end of the string). In particular, if the direction is "LeftToRight",
+ the offset indicates the number of characters to return from the beginning of the string.
+ If the direction is "RightToLeft", the offset indicates the number of characters to skip from the end of
+ the string. For example, leftSubstring("Mississippi", 4, "LeftToRight") returns "Miss", and
+ leftSubstring("Mississippi", 4, "RightToLeft") returns "Mississ".
+ When the offset is given by a string, the prefix is determined by searching for the offset string in the
+ original string in the direction specified by the third parameter. The returned substring consists of the
+ characters on the left side of the offset string</td>
+ <td colspan="1" rowspan="1">LeftSubString( <string expression1>,<numeric expression2>,<string expression3>)</td>
+ <td colspan="1" rowspan="1"> LeftSubString("StateSymbolAndZip",2, "LefToRight") //get the state</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>MatchesRegExp</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 matches the regular expression defined by string expression2</td>
+ <td colspan="1" rowspan="1">MatchesRegExp( <string expression1>,<string expression2>)</td>
+ <td colspan="1" rowspan="1"> MatchesRegExp("cat","cat") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>MiddleSubString</strong></td>
+ <td colspan="1" rowspan="1">The MiddleSubstring operator returns a middle portion of a given string using various arguments as filters.
+ How to compute the suffix is determined by the arguments. MiddleSubstring takes four arguments:
+ original string, first offset, second offset, and direction string. The first and second offsets MUST
+ be specified either by a number or a string. The direction string can be either "LeftToRight" or "RightToLeft".
+ The meaning of the first offset is similar to that in the rightSubstring: it indicates where the resulting
+ substring starts scanning, either from the left or from the right based on the direction string. The meaning
+ of the second offset is as follows: if it is a number, it simply indicates the number of characters to return;
+ if it is a string, it specifies where the substring should end.</td>
+ <td colspan="1" rowspan="1">MiddleSubString( <string expression1>,<expression2>,<expression1>,<string expression1>)</td>
+ <td colspan="1" rowspan="1"> middleSubstring("Mississippi", 4, 5, "LeftToRight") = "issip"
+ middleSubstring("Mississippi", 4, 5, "RightToLeft") = "ippi"
+ middleSubstring("Mississippi", "ss", 5, "LeftToRight") = "issip"
+ middleSubstring("Mississippi", "ss", 5, "RightToLeft") = "ippi"
+ middleSubstring("Mississippi", 4, "ss", "LeftToRight") = "i"
+ middleSubstring("Mississippi", 4, "ss", "RightToLeft") = ""
+ middleSubstring("Mississippi", "ss", "ip", "LeftToRight") = "iss"
+ middleSubstring("Mississippi", "ss", "ip", "RightToLeft") = "Missi"
+ </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ReplaceSubString</strong></td>
+ <td colspan="1" rowspan="1">Returns a string resulting from replacing all instances of the
+ fromSubstring with toSubstring in a given string.</td>
+ <td colspan="1" rowspan="1">MatchesRegExp( <string expression1>,<from string expression>,<to string expression>)</td>
+ <td colspan="1" rowspan="1"> ReplaceSubString(name,"cat","dog") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>RightSubString</strong></td>
+ <td colspan="1" rowspan="1">The RightSubstring operator returns a suffix of a given string argument by taking three arguments.
+ How to compute the suffix is determined by the arguments. The first argument MUST be a string and it indicates
+ the given string, the second argument MUST be either an integer or a string indicating an offset,
+ and the third argument MUST be a string indicating a direction and is either "LeftToRight" or "RightToLeft".
+ When the offset is given by a number, the suffix is determined by simply counting the character position by the
+ offset from either left to right (from the beginning of the string) or from right to left (from the end of the string).
+ In particular, if the direction "RightToLeft", the offset indicates the number of characters to return as a suffix.
+ If the direction is "LeftToRight", the offset indicates the number of characters to skip from the beginning of the string.
+ Refer the CIM-SPL specification for more details.</td>
+ <td colspan="1" rowspan="1">RightSubString( <string expression1>,<numeric expression2>,<string expression3>)</td>
+ <td colspan="1" rowspan="1"> RightSubString("StateSymbolAndZip",2, "LefToRight") //get the zip </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>StartsWith</strong></td>
+ <td colspan="1" rowspan="1">Returns true if string expression1 starts with string expression2</td>
+ <td colspan="1" rowspan="1">StartsWith( <string expression1>,<string expression2>)</td>
+ <td colspan="1" rowspan="1"> StartsWith("just a test","just") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>StringLength</strong></td>
+ <td colspan="1" rowspan="1">Returns the string length</td>
+ <td colspan="1" rowspan="1">StringLength( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> StringLength("string") //6 </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>SubString</strong></td>
+ <td colspan="1" rowspan="1">The substring operator takes either two or three arguments. The first and second arguments of this operator
+ are REQUIRED while the third argument is OPTIONAL. The first argument of this operator MUST be a string argument,
+ while the second and third argument MUST be integer argument. This operator MUST return the substring of the first
+ string argument, starting at the position indicated by the second numeric argument and going to the end of the
+ string or the position indicated by the third numeric argument - 1. The position of a character is determined as
+ follows: The first character is at position 0, the second character is at position 1, and so on.
+ The second numeric argument MUST be greater than or equal to 0. The third numeric argument MUST be greater
+ than the second numeric argument if the third argument is present. If the starting position given by the second
+ numeric argument greater than the length of the string, an empty string SHALL be returned. If the third numeric
+ position is not present, the string starting at the second numeric position until the end of the string SHALL be returned.
+ Refer the CIM-SPL specification for more details.
+ </td>
+ <td colspan="1" rowspan="1">SubString( <string expression1>,<numeric expression2>,[<numeric expression2>])</td>
+ <td colspan="1" rowspan="1"> SubString("Robert Hancock", 2, 8) //returns bert H </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Word</strong></td>
+ <td colspan="1" rowspan="1">This operator MUST take three argument. The first two argument MUST be of type string and the third
+ argument MUST be of type number. This operator MUST extracts n words from the first string argument where
+ the third argument specifies the number n. Words are defined as text between the separator
+ substring given by the second argument. Refer the CIM-SPL specification for more details.</td>
+ <td colspan="1" rowspan="1">Word( <string expression1>,<seperator string expression>,<numeric expression>)</td>
+ <td colspan="1" rowspan="1"> Word("alpha"," ",3) </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToUpper</strong></td>
+ <td colspan="1" rowspan="1">Converts the argument string to uppercase </td>
+ <td colspan="1" rowspan="1">ToUpper( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> ToUpper("alpha") // returns "ALPHA" </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToLower</strong></td>
+ <td colspan="1" rowspan="1">Converts the argument string to lowercase </td>
+ <td colspan="1" rowspan="1">ToLower( <string expression1>)</td>
+ <td colspan="1" rowspan="1"> ToLower("ALPHA") // returns "alpha" </td>
+
+</tr>
+
+</table>
+<a name="N106B2"></a><a name="coll_ops"></a>
+<h3 class="boxed"> Collection Operators </h3>
+<p> These are array manipulation and comparison operators. These operators encapsulate the complexity of
+ traditional programming language constructs like loops and make the language more readable and maintainable.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Collection Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>AllInCollection</strong></td>
+ <td colspan="1" rowspan="1">Checks whether all objects in a collection have a given property. The valid operator constant strings are
+ "OR", "AND", "XOR", "NOT_EQUAL", "EQUAL", "LESS", "GREATER",
+ "LESS_OR_EQUAL", "GREATER_OR_EQUAL"</td>
+ <td colspan="1" rowspan="1">AllInCollection( <expression1>, <boolean or relational operator constant string> <collection>)</td>
+ <td colspan="1" rowspan="1"> AllInCollection(2,"LESS",arr) //where arr = [5,6,7] returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>AnyInCollection</strong></td>
+ <td colspan="1" rowspan="1">Checks whether any object in a collection has a given property. The valid operator constant strings are
+ "OR", "AND", "XOR", "NOT_EQUAL", "EQUAL", "LESS", "GREATER",
+ "LESS_OR_EQUAL", "GREATER_OR_EQUAL"</td>
+ <td colspan="1" rowspan="1">AnyInCollection( <expression1>, <boolean or relational operator constant string> <collection>)</td>
+ <td colspan="1" rowspan="1"> AnyInCollection(2,"LESS",arr) //where arr = [1,6,7] returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ApplyToCollection</strong></td>
+ <td colspan="1" rowspan="1">Applies an arithmetic operation to each element in a collection. The valid operator constant strings are
+ "PLUS ","MINUS ","MULTIPLY","DIVIDE",
+ </td>
+ <td colspan="1" rowspan="1">ApplyToCollection( <expression1>, <arithmetic operator constant string> <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> ApplyToCollection(2,"PLUS",arr) //where arr = [1,6,7] returns arr ] [3,8,9]</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>AvrgInCollection</strong></td>
+ <td colspan="1" rowspan="1">Calculates the average of a numeric collection. </td>
+ <td colspan="1" rowspan="1">AvrgInCollection( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> AvrgInCollection(arr) //where arr = [2,3] returns 2.5</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>CollectionSize</strong></td>
+ <td colspan="1" rowspan="1">Returns the size of the collection </td>
+ <td colspan="1" rowspan="1">CollectionSize( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> CollectionSize(arr) //where arr = [2,3,4] returns 3</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>EqCollection</strong></td>
+ <td colspan="1" rowspan="1">Returns true if two collections of comparable types are equal </td>
+ <td colspan="1" rowspan="1">EqCollection( <collection1>,<collection2>)</td>
+ <td colspan="1" rowspan="1"> EqCollection(arr1,arr2) //where arr1 = [2,3,4] and arr2 = [2,3,4] returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>InCollection</strong></td>
+ <td colspan="1" rowspan="1">Returns true if the given value is a member of the collection (of compatible type) </td>
+ <td colspan="1" rowspan="1">InCollection( <expression>,<collection>)</td>
+ <td colspan="1" rowspan="1"> EqCollection(2,arr1) //where arr1 = [2,3,4] returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Max</strong></td>
+ <td colspan="1" rowspan="1">Returns greatest value in a numeric collection </td>
+ <td colspan="1" rowspan="1">Max( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> Max(arr1) //where arr1 = [2,3,4] returns 4</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Min</strong></td>
+ <td colspan="1" rowspan="1">Returns smallest value in a numeric collection </td>
+ <td colspan="1" rowspan="1">Min( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> Min(arr1) //where arr1 = [2,3,4] returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>MedianInCollection</strong></td>
+ <td colspan="1" rowspan="1">Calculates the median of a numeric collection. </td>
+ <td colspan="1" rowspan="1">MedianInCollection( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> MedianInCollection(arr) //where arr = [2,3,4] returns 3</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>SdInCollection</strong></td>
+ <td colspan="1" rowspan="1">Calculates the standard deviation of a numeric collection. </td>
+ <td colspan="1" rowspan="1">SdInCollection( <numeric collection>)</td>
+ <td colspan="1" rowspan="1"> SdInCollection(arr) //where arr = [2,3,4] returns 0.81</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>SubCollection</strong></td>
+ <td colspan="1" rowspan="1">Checks whether collection2 is a subset of collection1</td>
+ <td colspan="1" rowspan="1">SubCollection( <collection1>,<collection2>)</td>
+ <td colspan="1" rowspan="1"> SubCollection(arr,arr2) //where arr = [2,3,4] and arr2 = [3,4] returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Union</strong></td>
+ <td colspan="1" rowspan="1">Creates a union of 2 collections</td>
+ <td colspan="1" rowspan="1">Union( <collection1>,<collection2>)</td>
+ <td colspan="1" rowspan="1"> Union(arr,arr2) //where arr = [2,3,4] and arr2 = [5,6] returns [2,3,4,5,6]</td>
+
+</tr>
+
+</table>
+<a name="N10811"></a><a name="calendar_ops"></a>
+<h3 class="boxed"> Calendar Operators</h3>
+<p> These operators allow comparison and retrieval of Date-Time related attributes.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Calendar Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetCurrentTime</strong></td>
+ <td colspan="1" rowspan="1">Returns the current system date time</td>
+ <td colspan="1" rowspan="1">GetCurrentTime()</td>
+ <td colspan="1" rowspan="1"> GetCurrentTime() </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetDayOfMonth</strong></td>
+ <td colspan="1" rowspan="1">Returns the day of month for the given datetime argument. The argument must be either
+ a string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetDayOfMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetDayOfMonth("20071013143920.000000-300") //returns 13</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetDayOfWeek</strong></td>
+ <td colspan="1" rowspan="1">Returns the day of week for the given datetime argument. Sunday = 1, Monday = 2 etc
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetDayOfMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetDayOfMonth("20081013143920.000000-300") //returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetDayOfWeekInMonth</strong></td>
+ <td colspan="1" rowspan="1">MUST return the day of the week in month of the REQUIRED DATETIME argument as a numeric value, e.g.,
+ the DAY_OF_MONTH 1 through 7 always correspond to DAY_OF_WEEK_IN_MONTH 1; 8 through 14 correspond
+ to DAY_OF_WEEK_IN_MONTH 2, and so on. DAY_OF_WEEK_IN_MONTH 0 indicates the week before DAY_OF_WEEK_IN_MONTH 1.
+ Negative values count back from the end of the month, so the last Sunday of a month is specified as
+ DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetDayOfWeekInMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetDayOfWeekInMonth("20081013143920.000000-300") //returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetDayOfYear</strong></td>
+ <td colspan="1" rowspan="1">Returns the day of year for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetDayOfMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetDayOfMonth("20080113143920.000000-300") //returns 13</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetHour12</strong></td>
+ <td colspan="1" rowspan="1">Returns the hour for the given datetime argument in 12 hr format.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetHour12(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetHour12("20080113143920.000000-300") //returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetHour24</strong></td>
+ <td colspan="1" rowspan="1">Returns the hour for the given datetime argument in 24 hr format.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetHour12(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetHour12("20080113143920.000000-300") //returns 14</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetMillisecond</strong></td>
+ <td colspan="1" rowspan="1">Returns the millisecond for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetHour12(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetHour12("20080113143920.000234-300") //returns 234</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetMinute</strong></td>
+ <td colspan="1" rowspan="1">Returns the minute for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetMinute(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetMinute("20080113143920.000234-300") //returns 39</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetMonth</strong></td>
+ <td colspan="1" rowspan="1">Returns the month for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetMonth("20080113143920.000234-300") //returns 1</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetSecond</strong></td>
+ <td colspan="1" rowspan="1">Returns the second for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetSecond(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetSecond("20080113143920.000234-300") //returns 20</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetWeekOfMonth</strong></td>
+ <td colspan="1" rowspan="1">Returns the week within the month for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetWeekOfMonth(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetWeekOfMonth("20080113143920.000234-300") //returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetWeekOfYear</strong></td>
+ <td colspan="1" rowspan="1">Returns the week of the year for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetWeekOfYear(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetWeekOfYear("20080113143920.000234-300") //returns 2</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>GetYear</strong></td>
+ <td colspan="1" rowspan="1">Returns the year for the given datetime argument.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">GetYear(<datetime>)</td>
+ <td colspan="1" rowspan="1"> GetYear("20080113143920.000234-300") //returns 2008</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>IsAfter</strong></td>
+ <td colspan="1" rowspan="1">Returns true if date argument1 is after date argument2.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">IsAfter(<datetime1>,<datetime2>)</td>
+ <td colspan="1" rowspan="1"> IsAfter("20080113143920.000234-300","20070113143920.000234-300") //returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>IsBefore</strong></td>
+ <td colspan="1" rowspan="1">Returns true if date argument1 is before date argument2.
+ The argument must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">IsBefore(<datetime1>,<datetime2>)</td>
+ <td colspan="1" rowspan="1"> IsBefore("20080113143920.000234-300","20070113143920.000234-300") //returns false</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>IsWithin</strong></td>
+ <td colspan="1" rowspan="1">Returns true if date argument1 is within date argument2 and argument3.
+ The arguments must be eithera string of the form yyyymmddHHMMSS.mmmmmmsUUU or a java.util.Calendar</td>
+ <td colspan="1" rowspan="1">IsWithin(<datetime1>,<datetime2>,<datetime3>)</td>
+ <td colspan="1" rowspan="1">IsWithin("20070113143920.000234-300","20060113143920.000234-300","20080113143920.000234-300") //returns false</td>
+
+</tr>
+
+</table>
+<a name="N109D0"></a><a name="Unary_ops"></a>
+<h3 class="boxed"> Unary Operators</h3>
+<p> As the name suggests these operators require only a single operand.</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Unary Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Unary Minus operator</strong></td>
+ <td colspan="1" rowspan="1">Negates a numeric expression</td>
+ <td colspan="1" rowspan="1">-(<expression>)</td>
+ <td colspan="1" rowspan="1"> -(2+4)</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Unary Plus operator</strong></td>
+ <td colspan="1" rowspan="1">Leaves a numeric expression unchanged</td>
+ <td colspan="1" rowspan="1">+(<expression>)</td>
+ <td colspan="1" rowspan="1"> +(2+4)</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>Unary Not operator</strong></td>
+ <td colspan="1" rowspan="1">Negates a boolean expression</td>
+ <td colspan="1" rowspan="1">!(<boolean expression>)</td>
+ <td colspan="1" rowspan="1"> !(true)</td>
+
+</tr>
+
+</table>
+<a name="N10A3F"></a><a name="Cast_ops"></a>
+<h3 class="boxed"> Cast Operators </h3>
+<p> These are transformation operators that allow legal conversions between
+ different data types. Note: General rules of widening and shortening conversions apply. </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Cast Operators</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToBoolean</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to boolean</td>
+ <td colspan="1" rowspan="1">ToBoolean(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToBoolean("true") // returns true</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToREAL32</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to float</td>
+ <td colspan="1" rowspan="1">ToReal32(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToReal32(4) // returns 4.0</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToREAL64</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to double</td>
+ <td colspan="1" rowspan="1">ToReal64(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToReal64(4) // returns 4.0</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToSINT16</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to short</td>
+ <td colspan="1" rowspan="1">ToSINT16(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToSINT16(4) // returns 4</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToSINT32</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to int</td>
+ <td colspan="1" rowspan="1">ToSINT32(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToSINT32(4.0) // returns 4</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToSINT64</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to long</td>
+ <td colspan="1" rowspan="1">ToSINT64(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToSINT64(4) // returns 4</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToSINT8</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to byte</td>
+ <td colspan="1" rowspan="1">ToSINT8(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToSINT8(4) // returns 4</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ToString</strong></td>
+ <td colspan="1" rowspan="1">Converts an expression to string</td>
+ <td colspan="1" rowspan="1">ToString(<expression>)</td>
+ <td colspan="1" rowspan="1"> ToString(4) // returns "4"</td>
+
+</tr>
+
+</table>
+</div>
+
+<a name="N10B27"></a><a name="builtin_actions"></a>
+<h2 class="boxed">Built in Actions </h2>
+<div class="section">
+<p> SPL comes out of the box with a set of Actions. Users can extend the SPL action set by adding
+ their own custom actions. </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<caption> Core SPL Actions</caption>
+
+<tr>
+
+<th colspan="1" rowspan="1">Name</th>
+ <th colspan="1" rowspan="1">Description</th>
+ <th colspan="1" rowspan="1">Syntax</th>
+ <th colspan="1" rowspan="1">Example</th>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>ReturnValues</strong></td>
+ <td colspan="1" rowspan="1">Allows the objects to be returned after policy execution.</td>
+ <td colspan="1" rowspan="1">ReturnValues(<expression>,[<expression>]*)</td>
+ <td colspan="1" rowspan="1"> ReturnValues("xx") // returns String "xx"</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>SendMail</strong></td>
+ <td colspan="1" rowspan="1">Sends an email to the given email address with the given subject and message body.
+ Note: SendMail is not a core action but is provided as an example of a custom action.
+ </td>
+ <td colspan="1" rowspan="1">SendMail(<from address string expression>,<to address string expression>,<subject string expression>,<message body string expression>)</td>
+ <td colspan="1" rowspan="1"> SendMail("from@mail.com","to@mail.com","hi","whaddup?") </td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1"><strong>CommandLineExecution</strong></td>
+ <td colspan="1" rowspan="1">Executes a shell or batch command.
+ Note: CommandLineExecution is not a core action but is provided as an example of a custom action.
+ </td>
+ <td colspan="1" rowspan="1">CommandLineExecution(<string command expression>)</td>
+ <td colspan="1" rowspan="1"> CommandLineExecution("cleanmgr /sagerun:128") </td>
+
+</tr>
+
+</table>
+</div>
+
+<a name="N10B96"></a><a name="refs"></a>
+<h2 class="boxed"> References </h2>
+<div class="section">
+<ul>
+
+<li>
+<a href="http://www.dmtf.org/standards/published_documents/DSP0231.pdf">CIM-SPL Specification</a>
+</li>
+
+</ul>
+</div>
+
+
+
+
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2007-2008 <a href="http://www.apache.org/">Apache Software Foundation.</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: incubator/imperius/site/build/site/en/docs/spl_reference.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/imperius/site/build/site/en/download/download.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/download/download.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/download/download.html (original)
+++ incubator/imperius/site/build/site/en/download/download.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li class="current">
<a class="selected" href="../download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="../docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="../community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
Modified: incubator/imperius/site/build/site/en/index.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/index.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/index.html (original)
+++ incubator/imperius/site/build/site/en/index.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -121,6 +127,9 @@
<div id="menu_1.3" class="menuitemgroup">
<div class="menuitem">
<a href="docs/getting_started.html" title="Get Started">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
</div>
<div class="menuitem">
<a href="docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
Modified: incubator/imperius/site/build/site/en/license.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/license.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/license.html (original)
+++ incubator/imperius/site/build/site/en/license.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -121,6 +127,9 @@
<div id="menu_1.3" class="menuitemgroup">
<div class="menuitem">
<a href="docs/getting_started.html" title="Get Started">Getting Started</a>
+</div>
+<div class="menuitem">
+<a href="docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
</div>
<div class="menuitem">
<a href="docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
Modified: incubator/imperius/site/build/site/en/linkmap.html
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/site/en/linkmap.html?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/site/en/linkmap.html (original)
+++ incubator/imperius/site/build/site/en/linkmap.html Tue Feb 5 11:28:59 2008
@@ -66,6 +66,12 @@
<li>
<a class="unselected" href="download/download.html">Download</a>
</li>
+<li>
+<a class="unselected" href="docs/getting_started.html">Documentation</a>
+</li>
+<li>
+<a class="unselected" href="community/contribute.html">Community</a>
+</li>
</ul>
<!--+
|end Tabs
@@ -123,6 +129,9 @@
<a href="docs/getting_started.html" title="Get Started">Getting Started</a>
</div>
<div class="menuitem">
+<a href="docs/spl_reference.html" title="SPL Language Reference">SPL Language Reference</a>
+</div>
+<div class="menuitem">
<a href="docs/javaspl_user_guide.html" title="User Guide">JavaSPL User Guide</a>
</div>
<div class="menuitem">
@@ -218,6 +227,11 @@
<ul>
<li>
<a href="docs/getting_started.html">Getting Started</a> ___________________ <em>gettingstarted</em> : Get Started</li>
+</ul>
+
+<ul>
+<li>
+<a href="docs/spl_reference.html">SPL Language Reference</a> ___________________ <em>splreference</em> : SPL Language Reference</li>
</ul>
<ul>
Modified: incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.data
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.data?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
Binary files - no diff available.
Modified: incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.index
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/tmp/cocoon-work/cache-dir/cocoon-ehcache-1.index?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
Binary files - no diff available.
Modified: incubator/imperius/site/build/tmp/projfilters.properties
URL: http://svn.apache.org/viewvc/incubator/imperius/site/build/tmp/projfilters.properties?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/build/tmp/projfilters.properties (original)
+++ incubator/imperius/site/build/tmp/projfilters.properties Tue Feb 5 11:28:59 2008
@@ -1,5 +1,5 @@
#Ant properties
-#Fri Jan 18 22:25:44 EST 2008
+#Tue Feb 05 14:25:36 EST 2008
project.sitemap=src/documentation/sitemap.xmap
project.war=C\:\\neeraj\\spl\\workspace\\imperius-final\\site\\build\\my-project.war
project.name=my-project
Modified: incubator/imperius/site/src/documentation/content/xdocs/docs/spl_editor_guide.xml
URL: http://svn.apache.org/viewvc/incubator/imperius/site/src/documentation/content/xdocs/docs/spl_editor_guide.xml?rev=618755&r1=618754&r2=618755&view=diff
==============================================================================
--- incubator/imperius/site/src/documentation/content/xdocs/docs/spl_editor_guide.xml (original)
+++ incubator/imperius/site/src/documentation/content/xdocs/docs/spl_editor_guide.xml Tue Feb 5 11:28:59 2008
@@ -54,7 +54,8 @@
<p>
To use the JavaSPL editor you will first need to download and install
<a href="http://www.eclipse.org/downloads">eclipse platform 3.3 or later </a>
- and <a href="http://www.eclipse.org/downloads"> EMF 2.3 or later </a>
+ ,<a href="http://www.eclipse.org/downloads"> EMF 2.3 or later </a> and
+ the <a href="http://antlreclipse.sourceforge.net"> ANTLR v2 plugin </a>
</p>
</section>