<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>NextGen Consulting</title>
	<atom:link href="http://nextgencon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nextgencon.com</link>
	<description>IT Consulting CRM BSS OSS</description>
	<lastBuildDate>Sat, 18 May 2013 08:54:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nextgencon.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/b28a7e876d93894b71dcb5ff72a405ba?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>NextGen Consulting</title>
		<link>http://nextgencon.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nextgencon.com/osd.xml" title="NextGen Consulting" />
	<atom:link rel='hub' href='http://nextgencon.com/?pushpress=hub'/>
		<item>
		<title>Amdocs Smart Client Vs Classic (thick) Client</title>
		<link>http://nextgencon.com/2012/05/03/1763/</link>
		<comments>http://nextgencon.com/2012/05/03/1763/#comments</comments>
		<pubDate>Thu, 03 May 2012 08:39:53 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nextgencon.com/2012/05/03/1763/</guid>
		<description><![CDATA[Reblogged from NextGen Consulting: Classic Client Classic client was created by Clarify as a Microsoft application using MFC (Microsoft Foundation Classes). Classic client behavior (customization) uses a licensed Visual basic 5 library named BasicScript, developed by Summit software. This library was further enhanced by Clarify Corporation to support the original CRM metadata layer named POMS (persistent [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1763&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="reblog-post"><p class="reblog-from"><img alt='' src='http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=25&amp;d=identicon&amp;r=G' class='avatar avatar-25' height='25' width='25' /> <a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/">Reblogged from NextGen Consulting:</a></p><div class="wpcom-enhanced-excerpt"><div class="wpcom-enhanced-excerpt-content"><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/classic-client1.jpg?w=600&h=669" alt="Click to visit the original post" class="size-full" /></a><ul class="thumb-list"><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/smart-client.jpg?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/j2ee.jpg?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/form-components.jpg?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/service-driven-action2.jpg?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/smart-vs-classics.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/classic_2_smart_b.jpg?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li></ul>
<h2>Classic Client</h2>
<p>Classic client was created by Clarify as a Microsoft application using <a href="http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library"><strong>MFC</strong> </a>(Microsoft Foundation Classes). Classic client behavior (customization) uses a licensed Visual basic 5 library named <strong><a title="BasicScript" href="http://www.uvm.edu/~djacobow/special/lr225_Language_Ref_BasicScript.pdf">BasicScript</a></strong>, developed by Summit software. This library was further enhanced by Clarify Corporation to support the original CRM metadata layer named <strong>POMS</strong> (persistent object management system).  The enhanced VB5 customization library is known as ‘</p>
</div> <p class="read-more"><a href="http://nextgencon.com/2010/07/08/amdocs-smart-client-vs-classic-thick-client/" target="_self"><span>Read more&hellip;</span> 1,919 more words</a></p></div></div> ]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2012/05/03/1763/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>
	</item>
		<item>
		<title>Smart Client Run-Time Architecture</title>
		<link>http://nextgencon.com/2012/03/20/1739/</link>
		<comments>http://nextgencon.com/2012/03/20/1739/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 06:29:45 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nextgencon.com/2012/03/20/1739/</guid>
		<description><![CDATA[Reblogged from NextGen Consulting: The Smart Client architecture is built on an infrastructure that provides the following: Have an application workspace   Launch application forms   Communicate with the server    Manage data binding between datasets and the form’s controls at both directions. The client side infrastructure is described by the following set of components. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1739&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="reblog-post"><p class="reblog-from"><img alt='' src='http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=25&amp;d=identicon&amp;r=G' class='avatar avatar-25' height='25' width='25' /> <a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/">Reblogged from NextGen Consulting:</a></p><div class="wpcom-enhanced-excerpt"><div class="wpcom-enhanced-excerpt-content"><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/smart-client-architeture.png?w=600&h=375" alt="Click to visit the original post" class="size-full" /></a><ul class="thumb-list"><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/workspace-and-application-assembly2.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/workspace-and-form-components.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/form-components.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/visual-inheritance.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/version-selector.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/smart-client-data-models.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/data-communication-elements.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/smart-client-events.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/actions-and-buttons.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/bulk-action.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/sequence-action.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li><li><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><img src="http://yuvalrs.files.wordpress.com/2010/07/supported-containers.png?w=72&h=72&crop=1" alt="Click to visit the original post" class="size-thumb" width="72" height="72" /></a></li></ul>
<p>The Smart Client architecture is built on an infrastructure that provides the following:</p>
<ul>
<li>Have an application workspace<br />
 </li>
<li>Launch application forms<br />
 </li>
<li>Communicate with the server<br />
  </li>
<li>Manage data binding between datasets and the form’s controls at both directions.</li>
</ul>
<p>The client side infrastructure is described by the following set of components.</p>

<p><strong><em> </em></strong></p>
<h3>Request/Response Manager</h3>
<p>The <strong>request/response manager</strong> works with different communication protocols (i.e http) to submit the request from the client and to handle responses back from the server.</p>
</div> <p class="read-more"><a href="http://nextgencon.com/2010/07/26/smart-client-run-time-architecture/" target="_self"><span>Read more&hellip;</span> 1,892 more words</a></p></div></div> ]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2012/03/20/1739/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>
	</item>
		<item>
		<title>Using CBO Application</title>
		<link>http://nextgencon.com/2011/08/13/using-cbo-application/</link>
		<comments>http://nextgencon.com/2011/08/13/using-cbo-application/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 17:43:28 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1694</guid>
		<description><![CDATA[Q: I have a CRM console application, this is some code snipet: Application app = new Application(); Session session = app.createSession(); session.login("sa", "sa"); Everytime i run it, i get error at line : app.createSession(); it says something like it could not find ASC configuration &#8230;. Do I miss some configuration some where? How to make [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1694&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><span style="color:#ff0000;"><strong>Q:</strong></span> I have a CRM console application, this is some code snipet:</p>
<pre style="padding-left:30px;">Application app = new Application();
Session session = app.createSession();
session.login("sa", "sa");</pre>
<p>Everytime i run it, i get error at line : app.createSession(); it says something like it could not find ASC configuration &#8230;.</p>
<p>Do I miss some configuration some where? How to make console program works?</p>
<h3><span style="color:#ff0000;"><strong>Using CBO Environment</strong></span></h3>
<p>The code snippets above use CBO functionality which is used by Amdocs CRM application.</p>
<p>While CBO initiates its operation, it looks for an initialization configuration file named &#8216;clarify.env&#8217;. This file contains several important definitions, such as JDBC connection information, which are mandatory for its operation.</p>
<p>One of the parameters included in clarify.env tells the application the location of Amdocs System Configuration (ASC) data. This data can be located either on disk as XML files or stored in the database instance indicated by the JDBC connection parameters.</p>
<p>The clarify.env is located in a directory called ‘bin’ which contains all relevant application dynamic runtime libraries (*.dll for windows, *.so for Unix flavors).  This directory could be located anywhere provided the operating system has its path defined correctly</p>
<p>For example:   Assuming our ‘bin’ directory is located at the following path:</p>
<pre style="padding-left:30px;">C:\CRM800\Apps\crmApps\bin_abs_crm_800\</pre>
<p>(Windows) – we need to make sure this path is included in a system variable named ‘PATH’.</p>
<p>Once CBO understands where the data is located, then it looks for certain parameters within these data to determine its connections with CRM database (and possibly other database instances used by other applications).</p>
<p>In other words:  In order to properly use the CBO layer the application must:</p>
<ol>
<li>Know its ASC data location</li>
<li>Extract and use proper resource definitions (such as the CRM database connection) from the ASC data <br />
regardless the location of the ASC data (on disk or in the database).</li>
</ol>
<p>Here is an example for a full clarify.env file:</p>
<pre style="padding-left:30px;">##########  C:\CRM800\Apps\CrmApps\bin_crm ################
 ##### Used for Initial Connection ######
<strong>jdbc_db_name</strong>=CRM800
<strong>jdbc_db_server</strong>=localhost
<strong>jdbc_db_port</strong>=1521

######### Conf file location ######################################
# -- FOR DB READ - #####
#   
#    Used here to read from file.
#    to read and store in db, comment the following line
<strong>config_file_location</strong>=C:\CRM800\apps\server\dbadmin800\config\_main_abs_crm
##############################################################
 ######### Conf file type ##############################################
# -- CURRENTLY SET TO RETRIEVE PARAMS FROM  baseConfig       -- #####
# baseConfig      - Used for Smart apps     
# baseConfigThin  - Used for thin apps
<strong>crm_config=baseConfig                                             </strong>
###################################################################
 <strong>app_server</strong>=weblogic
<strong>app_server_datasource</strong>=CRM800_XA_DataSource
<strong>app_server_nonxa_datasource</strong>=CRM800_NXA_DataSource
<strong>app_server_password</strong>=weblogic
<strong>app_server_login_name</strong>=weblogic
<strong>unicode</strong>_db=y
<strong>login_name</strong>=sa
<strong>db_password</strong>=sa
<strong>db_name</strong>=CRM800
<strong>db_server</strong>=localhost
<strong>db_driver</strong>=Oracle
<strong>db_type</strong>=oracle90
<strong>Predef_User_Name</strong>=sa
<strong>Predef_User_Password</strong>=sa
<strong>clr_loc</strong>=1033

machinerole=Server
dataaccesslocation=InProc
unicode_app=y

charsetconvert=n

;    The following class path config works for Core CRM
;----------------------------------------------------------------------------
Java_Classpath=C:/CRM800/Apps/CrmApps/lib_crm_app/acfglib.jar;
C:/CRM800/Apps/CrmApps/lib_crm_app/ClfyCore.jar;
C:/CRM800/Apps/CrmApps/lib_crm_app/AmdocsCore.jar;
C:/CRM800/Apps/CrmApps/lib_crm_app/jdom.jar;
C:/CRM800/Apps/CrmApps/lib_crm_app/ojdbc14.jar;

<strong>jar_path</strong>=C:/CRM800/Apps/CrmApps/lib_crm_app
<strong>java_args</strong>=-Xms512m -Xmx512m
;----------------------------------------------------------------------------

##### Use the following to switch-on Trace log ####
<strong>trace=Y</strong>
<strong>tracekeys</strong>=sql,lpoms,config,apm

##### Use the following to switch-on ASC log ####
# <strong>enable_asc_log</strong>=true

##### Other Parameters #####################
<strong>JAVA_HOME</strong>=c:\Java\jdk150_12
billing_app_id=ACM
provisioning_app_id=PROV
fulfillment_app_id=FC
urm_default_pool=13
user_admin_priv=System Administrator
weblicense=on
<strong>java_pool_size</strong>=50m
<strong>large_pool_size</strong>=60m
<strong>output_charset</strong>=UTF-8
<strong>NLS_LANG=AMERICAN_AMERICA.AL32UTF8</strong></pre>
<p>In order to run a console application, you do not need the full clarify.env file, since some of the parameters above refer to an application server (Weblogic) environment.</p>
<p>Here are explanations for the most important parameters:</p>
<ul>
<li><strong>jdbc_db_xxx</strong><br />
JDBC connection parameters, required for some initialization work (I.e. access and search  ASC data).<br />
 </li>
<li><strong>config_file_location</strong><br />
ASC files location on disk. Omitting this parameter means that the ASC data is stored in the database instance indicated by the above JDBC parameters.<br />
   </li>
<li><strong>crm_config <br />
</strong>The location of CRM parameters within the ASC data.  The location is indicated by a node name.</li>
</ul>
<p style="padding-left:30px;">     Examples:</p>
<p style="padding-left:90px;">crm_config=baseConfig         - Used for Smart apps  (/crm/baseConfig)</p>
<p style="padding-left:90px;">crm_config=baseConfigThin  &#8211; Used for thin apps      (/crm/baseConfigThin)</p>
<ul>
<li><strong>app_server_XXX     <br />
</strong>Application server (Weblogic, Websphere) connection parameters<br />
    </li>
<li><strong>unicode_db <br />
</strong>Defines whether the database is Unicode.<br />
<strong>             </strong></li>
<li><strong>login_name</strong>, <strong>db_password</strong>, <strong>db_name</strong>, <strong>db_serve, db_driver, db_type</strong>, <strong>Predef_User_Name</strong>, <strong>Predef_User_Password<br />
</strong>Connection parameters used by Classic client or console applications.<br />
  </li>
<li><strong>clr_loc<br />
</strong>Defines the application locale (1033 is US_EN)<br />
    </li>
<li><strong>Java_Classpath</strong>, <strong>jar_path, java_args, java_pool_size, large_pool_size<br />
</strong>Parameters used by Java environment<br />
   </li>
<li><strong>Trace<br />
</strong>Used<strong> </strong>to switch-on Trace log<br />
   </li>
<li><strong>enable_asc_log<br />
</strong>Used to switch-on ASC log<br />
   </li>
<li><strong>NLS_LANG=AMERICAN_AMERICA.AL32UTF8<br />
</strong>Locale parameter used by CBO<br />
 </li>
</ul>
<h3><span style="color:#ff0000;"><strong>CRM Configuration in ASC</strong> </span></h3>
<p>Use the ASC editor (an eclipse plugin) to manage (view / edit) the CRM database connection definition.</p>
<p>As mentioned above, the CRM root node is defined by the clarify.env parameter ‘crm_config’.</p>
<p>Assuming our CRM root is defined as ‘crm_config=baseConfig’,<br />
the following database connection parameters are defined in ASC node /crm/baseConfig/Aif.  These parameters mainly used by an application server:  </p>
<pre style="padding-left:30px;">DataSource: CRM800_XA_DataSource
JdbcDriver: oracle.jdbc.xa.client.OracleXADataSource
DatabaseUrl: jdbc:oracle:thin:@localhost:1521:CRM800
UserName: &lt;user name&gt;
Password: &lt;Password&gt;</pre>
<pre style="padding-left:60px;"> </pre>
<pre style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/08/crm-connection-definition-in-asc1.png"><img class="alignnone size-full wp-image-1709" title="CRM Connection Definition in ASC" src="http://yuvalrs.files.wordpress.com/2011/08/crm-connection-definition-in-asc1.png?w=661&#038;h=371" alt="" width="661" height="371" /></a>
 </pre>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1694/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1694/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1694&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/08/13/using-cbo-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/08/crm-connection-definition-in-asc1.png" medium="image">
			<media:title type="html">CRM Connection Definition in ASC</media:title>
		</media:content>
	</item>
		<item>
		<title>About Smart Client Script Player</title>
		<link>http://nextgencon.com/2011/07/01/about-smart-client-script-player/</link>
		<comments>http://nextgencon.com/2011/07/01/about-smart-client-script-player/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 08:31:50 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[APM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Customer Interaction Management]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[Smart Client]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1609</guid>
		<description><![CDATA[Background A Smart Client form can define a Launch Action to allow manually launching another form in the workspace. For automated processes, Smart Client infrastructure provides three alternate actions which allow automating the selection of the next form to be launched; Process Driven UI Action (PDUI)     Service Driven UI Action (SDUI)       Client Process [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1609&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><span style="color:#ff0000;">Background</span></h3>
<p>A Smart Client form can define a <strong><em>Launch Action</em></strong> to allow manually launching another form in the workspace.</p>
<p>For automated processes, Smart Client infrastructure provides three alternate actions which allow automating the selection of the next form to be launched;</p>
<ul>
<li>Process Driven UI Action (PDUI)<br />
   </li>
<li>Service Driven UI Action (SDUI)<br />
     </li>
<li>Client Process Driven UI Action (CPDUI)</li>
</ul>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Process Driven UI Action (PDUI)</span></h3>
<p>This action is used if the form launch is based on a process running on the server. This is typical to a <em>Wizard Form</em> which requires the process state to be maintained and communicated to either the launching form (or other forms subsequently posted) that might continue the process. The Order Management process is a good example for process driven UI.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Service Driven UI Action (SDUI)</span></h3>
<p>This action is used if the next form to be posted depends on a UI driving service.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Client Process Driven UI Action (CPDUI) – Script Player</span></h3>
<p>This action is used to drive a client side script player.  The process that maintains the state and drives the next form to be posted is <em>a client side light weight process</em>. The client who runs this <em>light weight process</em> is Amdocs Process Manager (APM) client.</p>
<p><em>Amdocs Process Manager</em> (APM) Design tool is used to define the Script metadata. APM Client interacts with APM Server to get the metadata to the client and maintain the state.</p>
<p>The <em>Client Process Driven UI (CPDUI) </em>Action interacts with APM Client to launch Smart Client forms in the client workspace. These forms can be either dynamically constructed forms (E.g., Question and Answer script forms) or standard Smart Client forms already created at design time. These pre-designed Smart Client forms are invoked by a special script step known as Show page step)</p>
<p>The <em>CPDUI Action</em> communicates with APM client, to either <em>start</em> or <em>proceed</em> with a client process. Whenever the CPDUI needs user interaction, it yields back to itself and pass required inputs (process variables). The action processes the inputs and dynamically generates and posts a ‘<em>script form’</em> for user response.</p>
<p>The target form can have another CPDUI action, which collects and validate user inputs associated with the action and submit the details back to the APM client.</p>
<p>To facilitate communication between the APM client and the CPDUI action, the process variables in the APM client are mapped (at design time) to the Data models in the next launched (target) form.</p>
<p>When APM client is running along with Smart Client, APM client interacts with APM server (via Smart Client and Smart Server) to get <strong><em>Light Weight Process</em></strong> metadata or to invoke a service (<strong><em>AIF service</em></strong> or any other service) as part of the process execution. In fact &#8211; The Smart Client acts as a host for running Light weight processes.</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/07/01-script-player-architecture.png"><img class="alignnone size-full wp-image-1610" title="01 - Script Player Architecture" src="http://yuvalrs.files.wordpress.com/2011/07/01-script-player-architecture.png?w=663&#038;h=395" alt="" width="663" height="395" /></a></p>
<p>Smart Client normally uses a <em>Submit Action</em> to submit to the server and get the response back. This functionality is utilized for retrieving the metadata and invoking any server side service.</p>
<p>Similar to the <strong>PDUI action</strong>, the <strong>Client Process Driven UI Action</strong> launches a form based on the <strong>logical form name</strong> (LFN) input data section.  At script design time, the Script Designer refers the form’s input data section as <em>show context</em> area. At run time, any input retrieved from the process can overwrite the form’s default launch action properties.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Running Scripts from Smart Client form</strong></span></h3>
<p><strong>Client Process Driven UI Action</strong> Can be added to any Smart Client form like any other action, and can be invoked by a user action or using application code.  The <strong>Client Process Driven UI Action</strong> defines various operations:</p>
<ul>
<li><strong><em>Get</em></strong> a lite process <strong><em>instance<br />
     </em></strong></li>
<li><strong><em>Start running<br />
     </em></strong></li>
<li><strong><em>Proceed<br />
     </em></strong></li>
<li><strong><em>Abort<br />
      </em></strong></li>
<li><strong><em>Go</em></strong> <strong><em>back</em></strong> (a process step)<br />
    </li>
<li><strong><em>Get</em></strong> <strong><em>log details</em></strong></li>
</ul>
<p><strong><em></em></strong> </p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/07/02-script-player-navigation1.png"><img class="alignnone size-full wp-image-1612" title="02 - Script Player Navigation" src="http://yuvalrs.files.wordpress.com/2011/07/02-script-player-navigation1.png?w=645&#038;h=415" alt="" width="645" height="415" /></a></p>
<p style="text-align:left;"><strong>                                                                                                      Process Navigation</strong></p>
<p style="text-align:left;padding-left:30px;"><strong></strong> </p>
<p>After getting response from the process, the <strong>Client Process Driven UI Action</strong> always invokes a launch action to launch a form based on inputs from the process, except when the process’ return status indicates abort/completed.</p>
<p>If the process returns with <strong><em>completed</em></strong> or <strong><em>aborted</em></strong> state, then it sends a message to its opener form indicating the new status. If this action is overloaded by a <em>PDUI action</em>, (in case the lite process was part of a server process), then, it invokes the dynamically created PDUI action and passes the ‘proceed context’ details (to allow the original server process continue).</p>
<p>The execution of the <strong>Client Process Driven UI Action</strong> is considered ‘done’ after the action launches the form or if the process is <strong><em>completed</em></strong> or <strong><em>cancelled</em></strong> and the action sends a message to its opener forms.</p>
<p>The action passes the <strong><em>Lite Process Instance</em></strong> (LPI) got from a “<strong>GetProcess</strong>” operation to all the launched forms. <strong>LPI</strong> is stored as a property of the launched Smart Client form to allow all <strong>CPDUI</strong> actions in that form access this <strong><em>Lite Process Instance</em></strong>.</p>
<p>While a <strong><em>Lite Process Instance </em></strong>is being executed, it may respond to one of the following UI steps:</p>
<ul>
<li>Show page step<br />
       </li>
<li>Prompt step</li>
</ul>
<p>At runtime, the process might call for a UI step. This UI step can either a <strong><em>show page</em></strong> <strong><em>step</em></strong> or<strong> <em>prompt step.</em></strong></p>
<p><strong><em> </em></strong></p>
<h3><span style="color:#ff0000;"><strong>Show Page Step</strong><strong><em></em></strong></span></h3>
<p>A <strong><em>show page step</em></strong> dynamically invokes a Smart Client form by:</p>
<ul>
<li>Creating a Launch action<br />
      </li>
<li>Setting the launch action’s properties according to the properties provided by the process (in other words: it passes relevant process variables to the launch action properties)<br />
     </li>
<li>Launching the <strong><em>target form</em></strong> (the target form is a standard Smart Client form which was previously set as a <strong><em>show page step</em></strong> in the process definition)<br />
        </li>
<li>The <strong><em>show page</em></strong> can be invoked either in Synchronous<strong> </strong>or<strong></strong><strong>Asynchronous modes.</strong> In<strong> </strong><em>Synchronous mode</em><strong>, </strong>the<strong> </strong>Client action overloads existing actions in the form to return data back to Opener form (Script Player) which continues process. For example, clicking Save button in Show page form executes <em>Save Action</em>and continues client process from Script Player form.An <em>Asynchronous mode</em>, returns data to Opener form right after the <em>Initial Load Action</em> of the Show page form is done and continues process</li>
</ul>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Prompt Page Step</strong><strong><em></em></strong></span></h3>
<p>A <strong><em>prompt step</em></strong> uses a dynamic form generator to create the prompt form.</p>
<ul>
<li>The prompt form can be displayed either in the toolbox or workspace area (exact location is set at design time by the process designer<br />
     </li>
<li>The prompt form is  based on the prompt info defined at design time in the process
<p><a href="http://yuvalrs.files.wordpress.com/2011/07/04-toolbox-zoom.png"><img class="alignnone size-full wp-image-1632" title="04 - Toolbox - Zoom" src="http://yuvalrs.files.wordpress.com/2011/07/04-toolbox-zoom.png?w=266&#038;h=501" alt="" width="266" height="501" /></a></li>
</ul>
<p style="padding-left:60px;"> </p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/07/03-script-run-at-toolbox2.png"><img class="alignnone size-full wp-image-1630" title="03 - Script Run at Toolbox" src="http://yuvalrs.files.wordpress.com/2011/07/03-script-run-at-toolbox2.png?w=717&#038;h=545" alt="" width="717" height="545" /></a> </p>
<p style="padding-left:30px;">                                                       Launch Script in Toolbox Area   </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">UifLiteProcessHost Class</span></h3>
<p>The<strong> UifLiteProcessHost</strong> supports information storage (and retrieval) on the client’s disk. It also supports submitting server requests issued by the <strong><em>lite process instance</em></strong>.</p>
<p>The Smart Client <strong><em>RequestResponseManager</em></strong> is used to submit request to the server.</p>
<p>The <strong><em>UifLiteProcessHost </em></strong>provides the following functionality:</p>
<ul>
<li>Get the required or latest version of <strong><em>lite process instance</em></strong> definition from the APM server and store it in the client<br />
      </li>
<li>Submit an AIF operation request to the server based on the client host<br />
     </li>
</ul>
<p>To get a <strong><em>Lite process instance</em></strong> from the process definition, the <strong>Client Process Driven UI Action</strong> calls the static API getLiteProcInstFactory(), which returns a process instance factory which is used to create an instance of a <strong><em>Lite process instance</em></strong>.</p>
<p>For example, the action may use the following call to create an instance of the required process:</p>
<p>UifLiteProcessHost.getLiteProcInstFactory(procName, version, deployCount().create().</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Lite process instance</span></h3>
<p><strong><em>A Lite process instance</em></strong> is an instance of a lite process definition downloaded from the APM server. The client can run multiple instance of the same process definition at the same time.</p>
<p>For example, when user runs ‘Script A’ once, an instance of Script A’s LiteProcInst is created and used until the script is done.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Types of Operations</span></h3>
<h4>GetProcess</h4>
<p>The inputs to get a client lite weight process are <strong>Process Name</strong> (mandatory) and <strong>Process version</strong> – (optional); If not provided, the latest version of the process is used.</p>
<p>Accessing a client process involves getting the <strong><em>LiteProcInst</em></strong> (LPI) based on the lite process definition retrieved from the relevant APM client (CRM) database or from APM server.</p>
<p>After getting the LPI, the <strong>defaultLaunchAction</strong> specified in the action is invoked. The default <em>Launch Action</em> should give a valid <strong><em>Logical File Name</em></strong> with any required input data.</p>
<p>Additional input required for the process is information regarding the launched form; whether the form should be launched as a <strong>Main WORKAREA</strong> form or as a <strong>TOOLBOX</strong> form.</p>
<p>The action fires an event including this information to the application code before launching the <em>defaultLaunchAction</em>. This allows the application code to take advantage of both potentially adding a <strong><em>LaunchMapItem</em></strong>, and pass this as an input to the launched form and use form <strong><em>version selector</em></strong>, which could return the appropriate physical form name to be launched on the <strong>WORKAREA</strong> or <strong>TOOLBOX</strong>.</p>
<h2 style="padding-left:30px;"> </h2>
<h3><span style="color:#ff0000;">Single light process instance per form</span></h3>
<p>When launching the form (executing the <strong><em>defaultLaunchAction</em></strong>), the LPI instance is passed internally through the launch action to the launched form and cached. Any other CPDUI action in the launched form will always use this LPI instance for any other operation involving the same process, which means only a single lite process instance can be used on a form.</p>
<p>Consider an example where the launching form is a Script listing form and the user selects a particular script and clicks play. The play button will be associated with the CPDUI action that has:</p>
<ul>
<li><strong>Operation</strong>:                                 “GetProcess”<br />
     </li>
<li><strong>DefaultLaunchAction</strong>:   launch action where LFN = “</li>
</ul>
<p>The <strong>Client Process Driven UI Action</strong> retrieves the <strong><em>Lite process Instance</em></strong> and the <em>target launch area</em> (where to launch this form – <strong>WORKAREA</strong> or <strong>TOOLBOX</strong>).</p>
<p>The CPDUI pass this information to the <strong><em>defaultLaunchAction</em></strong> and executes the launch action. The launch action launches the <strong>script player form</strong>, and sets this <strong><em>Light Process Instance</em></strong> to scriptPlayerForm.LiteProcInst.</p>
<p>If the client process was part of a server process, then PDUI action would dynamically create this action with operation “GetProcess” and use the <strong><em>ShowContext</em></strong> details to get the process name version etc.</p>
<p>As already mention, the Launch action would pass the <strong><em>Show context</em></strong> data and Proceed Context data to the launched form, and if required, overload any existing action in the launched form as described by the Action descriptor. The <strong>Proceed Context</strong> can be passed back to the server after the client process is done.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;">Start, Proceed, Back, Abort, Restart, ShowLog</span></h3>
<p>All operations other than “GetProcess” should not provide the process name, version as input. If the action’s operation type is set to one of <strong>Start</strong>, <strong>Proceed</strong>, <strong>Back</strong>, <strong>Abort</strong>, <strong>Restart</strong> or <strong>ShowLog</strong>, then the default <strong><em>Lite Process Instance</em></strong> which is already available in the Form (where the action is defined) is used.</p>
<p><strong><em>LiteProcInst</em></strong> provides APIs to run, proceed, back, cancel the process, which is used to perform the operation.</p>
<h4>Restart</h4>
<p>Restarting the client process has to clear out the logs created so far, and initiates the process as if nothing happened in this process instance. A process can be restarted before it is complete. It can be done even after a child script is executed, in which case it goes back to the main process that was originally started by the user. Restarting is not possible, after a show page step.</p>
<h4>Abort</h4>
<p>Aborting a process also requires a Feedback message from the user. It’s up to the application to get this feedback and set it to the action if the operation = “Abort”</p>
<h4>ShowLog</h4>
<p>Calling the below API on the liteProcInst gets the log details.</p>
<p>LiteProcInst.getLiteProcInstHistory()</p>
<p>The output from the API can be set to a data model in the launched form and displayed as a list (See output processing below).</p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/amdocs/apm/'>APM</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/customer-interaction-management/'>Customer Interaction Management</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/smart-client/'>Smart Client</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1609/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1609&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/07/01/about-smart-client-script-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/07/01-script-player-architecture.png" medium="image">
			<media:title type="html">01 - Script Player Architecture</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/07/02-script-player-navigation1.png" medium="image">
			<media:title type="html">02 - Script Player Navigation</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/07/04-toolbox-zoom.png" medium="image">
			<media:title type="html">04 - Toolbox - Zoom</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/07/03-script-run-at-toolbox2.png" medium="image">
			<media:title type="html">03 - Script Run at Toolbox</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Paths and Expressions in Smart Client</title>
		<link>http://nextgencon.com/2011/05/13/using-paths-and-expressions-in-smart-client/</link>
		<comments>http://nextgencon.com/2011/05/13/using-paths-and-expressions-in-smart-client/#comments</comments>
		<pubDate>Fri, 13 May 2011 11:39:34 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[APM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Smart Client]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1579</guid>
		<description><![CDATA[Smart Client Run-Time Focus Objects   Smart Client Named Collections Named Collection data path handler enables resolving an item by name within a named collection, such as  $Form:Controlset:Controls:MyDateControl   Named Collection Data Paths  A named element in a collection can be extracted from a java object by using two path items: The first identifies the collection, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1579&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><span style="color:#008000;"><strong>Smart Client Run-Time Focus Objects</strong></span><span style="color:#ff0000;"><strong>   </strong></span></h3>
<h3><span style="color:#ff0000;"><strong>Smart Client Named Collections</strong></span></h3>
<p><em>Named Collection</em> data path handler enables resolving an item by name within a named collection, such as</p>
<pre style="padding-left:30px;"> $Form:Controlset:Controls:MyDateControl</pre>
<p style="padding-left:60px;"> </p>
<h3><span style="color:#ff0000;"><strong>Named Collection Data Paths</strong></span></h3>
<p> A named element in a collection can be extracted from a java object by using two path items:</p>
<ul>
<li>The first identifies the <strong><em>collection</em></strong>,</li>
<li>The second identifies the <strong><em>item’s name</em></strong></li>
</ul>
<p> </p>
<p> An example data path is as follows:</p>
<pre style="padding-left:30px;">$Dataset:DataModel:myDataModel</pre>
<p>The <em>$Dataset</em> context type contains a collection that can be accessed by:</p>
<pre style="padding-left:30px;">getDataModelByName("myDataModel")</pre>
<p> </p>
<p>The followings Smart Client runtime elements are implemented as Named Collections:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-10-named-collections.png"><img class="alignnone size-full wp-image-1598" title="Exp UIF 10  Named Collections" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-10-named-collections.png?w=598&#038;h=575" alt="" width="598" height="575" /></a></p>
<p style="padding-left:30px;"><span style="color:#ff0000;"><strong>  </strong></span></p>
<p><strong><em>Example: </em></strong></p>
<p>The following path resolves to a Grid column control in the current Form using Named Collection:</p>
<pre> $Form:ControlSet:Control:caseOverviewGrid:GridColumn:caseTitleCol:ColumnControl</pre>
<p>where:</p>
<ul>
<li>Form                         is the starting context and it specifies a UifForm context type</li>
<li>ControlSet                 is a member in UifForm</li>
<li>Control                      is the accessor collection name for ControlSet</li>
<li>caseOverviewGrid       is the name of the Grid control</li>
<li>GridColumn                is the accessor collection name for the <em>caseOverviewGrid</em> object</li>
<li>caseTitleCol               is the name of GridColumn inside the <em>caseOverviewGrid</em> grid control</li>
<li>ColumnControl           is a property in GridColumn which specifies the contained UifControl for the     GridColumn control.</li>
</ul>
<p> </p>
<p><strong><em>Example: </em></strong></p>
<p>The following path resolves to a logical form called <em>com.nextgen.GlobalUtils</em>:</p>
<pre> $Workspace:Form:com.nextgen.GlobalUtils</pre>
<p>where</p>
<ul>
<li>Workspace                           is the starting context and it specifies a Workspace context type</li>
<li>Form                                   is the accessor collection name for Workspace</li>
<li>com.nextgen.GlobalUtils         is the name of the Form.</li>
</ul>
<p> </p>
<h3><span style="color:#ff0000;"><strong>Data Path Contexts</strong></span></h3>
<h3><span style="color:#008000;"><strong>Data Model,  Data Provider</strong></span></h3>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-01-default-ctx-data-model.png"><img class="alignnone size-full wp-image-1580" title="Exp UIF 01 Default Ctx Data Model" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-01-default-ctx-data-model.png?w=644&#038;h=681" alt="" width="644" height="681" /></a></strong></p>
<p style="padding-left:30px;"><strong></strong> </p>
<h3><span style="color:#008000;"><strong>Form,  Control,  Action</strong></span></h3>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-02-default-ctx-control.png"><img class="alignnone size-full wp-image-1581" title="Exp UIF 02 Default Ctx  Control" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-02-default-ctx-control.png?w=644&#038;h=361" alt="" width="644" height="361" /></a></strong></p>
<p style="padding-left:30px;"> </p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-07-create-data-request-map.png"><img class="alignnone size-full wp-image-1591" title="Exp UIF 07  Create Data Request Map" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-07-create-data-request-map.png?w=501&#038;h=369" alt="" width="501" height="369" /></a></p>
<p style="text-align:left;padding-left:30px;">                               Create Data Request Map</p>
<p style="padding-left:30px;"> </p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-09-choice-request-map.png"><img class="alignnone size-full wp-image-1593" title="Exp UIF 09  Choice Request Map" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-09-choice-request-map.png?w=556&#038;h=252" alt="" width="556" height="252" /></a></p>
<p>                                Choice List Action Request Map</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#008000;"><strong>Input, Workspace, Locale, WorkspaceForm</strong></span></h3>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-03-input-workspace.png"><img class="alignnone size-full wp-image-1582" title="Exp UIF 03  Input Workspace" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-03-input-workspace.png?w=644&#038;h=365" alt="" width="644" height="365" /></a></strong></p>
<p style="padding-left:30px;"><strong></strong> </p>
<p> <a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-08-form-version-selector.png"><img class="alignnone size-full wp-image-1590" title="Exp UIF 08  Form Version Selector" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-08-form-version-selector.png?w=797&#038;h=296" alt="" width="797" height="296" /></a></p>
<p style="padding-left:30px;"> </p>
<p> </p>
<h3><span style="color:#008000;"><strong>ContainingFormDataModel,  OpenerFormDataModel,  TopLevelFormDataModel,  Form</strong></span></h3>
<p><strong></strong> <a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-04-form.png"><img class="alignnone size-full wp-image-1584" title="Exp UIF 04  Form" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-04-form.png?w=645&#038;h=392" alt="" width="645" height="392" /></a></p>
<p style="padding-left:30px;">  </p>
<h3><span style="color:#008000;"><strong>ServiceInput, ServiceOutput,  Bindable, Control, DataModel, Input, Relative</strong></span></h3>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-05-service2.png"><img class="alignnone size-full wp-image-1586" title="Exp UIF 05  Service" src="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-05-service2.png?w=644&#038;h=572" alt="" width="644" height="572" /></a></p>
<p style="padding-left:30px;"> </p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/amdocs/apm/'>APM</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/oss/'>OSS</a>, <a href='http://nextgencon.com/category/smart-client/'>Smart Client</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>, <a href='http://nextgencon.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1579/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1579&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/05/13/using-paths-and-expressions-in-smart-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-10-named-collections.png" medium="image">
			<media:title type="html">Exp UIF 10  Named Collections</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-01-default-ctx-data-model.png" medium="image">
			<media:title type="html">Exp UIF 01 Default Ctx Data Model</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-02-default-ctx-control.png" medium="image">
			<media:title type="html">Exp UIF 02 Default Ctx  Control</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-07-create-data-request-map.png" medium="image">
			<media:title type="html">Exp UIF 07  Create Data Request Map</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-09-choice-request-map.png" medium="image">
			<media:title type="html">Exp UIF 09  Choice Request Map</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-03-input-workspace.png" medium="image">
			<media:title type="html">Exp UIF 03  Input Workspace</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-08-form-version-selector.png" medium="image">
			<media:title type="html">Exp UIF 08  Form Version Selector</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-04-form.png" medium="image">
			<media:title type="html">Exp UIF 04  Form</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-uif-05-service2.png" medium="image">
			<media:title type="html">Exp UIF 05  Service</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Expressions (Part 3)</title>
		<link>http://nextgencon.com/2011/05/12/using-expressions/</link>
		<comments>http://nextgencon.com/2011/05/12/using-expressions/#comments</comments>
		<pubDate>Thu, 12 May 2011 12:02:59 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[APM]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[Smart Client]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1509</guid>
		<description><![CDATA[About Expressions An expression is a single Boolean or arithmetic expression that can be evaluated by a special expression evaluation class. The operands in an expression are literals (numbers and strings), paths or functions. An expression string is analogous to an Excel formula. It encapsules logic, data access, calculations etc sub-expressions mechanism allows an expression [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1509&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><span style="color:#ff0000;"><strong>About Expressions</strong></span></h3>
<p>An expression is a single Boolean or arithmetic expression that can be evaluated by a special expression evaluation class. The operands in an expression are <strong><em>literals</em></strong> (numbers and strings), <strong><em>paths</em></strong> or <strong><em>functions</em></strong>.</p>
<p>An expression string is analogous to an Excel formula. It encapsules logic, data access, calculations etc<strong><em></em></strong></p>
<p><strong><em>sub-expressions</em></strong><em> </em>mechanism<em> </em>allows an expression to be defined once with a known name, and then re-used in other expressions.</p>
<p>Expression examples:</p>
<pre style="padding-left:30px;">$Focus:site2contact_role(primary_site=1):role_name = ‘Employee’</pre>
<pre style="padding-left:30px;">dateAdd(‘d’, $Focus:required_date, 3)</pre>
<pre style="padding-left:30px;">If ($Var:Churn = ‘High’) then ‘Gold’ else ‘Silver’</pre>
<p> </p>
<p>Expressions are a generalisation of the path concept that has always been in Clarify. There are several places in the application where a Boolean expression is stored in the database in three fields – path, operator and value. Expressions are stored as a single text field, containing the expression. All string comparisons are case insensitive.</p>
<p>Expression use ‘contexts’ to read and write data. Its syntax includes functions, operators, operands, logical tests and  literals. They can be created dynamically at runtime.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Where Expressions are Used</strong></span></h3>
<ul>
<li>Extensively used by Amdocs Process Manager<br />
  </li>
<li>Input parameters for Services (Process Manager and Rule Manager)<br />
 </li>
<li>Order Management Standard Edition Eligibility rules<br />
  </li>
<li>Role Based Authorization<br />
  </li>
<li>Flexible Attributes Templates<br />
 </li>
</ul>
<p> </p>
<h3><span style="color:#ff0000;"><strong>How Expressions are Used inby APM</strong></span></h3>
<ul>
<li>Most places in APM that expose properties that are used directly at runtime<br />
    </li>
<li>Operation inputs / outputs<br />
   </li>
<li>Pre and post data assignment<br />
   </li>
<li>Conditional junctions<br />
  </li>
<li>Flows<br />
   </li>
<li>Dynamic subprocess<br />
  </li>
<li>Dynamic service<br />
 </li>
</ul>
<p> </p>
<h3><span style="color:#ff0000;"><strong>Why Use Expressions?</strong></span></h3>
<p>Expressions encapsulate business logic easily without implementing complex processes. The processes become easier to build, manage, understand and maintain.</p>
<p>Expressions provide improved runtime performance and ease of monitoring</p>
<p>Expressions overcome various Process Manager constraints. Business processes become easier to build, manage, understand and maintain by reducing need to extend code or datamodel.</p>
<p>Expression allow using user-friendly naming, easier implementation and testing</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/10-named-expression1.png"><img class="alignnone size-full wp-image-1511" title="10 - Named Expression" src="http://yuvalrs.files.wordpress.com/2011/05/10-named-expression1.png?w=747&#038;h=596" alt="" width="747" height="596" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Expression Syntax</strong><strong></strong></span></h3>
<p>Expressions combine operands which take the form of paths, literals or <strong>other expressions.</strong></p>
<p>Examples:</p>
<pre style="padding-left:30px;">$Focus:subcase2case:casereporter2contact:first_name</pre>
<pre style="padding-left:30px;">‘Billing Dispute’</pre>
<pre style="padding-left:30px;">?Sales.GetLeadTime</pre>
<pre style="padding-left:30px;">$Var:ContactObjid</pre>
<p> </p>
<p>The following describes an expression. Uppercase and quoted elements are lexical constants.<br />
Keywords are case-sensitive:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-01-exp-syntax.png"><img class="alignnone size-full wp-image-1514" title="Exp 01 - Exp Syntax" src="http://yuvalrs.files.wordpress.com/2011/05/exp-01-exp-syntax.png?w=482&#038;h=319" alt="" width="482" height="319" /></a></p>
<p>Examples:</p>
<pre style="padding-left:30px;">not ($Var:Score &gt; 0)</pre>
<pre style="padding-left:30px;">5 * ($Focus:score + 1)</pre>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Binary operators</strong><strong></strong></span></h3>
<p>The values for OP are supported, shown in order of precedence:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-02-binary-ops.png"><img class="alignnone size-full wp-image-1515" title="Exp 02 - Binary Ops" src="http://yuvalrs.files.wordpress.com/2011/05/exp-02-binary-ops.png?w=483&#038;h=287" alt="" width="483" height="287" /></a></p>
<p style="padding-left:30px;"> </p>
<ul>
<li>Strings are delimited by single quotes<br />
   </li>
<li>String Concatenation ( + )<br />
   </li>
<li>Escape ( \ ) characters: Newline ( <strong>\n</strong> ), Return ( <strong>\r</strong> ), Tab ( <strong>\t</strong> ), Single quote ( <strong>\’</strong> )<br />
   </li>
<li>Constants:  Boolean true ( <strong>true</strong> ), Boolean false ( <strong>false</strong> ), Null ( <strong>null</strong> )<br />
  </li>
</ul>
<p> </p>
<p><strong>Examples:</strong></p>
<pre style="padding-left:30px;">if ($Var:CaseType contains 'Sales')</pre>
<pre style="padding-left:30px;">then</pre>
<pre style="padding-left:60px;">‘Sales Queue’</pre>
<pre style="padding-left:30px;">else</pre>
<pre style="padding-left:60px;">‘Support Queue’</pre>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Unary operators</strong><strong></strong></span></h3>
<p>The values for <strong>UNARY</strong> are ‘-‘ and ‘<em>NOT&#8217;</em>.</p>
<p>Unary has a higher precedence than <strong>OP</strong>.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Functions</strong></span></h3>
<p><strong>ANY, EVERY</strong></p>
<pre style="padding-left:30px;">any(&lt;Collection-Path&gt;, ‘$IterativeContextName’, exp)
every(&lt;Collection-Path&gt;, ‘$IterativeContextName’, exp)</pre>
<p>Takes a <strong><em>Collection-path</em></strong> which returns an array of objects (i.e <em>com.clarify.webframework.CdoCol)</em>, iterates through each element from the array and assigning the element from the array to the context named <strong>$IterativeContextName</strong>.</p>
<p>Then it evaluates the <em>expression</em> which may contain a <strong>DataPath</strong> with a context name of <strong>$IterativeContextName</strong>.</p>
<p>The <strong>a<em>ny</em></strong> function iterates over the row, access a value from each row and evaluates the value against some rule specified in the a<em>ny</em> function. As soon as a row from the table whose values cause the rule to evaluate to true, a<em>ny</em> function will return immediately with a <em>true</em>.</p>
<p>The <strong><em>every</em></strong> function is the opposite of <em>any</em> function. As soon as a row from the table whose values cause the rule to evaluate to non-true, <em>every</em> function will return immediately with a <em>false</em>.</p>
<p>The <strong><em>countWhere</em></strong> function iterates through each element in the Collection and for each element, applies the element from the context to the Expression and increments the total count value by 1 if the Expression evaluates to a boolean true, else no increment. The result from countWhere is an Integer object.</p>
<p><strong><em>any</em></strong><em>, <strong>countWhere</strong></em> and <strong><em>every</em></strong> take a Collection-path which returns an array of objects or a <em>com.clarify.webframework.CdoCol</em>, iterates through each element from the array and assigning the element from the array to the context named <strong>$</strong><em>IterativeContextName</em>. Then it evaluates the <em>expression</em> which may contain a <strong>DataPath</strong> with a context name of <em>$<strong>IterativeContextName</strong></em>. Multiple any/every functions are allowed in a single expression.</p>
<p><em> </em></p>
<p><strong>Return value</strong></p>
<p><em>any and every </em>returns a <em>Boolean</em> object</p>
<p><em>countWhere</em> returns a Integer object.</p>
<p>If the Collection-path returns a CdoCol, then to address the individual Cdo within the expression, the Path must be prefixed as follows:</p>
<pre style="padding-left:30px;">$IterativeContextName:<em>CdoColName</em>:&lt;Path&gt;</pre>
<p> </p>
<p>If the Collection-Path expression returns null or unknown is set as a result of evaluating the expression, then unknown will be set to true and a Boolean false with be returned.</p>
<p>The following rules determine the return value for <strong><em>any</em></strong> function:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-03-return-value-1.png"><img class="alignnone size-full wp-image-1516" title="Exp 03 Return Value 1" src="http://yuvalrs.files.wordpress.com/2011/05/exp-03-return-value-1.png?w=548&#038;h=52" alt="" width="548" height="52" /></a></p>
<p style="padding-left:30px;"> </p>
<p>The following rules determine the return value for <strong><em>every</em></strong> function:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-04-return-value-2.png"><img class="alignnone size-full wp-image-1517" title="Exp 04 Return Value 2" src="http://yuvalrs.files.wordpress.com/2011/05/exp-04-return-value-2.png?w=548&#038;h=53" alt="" width="548" height="53" /></a></p>
<pre style="padding-left:30px;">any($Focus:case2subcase, ‘$subcase’, $subcase:status2gbst_elm = ‘Open’)</pre>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Count Functions</strong></span></h3>
<p><strong>count( exp )</strong></p>
<p>Takes an expression returning a row set, and returns the count of rows.</p>
<p style="padding-left:30px;"> </p>
<p><strong>countFlex(exp)</strong></p>
<p>Returns number of defined flexible attributes based on flags value.</p>
<p>Please see bellow for more details.</p>
<p style="padding-left:30px;"> </p>
<p><strong>countWhere(&lt;Collection-Path&gt;, &#8216;IterativeContextName&#8217;, exp)</strong></p>
<p>Iterates through each element in the Collection and for each element, applies the element from the context to the Expression and increments the total count value by 1 if the Expression evaluates to a boolean true, else no increment. </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Date Functions</strong></span></h3>
<p><strong>currentDate()</strong></p>
<p>Returns the current date/time, using Session.getCurrentDate().</p>
<p style="padding-left:30px;"> </p>
<p><strong>dateAdd( units, date, interval )</strong></p>
<p>Add a number of units to a Calendar. Default is seconds<br />
Interval: y (years), m (months), d (days), h (hours), n (minutes), s (seconds)</p>
<p>Example:</p>
<pre style="padding-left:30px;">dateAdd(‘d’, currentDate(), 3)</pre>
<pre style="padding-left:30px;"> </pre>
<p><strong>dateDiff( units, startdate, enddate )</strong></p>
<p>Subtract two dates, returning a signed number of units, default is seconds.</p>
<p><strong> </strong><strong> </strong></p>
<p><strong> </strong></p>
<h3><span style="color:#ff0000;"><strong>Test Functions</strong></span></h3>
<p><strong>isNumber( exp )</strong></p>
<p>Returns true if the expression is numeric according to Session.fromString(cboTypeDecimal)</p>
<p style="padding-left:30px;"> </p>
<p><strong>isNull(exp)</strong></p>
<p>Returns true if the expression is null</p>
<p style="padding-left:30px;"> </p>
<p><strong>isUnknown( exp )</strong></p>
<p>Returns true if the expression is unknown (see below)</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Conversion Functions</strong></span></h3>
<p><strong>toNumber( exp )</strong></p>
<p>Convert the expression to a number – expression should be a string or a number.</p>
<p>Uses Session.fromString(cboTypeDecimal)</p>
<p style="padding-left:30px;"> </p>
<p><strong>toDate( exp )</strong></p>
<p>Convert the expression to a Calendar.</p>
<p>Expression should be a string or a date. Uses Session.fromString(cbotypeDateTime)</p>
<p style="padding-left:30px;"> </p>
<p><strong>toJavaDate( exp )</strong></p>
<p>Convert the expression to a Date. Expression should be a string or a Calendar. Similar to toDate but returns value as a Date.</p>
<p style="padding-left:30px;"> </p>
<p><strong>toDisplayString(exp1, exp2, exp3)</strong></p>
<p>Converts the expression (<em>exp1</em>) to a localized string. Exp2 and exp3 are optional parameters.</p>
<p>If the object type for <strong><em>exp1</em></strong> are: <em>GregorianCalendar</em> or <em>Date</em> Java class, then <em>Session.toDateString</em> is called.</p>
<p><strong>Exp2</strong> will be <em>PictureString</em> parameter. If Exp3 is specified, then it will be the <em>MaskString</em> parameter.</p>
<p style="padding-left:30px;"> </p>
<p>If the object type for <strong>exp1</strong> is <em>Money</em> object, then <em>Session.toCurrencyString</em> is called.</p>
<p>If the object type for <strong>exp1</strong> are <em>BigDecimal</em>, <em>Float</em>, <em>Integer</em> or <em>Double</em>, then <em>Session.toNumberString</em> is called.</p>
<p>Otherwise, the default <em>toString()</em> is returned</p>
<p style="padding-left:30px;"> </p>
<p><strong>toFocusObject(exp1, exp2) </strong></p>
<p>Convert arbitrary strings to Focus Object.</p>
<p><em>toFocusObject</em> function can be used to convert arbitrary strings to Focus Object for passing to services.</p>
<p><em>Exp1</em>: can be either a database Object Name or an expression. If it is expression then it should be given in such a way that the evaluated result value of this parameter should resolve to a <em>DB Object Name</em>.</p>
<p><em>Exp2</em>: can be either a DB Objid or an expression.  If it is an expression then it should be given in such a way that the evaluated result value of this parameter should resolve to an Objid of the row in the corresponding table.  </p>
<p><em>toFocusObject </em>function takes 2 parameters. These parameters can be either expressions or they may be just a table name and Objid. If the parameters are expressions then it will evaluate these expressions and constructs a new Focus Object based on the evaluated values of the input parameters.</p>
<p>Input expressions should be evaluated to the proper table name and corresponding Objid of the row. The return value of this function will be a FocusObject of type com.clarify.sam.FocusObjectImpl.  It returns null if there is any exception.</p>
<p><strong>Examples</strong></p>
<pre style="padding-left:30px;">A:        toFocusObject ('user', $case:case_wip2wipbin:wipbin_owner2user:objid)</pre>
<p style="padding-left:90px;">The above expression returns a focus object of type “user”</p>
<p style="padding-left:120px;"> </p>
<pre style="padding-left:30px;">B:        toFocusObject ('con’ + ’tact', $case:case_reporter2contact:objid)</pre>
<p style="padding-left:90px;">The above expression returns a focus object of type “contact”</p>
<p style="padding-left:120px;"> </p>
<p>     If we know the Objid of the focus object then we can also specify <em>toFocusObject</em> function like below:</p>
<pre style="padding-left:30px;">C:        toFocusObject ('contact',  ‘268435501’)</pre>
<p style="padding-left:90px;">The above expression returns a focus object of type “contact” which will have the table name as ‘contact’ and Objid as ‘268435501’</p>
<p style="padding-left:90px;"> </p>
<p>    Site which has an objid from CDO / XVO</p>
<pre style="padding-left:30px;">D:         toFocusObject(‘site’, $Cdo:myCdoVariable:siteObjid)</pre>
<p style="padding-left:30px;">                CDO to XVO type conversion is already supported, so a real bona-fide site CDO could be passed<br />
                where an XVO parameter is needed.</p>
<p style="padding-left:30px;"> </p>
<p><strong>toString( exp )</strong></p>
<p>Convert an expression to a string. Uses Session.toString.</p>
<p style="padding-left:30px;"> </p>
<p><strong>toInteger( exp )</strong></p>
<p>Take the integer result of an expression, discarding the fractional part.</p>
<p style="padding-left:30px;"> </p>
<p> </p>
<h3><span style="color:#ff0000;"><strong>Date Intervals</strong></span></h3>
<p>The intervals for date calculations are one of the following:</p>
<p><strong>y (</strong>years), <strong>m (</strong>months), <strong>d(</strong>days), <strong>h (</strong>hours), <strong>n(</strong>minutes), <strong>s (</strong>seconds = default)</p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Constants</strong><strong></strong></span></h3>
<p>Constants are defined as numeric, or string.</p>
<ol>
<li>All numeric constants must be represented in locale independent format.<br />
 </li>
<li>All string literal must be represented in locale independent format.<br />
 </li>
<li>String must be delimited single quotes (‘’). The following escape sequences may be embedded inside a string:  \n \r \t  \’<br />
 </li>
<li>#&lt;nmToken&gt; is identified as string literal whose value will be looked up in <em>table_string_db</em> in current locale using &lt;nmToken&gt;. Exception are thrown if lookup is failed.<br />
 </li>
<li><strong>true</strong> is used to represent Boolean true value<br />
 </li>
<li><strong>false</strong> is used to represent Boolean false value<br />
 </li>
<li><strong>null</strong> is the null value<br />
 </li>
</ol>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Null values</strong><strong></strong></span></h3>
<p>Experssion returns Java <strong><em>null</em></strong> in the following conditions:</p>
<pre style="padding-left:30px;">If &lt;operand1&gt; then &lt; operand2&gt; else &lt; operand3&gt;</pre>
<ul>
<li>operand1 is not a Boolean class<br />
 </li>
<li>operand1 is  a Boolean class and operand2 or operand3 is a null&lt; operand1&gt; AddOp &lt; operand2&gt;<br />
&lt; operand1&gt; MultOp &lt; operand2&gt;</li>
<li>operand1 is null and operator is Mul/Div/Mod.<br />
  </li>
<li>operand1 is null and operator is Add/Sub and operand2 is null<br />
   </li>
<li>operand1 is not null and operand2 is null and operator is Add/Sub/Div/Mod<br />
   </li>
<li>operand1 is not null and operand2 is null and operator is Mul<br />
 </li>
</ul>
<p> </p>
<p><strong>Unary &lt; operand &gt;</strong></p>
<p>Operand is NULL</p>
<p style="padding-left:30px;"> </p>
<p><strong>Named Expression</strong></p>
<p>Named Expression evaluates to NULL</p>
<p style="padding-left:30px;"> </p>
<p><strong>Constant</strong></p>
<p>Constant is a Null Literal</p>
<p style="padding-left:30px;"> </p>
<p><strong>DataPath Value</strong></p>
<p>A <em>CboError</em> from <em>DataPath</em> or <em>DataPath</em> returns a null as a value</p>
<p style="padding-left:30px;">  </p>
<h3><span style="color:#ff0000;"><strong>Unknown values</strong><strong></strong></span></h3>
<p>There are some circumstances where a path cannot be evaluated. In these cases, the result of the expression <strong>is not known</strong>. For certain cases, it may be possible to default a value (for example Process Manager returns the first row when multiple rows are returned when a single row is expected).</p>
<p style="padding-left:30px;">  </p>
<p><strong>Examples</strong></p>
<ul>
<li>A single row is called for, but multiple rows are returned. For example, a path traverses a one-to-many relation with no qualifier, and is not used in a <em>Count()</em> function.  <strong><em>The first value returned by the database read is returned – the value is known<br />
</em></strong></li>
<li>No database row is returned         -      A relation is not set (Data path returns null value)<br />
 </li>
<li>The field or item is not defined    -      A path tries to access a field (e.g. in a CDO or CBO),   property or attribute that is not defined.<br />
  </li>
<li>Flexible attribute not defined      -     The path refers to a flexible attribute that does not exist</li>
<li>DataPath returns null value          -     A data path that returns a null value is also considered an  unknown value</li>
</ul>
<p> </p>
<p>When a path cannot be resolved, it will have the value <strong><em>unknown</em></strong>. Any expression involving an unknown value becomes unknown. Unknown is returned from the expression evaluator.</p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Exceptions</strong><strong></strong></span></h3>
<p>The followings list the exception type and conditions under which exceptions will be thrown by Expr.</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-05-exceptions.png"><img class="alignnone size-full wp-image-1523" title="Exp 05 Exceptions" src="http://yuvalrs.files.wordpress.com/2011/05/exp-05-exceptions.png?w=613&#038;h=49" alt="" width="613" height="49" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Using Expressions &#8211; Examples</strong><strong></strong></span></h3>
<ol>
<li>The Collection-Path is a hashmap that points to an array of hashmap. ‘Tables’ is a key in the contextMap and the value of ‘Tables’ points to a HashMap called <em>Tables</em>.The <em>Tables</em>HashMap has a key called ‘Products’ whose the value is an array of hashmap.<br />
     <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-06-code-example-1.png"><img title="Exp 06 Code example 1" src="http://yuvalrs.files.wordpress.com/2011/05/exp-06-code-example-1.png?w=599&#038;h=43" alt="" width="599" height="43" /></a><br />
   <br />
     <br />
The following illustrates an example on how to setup the contextMap properly:<br />
       <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-07-code-example-2.png"><img title="Exp 07 Code example 2" src="http://yuvalrs.files.wordpress.com/2011/05/exp-07-code-example-2.png?w=599&#038;h=370" alt="" width="599" height="370" /></a><br />
          <br />
       <br />
         <br />
 The context “Tables” from above is setup similar to a database table as follows:<br />
  <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-08-table-example.png"><img title="Exp 08 Table example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-08-table-example.png?w=595&#038;h=97" alt="" width="595" height="97" /></a><br />
    <br />
    </li>
<li>The collection-path is a <em>hashmap</em>that points to an array of Focus objects. ‘NewCases’ is a key in the ‘Row’ hashmap and the value of ‘NewCases’ is an array of Focus objects which points to a case object.The following illustrates an example on how to setup the contextMap properly:<br />
      <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-09-code-example.png"><img class="alignnone size-full wp-image-1533" title="Exp 09 Code example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-09-code-example.png?w=599&#038;h=32" alt="" width="599" height="32" /></a><br />
  <br />
     <br />
         </li>
<li>The collection-path is a rowset path that returns an array of Focus objects (which points to a <em>site</em> schema type).<br />
$Focus is set to a case object.<br />
        <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-10-code-example.png"><img class="alignnone size-full wp-image-1535" title="Exp 10 Code example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-10-code-example.png?w=599&#038;h=45" alt="" width="599" height="45" /></a><br />
      <br />
  <br />
           </li>
<li>The collection-path, $CdoCases:openCases, returns a CdoCol which constains a collection of Cdo objects. $CdoCases is set to a CdoManager in the contextMap.<br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-11-code-example.png"><img class="alignnone size-full wp-image-1536" title="Exp 11 Code example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-11-code-example.png?w=599&#038;h=44" alt="" width="599" height="44" /></a><br />
    <br />
  <br />
 The following illustrates an example on how to setup the <em>contextMap</em> properly:<br />
    <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-12-code-example.png"><img class="alignnone size-full wp-image-1537" title="Exp 12 Code example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-12-code-example.png?w=636&#038;h=410" alt="" width="636" height="410" /></a><br />
    <br />
     </li>
<li>The example illustrates how to use countWhere. Using the context “Tables” from example1, the following countWhere expressions returns:<br />
           <br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/exp-13-code-example.png"><img class="alignnone size-full wp-image-1538" title="Exp 13 Code example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-13-code-example.png?w=636&#038;h=155" alt="" width="636" height="155" /></a></li>
</ol>
<p>  </p>
<h3 style="padding-left:30px;"><strong>   </strong></h3>
<h3><strong>countFlex Syntax:</strong><strong>    </strong>countFlex(<em>Path [, eflags [, enumType]</em>)</h3>
<p><strong><em>Path</em></strong> is a DataPath that returns a valid focus object (with valid DbObjectName and objid). If an array of focus objects are return, countFlex returns the count for the first element from the array.<br />
If Path is the only parameter specified, then it returns the number of defined flexible attributes.</p>
<p style="padding-left:30px;">            </p>
<p><strong>eflags</strong> is an optional parameter, if specified, returns the number of defined flexible attributes whose flexible definition flags value matches (bitwise) with eflags. eflags can be any expression.<br />
If eflags &lt; 0, then <em>eflags</em> is ignored.</p>
<p style="padding-left:30px;">    <br />
       </p>
<p><strong>enumType</strong> is an optional parameter and have one of the following values:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-14-enum-example.png"><img class="alignnone size-full wp-image-1540" title="Exp 14 Enum example" src="http://yuvalrs.files.wordpress.com/2011/05/exp-14-enum-example.png?w=405&#038;h=81" alt="" width="405" height="81" /></a></p>
<p>If <em>enumType</em> is not one of the above values, then the set should be the defined flexible attributes set.</p>
<p>If <em>enumType</em> and <em>eflags</em> are defined and have valid values, then the flexible attributes set defined by <em>enumType</em> should be used to match against the <em>eflags</em> value.</p>
<p style="padding-left:30px;"> </p>
<p><strong>Return Value</strong></p>
<p>If <em>Path</em> evaluates to a valid path and focus object returns a valid object, then a count value is returned, else a null is returned and Unknown is set to true.</p>
<p>The followings list the exception type and conditions under which exceptions will be thrown by Expr.</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-15-conditions-table.png"><img class="alignnone size-full wp-image-1543" title="Exp 15 Conditions table" src="http://yuvalrs.files.wordpress.com/2011/05/exp-15-conditions-table.png?w=578&#038;h=56" alt="" width="578" height="56" /></a></p>
<p style="padding-left:30px;"> </p>
<p><strong>Examples:</strong><strong></strong></p>
<p>1)    $Site points to a site Focus object. </p>
<p style="padding-left:30px;"><em>countFlex</em> returns the number of defined flexible attributes.</p>
<pre style="padding-left:30px;">countFlex($Site)</pre>
<p>2)    $Focus points to an <em>order_action</em> Focus object. <em>countFlex</em> returns the number of defined flexible attributes<br />
        with eflags bit 8 (External System) set.</p>
<pre style="padding-left:30px;">countFlex($Focus, 08)</pre>
<p>3)     The first element from the Focus array should be used to evalaute against the <em>eflags</em> value<br />
         (pre and post set). The flexible attribute set is restricted to attributes which have Data.</p>
<pre style="padding-left:30px;">countFlex( $OpenCase:case_reporter2subcase, 3, cboConstants.cboFieldSetHasData )
 </pre>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Named Expressions</strong><strong></strong></span></h3>
<p>In order to facilitate an easy to use end user interface, expressions are able to contain named-expressions, stored in the database.</p>
<p>A named-expression is denoted by a <strong><em>domain</em></strong> and a <strong><em>name</em></strong><em>.</em></p>
<p>Optional parameter(s) can be specified with named-expression. The domain is a logical grouping of named-expressions to enable different applications of the same name. Recursive Named Expression is not supported.</p>
<p>The syntax is:</p>
<pre style="padding-left:30px;">? domain.name(&lt;ParamName&gt;:=expression,...)</pre>
<p> </p>
<p>Named expression is an expression that has been defined in the database. Use the CRM Administrator module to manage Named Expressions</p>
<p> Syntax:</p>
<pre style="padding-left:30px;">?[Domain].[Name]</pre>
<ul>
<li>Domain        – logical grouping</li>
<li>Name           – User-friendly name</li>
<li>Expression   – the actual expression itself</li>
</ul>
<p> </p>
<p>Example:</p>
<pre style="padding-left:30px;">?Sales.TaskDueDate</pre>
<p style="padding-left:30px;">   </p>
<h3><span style="color:#ff0000;"><strong>Named Expression Parameters</strong><strong></strong></span></h3>
<p> </p>
<p><strong>Overview</strong></p>
<p>The Named Expressions parameters mechanism addresses the following:</p>
<ol>
<li>Use multiple parameters syntactically<br />
   </li>
<li>Support parameter type checking during Expr evaluation phase<br />
     </li>
<li>Support UI design time type validation for parameters<br />
   </li>
<li>Support UI design time retrieval of parameter list for a given Named Expression<br />
   </li>
</ol>
<p> </p>
<h3><strong>Parameterized Named Expression Syntax</strong><strong></strong></h3>
<pre style="padding-left:30px;">?domain.name( &lt;ParamName&gt; :=expression, ...)</pre>
<p>&lt;ParamName&gt; is the parameter name.</p>
<p>Multiple parameterized Named Expressions are allowed inside a single expression, but all <em>ParamName</em> must be unique within the Named Expression. Parameter <em>name/value</em> pairs are mandatory.</p>
<p>For basic Java type (java.*), Expression do type checking and conversion to the type as defined in <strong>TABLE_EXPR.Type</strong> and throws an error if type checking or conversion fails.</p>
<p>For non basic Java types, Expression just do type checking.</p>
<p style="padding-left:30px;">    </p>
<p>The followings list the exception type and conditions under which the exception is thrown by Expr during the <em>prepare </em>phase:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-16-conditions-table-2.png"><img class="alignnone size-full wp-image-1544" title="Exp 16 Conditions table 2" src="http://yuvalrs.files.wordpress.com/2011/05/exp-16-conditions-table-2.png?w=638&#038;h=207" alt="" width="638" height="207" /></a></p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Parameter Binding Variable Syntax</strong><strong></strong></span></h3>
<p>To facilitate binding the identifiers from the Named Expression to the actual expression text defined in <em>table_expr.Expr</em>, parameter binding variables are created.</p>
<p>The syntax for parameter binding variable is:</p>
<pre style="padding-left:30px;">$Param: ParamName</pre>
<pre style="padding-left:30px;"> 
 </pre>
<h3><span style="color:#ff0000;"><strong>Database Schema Definition</strong></span></h3>
<p>Expression information is stored in <em>table_expr</em> as follows:</p>
<p><strong>TABLE_EXPR</strong></p>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/exp-17-table-expr.png"><img class="alignnone size-full wp-image-1556" title="Exp 17 TABLE EXPR" src="http://yuvalrs.files.wordpress.com/2011/05/exp-17-table-expr.png?w=608&#038;h=340" alt="" width="608" height="340" /></a></strong></p>
<p style="padding-left:30px;"><strong>  </strong></p>
<p style="padding-left:30px;"><strong></strong> </p>
<p>Parameter information is stored in <em>table_expr_param</em> as follows:</p>
<p><strong>TABLE_EXPR_PARAM</strong></p>
<p><strong></strong> <a href="http://yuvalrs.files.wordpress.com/2011/05/exp-18-table_expr_param2.png"><img class="alignnone size-full wp-image-1561" title="Exp 18 TABLE_EXPR_PARAM" src="http://yuvalrs.files.wordpress.com/2011/05/exp-18-table_expr_param2.png?w=608&#038;h=629" alt="" width="608" height="629" /></a></p>
<p style="padding-left:30px;"><strong></strong> </p>
<p> </p>
<h3><strong><span style="color:#ff0000;">Optional Parameters in Named Expressions</span></strong></h3>
<p>This feature allows named expressions to contain optional parameters, which means if any parameter is not specified in the named expression, then default value of the parameter will be substituted in the missing parameter. If the default value cannot be converted to the expected data type then the result of the expression will be unknown.</p>
<p>While parsing the sub expression, if parser finds any parameter is missing then it tries to get the specified default parameter value from table EXPR_PARAM.default_value. If it finds any default value for the missing parameter then it substitutes the default value in the missing parameter. If the default value cannot be converted to the expected data type then the result of the expression will be unknown. </p>
<p>Suppose existing expression component handles named expression like:</p>
<pre style="padding-left:30px;">?morder.isHandset(Territory:=’EastCoast’, DeptId:=12)</pre>
<pre style="padding-left:60px;"> </pre>
<p>Optional parameter feature allows the above expression to be specified in the following ways:</p>
<pre style="padding-left:30px;">?morder.isHandset(Territory:=’EastCoast’, DeptId:=12 )</pre>
<p style="padding-left:30px;">The above expression is same as the expression without optional parameter.</p>
<p style="padding-left:30px;"> </p>
<pre style="padding-left:30px;">?morder.isHandset(Territory:=’EastCoast’)</pre>
<p style="padding-left:30px;">The above expression assumes the default value of parameter DeptId is specified in the database.</p>
<p style="padding-left:30px;"> </p>
<pre style="padding-left:30px;">?morder.isHandset(DeptId:=12)</pre>
<p style="padding-left:30px;">The above expression assumes the default value of parameter Territory is specified in the database.</p>
<p style="padding-left:30px;">   </p>
<pre style="padding-left:30px;">?morder.isHandset</pre>
<p style="padding-left:30px;">The above expression assumes the default values of parameters Territory and DeptId is specified in the database.</p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Dynamic Expressions</strong></span></h3>
<p>Dynamic path modifiers,  the Path modifier determined at runtime.</p>
<p><strong>Usage:</strong></p>
<p>A value assigned to the <em>$Var</em>.</p>
<pre style="padding-left:30px;">Assign ‘C123’ to $Var:SubCaseId

 </pre>
<p>The <em>$Var</em> is used in the iteration</p>
<pre style="padding-left:30px;">$Focus:case2subcase:case(id=$Var:SubCaseId):title</pre>
<p style="padding-left:60px;"> </p>
<h3><strong><span style="color:#ff0000;">Reference Path</span></strong></h3>
<p>An expression that points to a path</p>
<p>Build the path:</p>
<ul>
<li>Set the process variable <em>CasePath</em> with the contents of Case title field.</li>
<li>Case record is identified by the variable <em>CaseObjid</em>:</li>
</ul>
<pre style="padding-left:30px;">Assign ‘$Db:case(objid=’ + $Var:CaseObjid + ‘):title’ to $Var:CasePath</pre>
<pre style="padding-left:30px;"> </pre>
<p>Use the path:</p>
<pre style="padding-left:30px;">$$Var:CasePath</pre>
<pre style="padding-left:30px;">$Db:case(objid=2435463534):title
 </pre>
<pre style="padding-left:30px;"> </pre>
<h3><strong><span style="color:#008000;">Caching iterative data path values inside array functions</span></strong></h3>
<p><strong>Expr</strong> object contains an array of objects which hold cached data path values.  Attempt to get data path value from cache, if not present, and then cache it. Incrementally cache data path array values as they are iterated over.</p>
<p>The cache is optimized &#8212; if data path values are not reused within the expression, then they are not cached.  However it may not be possible to predetermine if data path values will be reused (e.g. reference path) so must cache it those cases.</p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Background</span></strong></h3>
<p>Array functions like ‘<em>any’</em> and ‘<em>every’</em> are iterates over the row, access a value from each row and evaluates the value against some rule specified in the function.  When it iterates over the row the condition (rule) may have an expression and expression may refer to the same data path more than once. In these cases currently, when each time it encounters the same data path in the condition it calls Datapath.readItem API to read the path value.</p>
<p>By caching the data path value once it read, then the next time when it sees the same data path in the condition (rule) then it will get the path value from the cache instead of calling Datapath.readItem API, so the performance of expression evaluation can be improved while handling array functions.</p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Summary</span></strong></h3>
<p>While evaluating array function, when it first time encounters a data path in the condition it gets the path value by calling <em>Datapath.readItem</em> API and stores data path value in cache. It uses the key as a combination of Collection-Path plus column name of <em>IterativeContextName</em> plus iteration row number.</p>
<p>For example, in the following example ‘every’ function iterates through each row and executes the rule.  In this example data path  $eachcase:title is refereed twice, so while executing each row first time it gets the path value by calling readItem API and stores it in the cache, then from the second time onwards for the same data path  it gets the path value from cache.</p>
<pre style="padding-left:30px;">every($Row:case, '$eachcase', <strong>($eachcase:title = 'Test LAB') or ($eachcase:title+'-'+'LAB Test' = 'First case from thin client-LAB Test')</strong>)</pre>
<p>Cache will be cleared once the expression is evaluated and its lifetime is only for the current expression.</p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<p>Next Part:   <strong><a title="using-paths-and-expressions-in-smart-client" href="http://nextgencon.com/2011/05/13/using-paths-and-expressions-in-smart-client/">Using Paths and Expressions in Smart Client</a></strong></p>
<pre style="padding-left:30px;"> </pre>
<pre style="padding-left:30px;"> 
 </pre>
<p style="padding-left:30px;">  </p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/amdocs/apm/'>APM</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/smart-client/'>Smart Client</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a> Tagged: <a href='http://nextgencon.com/tag/apm/'>APM</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1509/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1509&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/05/12/using-expressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/10-named-expression1.png" medium="image">
			<media:title type="html">10 - Named Expression</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-01-exp-syntax.png" medium="image">
			<media:title type="html">Exp 01 - Exp Syntax</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-02-binary-ops.png" medium="image">
			<media:title type="html">Exp 02 - Binary Ops</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-03-return-value-1.png" medium="image">
			<media:title type="html">Exp 03 Return Value 1</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-04-return-value-2.png" medium="image">
			<media:title type="html">Exp 04 Return Value 2</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-05-exceptions.png" medium="image">
			<media:title type="html">Exp 05 Exceptions</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-06-code-example-1.png" medium="image">
			<media:title type="html">Exp 06 Code example 1</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-07-code-example-2.png" medium="image">
			<media:title type="html">Exp 07 Code example 2</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-08-table-example.png" medium="image">
			<media:title type="html">Exp 08 Table example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-09-code-example.png" medium="image">
			<media:title type="html">Exp 09 Code example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-10-code-example.png" medium="image">
			<media:title type="html">Exp 10 Code example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-11-code-example.png" medium="image">
			<media:title type="html">Exp 11 Code example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-12-code-example.png" medium="image">
			<media:title type="html">Exp 12 Code example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-13-code-example.png" medium="image">
			<media:title type="html">Exp 13 Code example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-14-enum-example.png" medium="image">
			<media:title type="html">Exp 14 Enum example</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-15-conditions-table.png" medium="image">
			<media:title type="html">Exp 15 Conditions table</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-16-conditions-table-2.png" medium="image">
			<media:title type="html">Exp 16 Conditions table 2</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-17-table-expr.png" medium="image">
			<media:title type="html">Exp 17 TABLE EXPR</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/exp-18-table_expr_param2.png" medium="image">
			<media:title type="html">Exp 18 TABLE_EXPR_PARAM</media:title>
		</media:content>
	</item>
		<item>
		<title>Database Path Contexts (Part 2)</title>
		<link>http://nextgencon.com/2011/05/01/database-path-contexts-part-2/</link>
		<comments>http://nextgencon.com/2011/05/01/database-path-contexts-part-2/#comments</comments>
		<pubDate>Sun, 01 May 2011 21:51:54 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[Smart Client]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1407</guid>
		<description><![CDATA[The previous part Data Paths and Expressions (Part 1)  described the data path concept and its usage in various areas cross the CRM and its peripheral applications. Database path contexts include paths with focus object as context, as well as absolute paths (Database contexts). BO context object can serve as focus object as well and the path can [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1407&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The previous part <a href="http://wp.me/pPfT5-mf">Data Paths and Expressions (Part 1)</a>  described the data path concept and its usage in various areas cross the CRM and its peripheral applications.</p>
<p>Database path contexts include paths with <em>focus object</em> as context, as well as <em>absolute paths</em> (Database contexts).</p>
<p>BO context object can serve as focus object as well and the path can be a BO context path.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>Path Modifiers</strong></span></h3>
<p>In addition to the basic syntax, path relations can have <em>modifiers</em>, specified using round brackets <strong>(</strong> and <strong>)</strong> after the relation.</p>
<p style="padding-left:30px;"><strong>      </strong></p>
<h3><span style="color:#ff0000;"><strong>Using Conditions</strong></span></h3>
<p>A condition modifier must be specified when there is a need to refer to a single target instance when traversing OTM or MTM relations</p>
<p>The modifiers serve two purposes:</p>
<ol>
<li>Restricting a path or a portion of the path to a <strong><em>unique</em></strong> result.</li>
<li>Resolving the <strong><em>starting point </em></strong>for an absolute path.</li>
</ol>
<p style="padding-left:30px;"><strong>       </strong></p>
<p><strong>1.     </strong><strong>Restricting a path or a portion of the path to a unique result.</strong></p>
<p style="padding-left:30px;">For example, consider the following path that traverses from a <strong><em>case</em></strong>, to the <strong><em>sites</em></strong> for its <strong><em>contacts</em></strong>:</p>
<p style="padding-left:30px;"> <a href="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-01.png"><img class="alignnone size-full wp-image-1408" title="Using Conditions 01" src="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-01.png?w=634&#038;h=39" alt="" width="634" height="39" /></a></p>
<p style="padding-left:30px;"> Since the<em> contact2contact_role </em>relation is <strong>one to many</strong>, this path might return several site_ids. The path can be modified to restrict the result as follows:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-02.png"><img class="alignnone size-full wp-image-1409" title="Using Conditions 02" src="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-02.png?w=635&#038;h=56" alt="" width="635" height="56" /></a></p>
<p style="padding-left:30px;">Note role_name is unique for each contact / contact_role / site combination. Therefore this path will select a single item.</p>
<p style="padding-left:30px;">The SQL for this path would be:</p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"><strong>  <a href="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-sql-031.png"><img class="alignnone size-full wp-image-1495" title="using-conditions-sql-03" src="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-sql-031.png?w=633&#038;h=131" alt="" width="633" height="131" /></a>      </strong></p>
<p><strong>2.      Resolving the starting point for an absolute path.</strong></p>
<p style="padding-left:30px;">For example:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-resolving-starting-point-04.png"><img class="alignnone size-full wp-image-1412" title="Using Conditions - Resolving Starting Point 04" src="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-resolving-starting-point-04.png?w=636&#038;h=31" alt="" width="636" height="31" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Using Aliases</span></strong></h3>
<p>Alias must be specified when it is necessary to differentiate between two different paths to the same target object. For example, a case query for Owner = ‘jdoe’ and Originator=‘jsmith’ uses the case query properties:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-01.png"><img class="alignnone size-full wp-image-1413" title="Using Aliases 01" src="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-01.png?w=635&#038;h=48" alt="" width="635" height="48" /></a></p>
<p>The following SQL query is generated by the query:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-sql-02.png"><img class="alignnone size-full wp-image-1414" title="Using Aliases (SQL) 02" src="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-sql-02.png?w=635&#038;h=178" alt="" width="635" height="178" /></a></p>
<p style="padding-left:30px;"><strong>  </strong></p>
<h3><strong><span style="color:#ff0000;">Property Name Path</span></strong></h3>
<p>Property names are defined in the prop_name database object.</p>
<p><strong>Example:</strong></p>
<p>Assume case property “<strong><em>Originator</em></strong>” is path to case originator login name i.e.<strong> prop_name</strong> is “<strong><em>Originator</em></strong>” and<strong> path_name</strong> field is “<em><strong>case</strong>_<strong>originator2user:login_name</strong></em>”</p>
<p>Path:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/property-name-path-01.png"><img class="alignnone size-full wp-image-1415" title="Property Name Path 01" src="http://yuvalrs.files.wordpress.com/2011/05/property-name-path-01.png?w=618&#038;h=29" alt="" width="618" height="29" /></a></p>
<p>With case focus specifies to login name of case originator</p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Flexible Attributes</span></strong></h3>
<p>A Flexible Attribute may be used to terminate a path definition:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/flex-attributes-01.png"><img class="alignnone size-full wp-image-1416" title="Flex Attributes 01" src="http://yuvalrs.files.wordpress.com/2011/05/flex-attributes-01.png?w=616&#038;h=29" alt="" width="616" height="29" /></a></p>
<p>Here bandwidth is a previously-defined Flexible Attribute for <em>site_part</em></p>
<p style="padding-left:30px;"><em></em> </p>
<h3><strong><span style="color:#ff0000;">Run Time Path Types</span></strong></h3>
<p>The class <em>CoreDataPath</em> (amdocs.core.datapath.CoreDataPath) provides methods for reading and writing data using data paths.</p>
<p>A data path defines the location of a data item within a specified context object.</p>
<p>A path starts by identifying the context object, and consists of one or more path items, separated by colons (:), that lead to the required data item.</p>
<p>For example:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-01.png"><img class="alignnone size-full wp-image-1417" title="Run Time Path Types 01" src="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-01.png?w=616&#038;h=29" alt="" width="616" height="29" /></a></p>
<p>This defines a data path using a context object named<strong> Var</strong>, with path items Customer and Address that lead to the data item State.</p>
<p>The context object name is prefixed with a dollar sign (<strong>$</strong>).</p>
<p>Context objects are passed to the API using a<em> java.util.Map</em> with the context names as the keys. Paths that do not specify a context name use the <strong>default</strong> context passed to the API methods. The type of the context determines the mechanism by which the path items are evaluated.</p>
<p style="padding-left:30px;"> </p>
<p>The following context types are supported for all application frameworks:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-table-02.png"><img class="alignnone size-full wp-image-1419" title="Run Time Path Types (table) 02" src="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-table-02.png?w=640&#038;h=244" alt="" width="640" height="244" /></a></p>
<p>With the exception of JDBC paths, the appropriate evaluation mechanism is used to evaluate each item.</p>
<p style="padding-left:30px;"> </p>
<p>Thus, in the example above, <strong>$Var</strong> might refer to a<em> java.util.Map</em>, that holds a simple value object keyed by &#8220;Customer&#8221;. The path might be evaluated by</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-jdbc-03.png"><img class="alignnone size-full wp-image-1420" title="Run Time Path Types (JDBC) 03" src="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-jdbc-03.png?w=617&#038;h=29" alt="" width="617" height="29" /></a></p>
<p>JDBC paths use the reference path mechanism for switching between evaluation mechanisms &#8211; this is explained in more detail below.</p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Indirect Paths</span></strong></h3>
<p>An indirect path is a path that defines a (String) data item that contains a path. Indirect paths start with a dollar, and must also specify a context name (the default cannot be inferred). Thus indirect paths start with &#8220;$$&#8221;.</p>
<p>For example, suppose a JDOM element contained the following structure:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/indirect-paths-01.png"><img class="alignnone size-full wp-image-1421" title="Indirect Paths 01" src="http://yuvalrs.files.wordpress.com/2011/05/indirect-paths-01.png?w=617&#038;h=81" alt="" width="617" height="81" /></a></p>
<p>The path <em>$Elem:State</em> will evaluate to the string &#8220;<em><strong>$Var:Customer:Address:State</strong></em>&#8220;.</p>
<p>The path <em>$$Elem:State</em> will evaluate to the actual state.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>JDBC Paths Contexts</strong></span></h3>
<p>The <strong><em>jdbcDatapath</em></strong> use JDBC mechanism to access external databases.</p>
<p>This includes paths with focus object as context as well as absolute paths (JDBC contexts). Context name is used to resolve a Context object at runtime.</p>
<p>The context type <strong><em>JdbcFocusObject</em></strong> ( amdocs.core.JdbcFocusObject) can identify JDBC data.</p>
<p style="padding-left:30px;"><strong>       </strong></p>
<h3><span style="color:#ff0000;"><strong>JDBC Path Data Sources</strong></span></h3>
<p>JDBC database is configured as a <strong>SAM (</strong>Server Action Manager) <strong>resource</strong> and is identified by a resource name defined in ASC.</p>
<p>The exact ASC node is  /AmdocsCommon/Aif/Connections/SamConnection.</p>
<p>Two types of JDBC data sources are used.</p>
<ol>
<li><strong>LocalJdbc</strong> data sources use <strong>inproc</strong> JDBC API and the database driver is located on the same machine.</li>
<li><strong>ContainerManaged</strong> JDBC data sources have the drivers located on different server and have the benefits of connection pooling, J2EE transactions etc. Amdocs CRM support both <strong><em>Local</em></strong> and <strong><em>Container Managed</em></strong> JDBC data sources.</li>
</ol>
<p style="padding-left:30px;"><strong>     </strong></p>
<p>The <strong>jdbcDatapath</strong> is using JDBC mechanism to access external databases. This includes paths with focus object as context as well as absolute paths (Jdbc contexts).</p>
<p>Context name is used to resolve a Context object at runtime.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>JdbcFocusObject</strong></span></h3>
<p>To identify a record in a database,<strong><em> JdbcFocusObject</em></strong> should be provided with the following parameters:</p>
<ul>
<li>Server Action Manager (SAM)</li>
<li>Resource name,</li>
<li>Table name</li>
<li>Table-filter.</li>
</ul>
<p> </p>
<p style="padding-left:30px;"><strong>Comments</strong></p>
<ul>
<li>If the <strong>table name</strong> is empty or null then the path is considered to be <strong>absolute data path</strong>.</li>
<li>If <strong>table name</strong> and <strong>table-filter</strong> are given, then the path is a <strong>relative path</strong> starting with the row identified by table-filter.</li>
<li>The method JdbcFocusObject.isAbsPath() indicates that the path is absolute (a TRUE value).<br />
If it returns FALSE it indicates that the paths is relative.</li>
</ul>
<p> </p>
<p>Amdocs / Clarify CRM databases have rich metadata for relations and prop-names. This simplifies <strong><em>datapath</em></strong> string specification.</p>
<p>For JDBC databases, metadata for relations and prop-names are defined in the Amdocs System Configurtion files (Prior to release 7.5 it used to be provided in an external <strong><em>JdbcSchema</em>.xml</strong> file).</p>
<p>The metadata is optional. The syntax allows relation information to be specified in-place. If metadata is provided then a logical relation name can be given in the path.</p>
<p>At runtime, <strong><em>datapath</em></strong> evaluats the relation name to physical relation information. For pre 7.5 releases <em>JdbcSchema.xml</em> must exist in same directory as <em>ClarifyEnv.xml</em>.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>JDBC Path Modifiers</strong></span></h3>
<p>In addition to the basic syntax, path relations can have <em>modifiers</em>, specified using round brackets <strong>(</strong>and<strong>)</strong> after the relation. The modifiers serve 2 purposes:</p>
<p style="padding-left:30px;"><strong>   </strong></p>
<p><strong><em>A.    Restricting a path or a portion of the path to a unique result.</em></strong></p>
<p style="padding-left:30px;">For example, consider the following path that traverses from an employee, to the publisher for its address:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-011.png"><img class="alignnone size-full wp-image-1446" title="JDBC Path Modifiers 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-011.png?w=639&#038;h=34" alt="" width="639" height="34" /></a></p>
<p style="padding-left:30px;">Since it is possible that two different employees named John Smith will be in more than one publisher, this path might return several addresses. The path can be modified as follows:</p>
<p style="padding-left:30px;"> <a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-022.png"><img class="alignnone size-full wp-image-1447" title="JDBC Path Modifiers 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-022.png?w=638&#038;h=51" alt="" width="638" height="51" /></a></p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;">The publisher name is unique for each publisher, this path selects a single item. The SQL for this would be:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-sql-031.png"><img class="alignnone size-full wp-image-1448" title="JDBC Path Modifiers (SQL) 03" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-sql-031.png?w=638&#038;h=69" alt="" width="638" height="69" /></a></p>
<p> </p>
<p><strong><em>B.    Resolving the starting point for an absolute path.</em></strong></p>
<p style="padding-left:30px;">For example:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-041.png"><img class="alignnone size-full wp-image-1449" title="JDBC Path Modifiers 04" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-041.png?w=638&#038;h=35" alt="" width="638" height="35" /></a></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>Relation Traversal</strong><strong></strong></span></h3>
<p><strong>RelationInfo</strong> is a path syntax element that defines how multiple tables are traversed. Each token specifies either the physical relation info used for joins or a logical relation name. If a logical relation name is given then the <strong>Context</strong> object provides an API to resolve this to physical relation info. </p>
<p><strong><em>Inner joins</em></strong> are used to traverse tables. The inner join is evaluation as follows:</p>
<ul>
<li>First token is field list from <strong><em>previous table</em></strong>.</li>
<li>Second token is <strong><em>current table</em></strong> name</li>
<li>Third token is <strong><em>field list</em></strong> belonging to current table</li>
</ul>
<p> </p>
<p>These 3 tokens are separated by two forward slash characters</p>
<p>Fields within a field list are separated by plus character. Typically the join includes one field from each table. But it is possible to have multi part join keys.</p>
<p>An optional filter can be added. The filter applies to current table.</p>
<p style="padding-left:30px;"><strong>    </strong></p>
<p><span style="color:#ff0000;"><strong>Examples</strong></span></p>
<p><strong>Path:  </strong><br />
<a href="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-12.png"><img class="alignnone size-full wp-image-1450" title="Relation Traversal Path - 1" src="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-12.png?w=638&#038;h=21" alt="" width="638" height="21" /></a></p>
<p>Refers to id_number field on the Case object (Database path)</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<p><strong>Path with relation:</strong></p>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-with-relation-2.png"><img class="alignnone size-full wp-image-1451" title="Relation Traversal Path With Relation - 2" src="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-with-relation-2.png?w=638&#038;h=21" alt="" width="638" height="21" /></a></strong></p>
<p>Refers to the handset field on the attrition object, related by the age and city of the customer (assume that the focus table object holds the table <strong>customer</strong> with the filter <strong>name = ‘John Smith’</strong>).</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<p><strong>Absolute path:</strong></p>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-3.png"><img class="alignnone size-full wp-image-1452" title="Relation Traversal Absolute Path- 3" src="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-3.png?w=637&#038;h=21" alt="" width="637" height="21" /></a></strong></p>
<p>Refers to the field <em>price plan</em> on the customer object, where the customer id is 91460.</p>
<p style="padding-left:30px;"> </p>
<p><strong>Absolute path with relation</strong></p>
<p><strong></strong> <a href="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-with-relations-4.png"><img class="alignnone size-full wp-image-1454" title="Relation Traversal Absolute Path with Relations - 4" src="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-with-relations-4.png?w=637&#038;h=39" alt="" width="637" height="39" /></a></p>
<p>This path selects a single item, even though it is possible to have more than one person named John Smith (since publisher name is unique for each employee).</p>
<p style="padding-left:30px;"><strong>   </strong></p>
<h3><span style="color:#ff0000;"><strong>JDBC Reference Paths </strong></span></h3>
<p>A <strong><em>reference path</em></strong> combines two paths into a single item.</p>
<ul>
<li>The first half of path can defines a JDBC focus object context</li>
<li>The second half defines a path from that JDBC focus object.<br />
The<em> <strong>reference operator</strong></em> ‘-&gt;’ separates the two components of the path.</li>
</ul>
<p style="padding-left:30px;"><strong>    </strong></p>
<p>The <strong><em>reference operator</em></strong> (-&gt;) conforms to the following rules:</p>
<ol>
<li>Left hand side path of context operator must be <strong>non-database path</strong> and right hand side path must be <strong>Jdbc focus object</strong> based database path with no context name.</li>
<li>Left hand side path of context operator must resolve to <strong><em>JdbcFocusObject</em></strong> to be used as context object for JDBC database path on right hand side of context operator.</li>
</ol>
<p><strong>Reference path example</strong><strong>:</strong></p>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/05/reference-path-1.png"><img class="alignnone size-full wp-image-1456" title="Reference Path 1" src="http://yuvalrs.files.wordpress.com/2011/05/reference-path-1.png?w=638&#038;h=28" alt="" width="638" height="28" /></a></strong></p>
<p>Specifies equip_id field of user object. Jdbc object is specified by Hash map path</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/reference-path-2.png"><img class="alignnone size-full wp-image-1457" title="Reference Path 2" src="http://yuvalrs.files.wordpress.com/2011/05/reference-path-2.png?w=638&#038;h=28" alt="" width="638" height="28" /></a></p>
<p>The Context name <em>Var</em> must resolve to valid context object instance at run time.</p>
<p style="padding-left:30px;"><strong>      </strong></p>
<p style="padding-left:30px;"><strong>       </strong></p>
<h3><span style="color:#ff0000;"><strong>Using Path in Configuration Settings</strong></span></h3>
<p><strong>JdbcSchema</strong></p>
<p>Schema information for <strong><em>relations</em></strong> and <strong><em>prop-names</em></strong> are now defined in ASC (Amdocs System Configuration) under the Path</p>
<pre>/amdocsCommon/amdocsCore/Core/DataPath/Jdbc/Schemas</pre>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-01.png"><img class="alignnone size-full wp-image-1460" title="JDBC Schema Configuration (ASC) 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-01.png?w=303&#038;h=250" alt="" width="303" height="250" /></a></p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-021.png"><img class="alignnone size-full wp-image-1461" title="JDBC Schema Configuration (ASC) 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-021.png?w=694&#038;h=281" alt="" width="694" height="281" /></a></p>
<p style="padding-left:30px;"><strong>     </strong></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<h3><strong><span style="color:#ff0000;">JDBC Resources</span></strong></h3>
<p>The following two resource types are supported by Server Action Manager (SAM) for JDBC:</p>
<ul>
<li><em>LocalJdbc</em></li>
<li><em>ContainerManagedJdbc</em>. </li>
</ul>
<p> </p>
<p>The configurations for these resource types are located in the ASC (Amdocs System Configuration) under the path</p>
<pre>/amdocsCommon/amdocsCore/Core/DataPath/Jdbc/Resources</pre>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-01.png"><img class="alignnone size-full wp-image-1462" title="JDBC Resource Configuration (ASC) 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-01.png?w=320&#038;h=231" alt="" width="320" height="231" /></a></p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-02.png"><img class="alignnone size-full wp-image-1463" title="JDBC Resource Configuration (ASC) 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-02.png?w=696&#038;h=179" alt="" width="696" height="179" /></a></p>
<p style="padding-left:30px;"><strong>        </strong></p>
<h3><span style="color:#ff0000;"><strong>More on  JDBC Data Pathes</strong></span></h3>
<p>JDBC paths enable data items to be accessed from a JDBC database. There are two types of path;<br />
<strong><em>relative</em></strong> and<em> <strong>absolute</strong></em>.</p>
<p>To explain these paths, consider this simple database schema:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/more-on-jdbc-data-paths-diagram-01.png"><img class="alignnone size-full wp-image-1466" title="More on JDBC Data Paths (Diagram) 01" src="http://yuvalrs.files.wordpress.com/2011/05/more-on-jdbc-data-paths-diagram-01.png?w=581&#038;h=246" alt="" width="581" height="246" /></a></p>
<p>The database defines books, their authors and organizations that deal with them.<br />
The role of the organization is one of &#8220;publisher&#8221;, &#8220;retailer&#8221; and so on.</p>
<p style="padding-left:30px;"><strong>   </strong></p>
<h3><span style="color:#ff0000;"><strong>Relative Paths</strong></span></h3>
<p>A relative path is used when the context object is a <strong><em>JdbcFocusObject</em></strong>.</p>
<p>The context object identifies a row in a database table &#8211; the path specifies how to get data starting from that row.</p>
<p>The simplest relative path consists of the context name, followed by a column name.</p>
<p style="padding-left:30px;"><strong>   </strong></p>
<p>For example:</p>
<p>A JDBC focus object might define a row in the book table. The book&#8217;s title is defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-01.png"><img class="alignnone size-full wp-image-1467" title="JDBC Relative Paths 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-01.png?w=617&#038;h=30" alt="" width="617" height="30" /></a></p>
<p>Joins are specified using a <strong><em>relation specification</em></strong>. The syntax of a relation is:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-02.png"><img class="alignnone size-full wp-image-1468" title="JDBC Relative Paths 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-02.png?w=616&#038;h=30" alt="" width="616" height="30" /></a></p>
<p>For example, the author of the book is defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-03.png"><img class="alignnone size-full wp-image-1470" title="JDBC Relative Paths 03" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-03.png?w=617&#038;h=30" alt="" width="617" height="30" /></a></p>
<p>Note the relation from table Books to table Author:  auth_id/author/id</p>
<p style="padding-left:30px;"><strong>   </strong></p>
<p>If a join is through a one-to-many relation, a filter may be added to a relation to specify a unique row.<br />
The syntax of a filter is:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-sql-expression-04.png"><img class="alignnone size-full wp-image-1471" title="JDBC Relative Paths (SQL Expression) 04" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-sql-expression-04.png?w=616&#038;h=30" alt="" width="616" height="30" /></a></p>
<p style="padding-left:30px;"><strong>   </strong></p>
<p>For example, the publisher of the book is defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-example-05.png"><img class="alignnone size-full wp-image-1472" title="JDBC Relative Paths (example) 05" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-example-05.png?w=617&#038;h=30" alt="" width="617" height="30" /></a></p>
<p>If a join condition requires <strong><em>concatenated keys</em></strong>, the concatenation is made using the plus sign (+).<br />
The syntax is</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-concatenated-keys-06.png"><img class="alignnone size-full wp-image-1473" title="JDBC Relative Paths (Concatenated Keys) 06" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-concatenated-keys-06.png?w=617&#038;h=45" alt="" width="617" height="45" /></a></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<p>The join condition is constructed like this:</p>
<p><img class="alignnone size-full wp-image-1474" title="JDBC Relative Paths (Concatenated Keys SQL) 07" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-concatenated-keys-sql-07.png?w=617&#038;h=45" alt="" width="617" height="45" /></p>
<p>Multi-part keys are specified using multiple plus signs.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<h3><span style="color:#ff0000;"><strong>Absolute paths</strong></span></h3>
<p>An absolute path is <strong>not</strong> used with a <strong><em>JdbcFocusObject</em></strong>.</p>
<p>Instead, the context name must be one of the JDBC data source names defined in ASC (Amdocs System Configurator) repository by the<strong> Core/JDBC/DataSources</strong> node.</p>
<p>The starting point of the path is a database. The first path item specifies a table name.</p>
<p>Suppose that the above database was defined as <strong>BooksDb</strong>. The path</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-01.png"><img class="alignnone size-full wp-image-1475" title="JDBC Absolute Paths 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-01.png?w=633&#038;h=30" alt="" width="633" height="30" /></a></p>
<p>returns an array of <strong><em>JdbcFocusObject</em></strong> with an entry for each book in the table.</p>
<p>Absolute paths are typically used with a filter. Thus, the author of &#8220;Lord of the Rings&#8221; is defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-02.png"><img class="alignnone size-full wp-image-1476" title="JDBC Absolute Paths 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-02.png?w=631&#038;h=30" alt="" width="631" height="30" /></a></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<h3><span style="color:#ff0000;"><strong>Logical Schema</strong></span></h3>
<p>JDBC paths can be simplified by defining a logical schema in the ASC (Amdocs System Configuration) repository by the<strong> Core/JDBC/Schema</strong> node. The schema defines<em> <strong>relation names</strong></em> and<em> <strong>property names</strong></em>.</p>
<p>A <strong><em>relation name</em></strong> associates a name to a join condition, for example <em>book2author</em> can be defined for the book table as <em>auth_id/author/id</em>. This enables the author of a book to be defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-011.png"><img class="alignnone size-full wp-image-1477" title="JDBC Logical Schema 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-011.png?w=631&#038;h=30" alt="" width="631" height="30" /></a></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<p>A <strong><em>property name</em></strong> defines an entire path.</p>
<p>For example the property <strong><em>publisher</em></strong> can be defined for the book table as :</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-02.png"><img class="alignnone size-full wp-image-1478" title="JDBC Logical Schema (property name) 02" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-02.png?w=631&#038;h=30" alt="" width="631" height="30" /></a></p>
<p style="padding-left:30px;"><strong> </strong></p>
<p>This enables the publisher of a book to be defined by:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-03.png"><img class="alignnone size-full wp-image-1479" title="JDBC Logical Schema (property name) 03" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-03.png?w=632&#038;h=30" alt="" width="632" height="30" /></a></p>
<p>Note that an exclamation mark is used to introduce a property.</p>
<p style="padding-left:30px;"><strong>     </strong></p>
<p>If a property name contains invalid characters (spaces or colons for example) it must be enclosed in double quotes.</p>
<p>For example:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-04.png"><img class="alignnone size-full wp-image-1480" title="JDBC Logical Schema (property name) 04" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-04.png?w=631&#038;h=29" alt="" width="631" height="29" /></a></p>
<p style="padding-left:30px;"><strong>    </strong></p>
<h3><span style="color:#ff0000;"><strong>Reference Paths</strong></span></h3>
<p>A <strong><em>reference path</em></strong> consists of two parts, separated by -&gt;.</p>
<ul>
<li>The first part of the path may use any context type, and must resolve to a <strong><em>JdbcFocusObject</em></strong>.</li>
<li>The second part of the path is a JDBC path.</li>
</ul>
<p>For example:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-reference-path-01.png"><img class="alignnone size-full wp-image-1482" title="JDBC Reference Path 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-reference-path-01.png?w=632&#038;h=30" alt="" width="632" height="30" /></a></p>
<p>If $Var refers to a Map, then theMap.get(&#8220;BookRow&#8221;) contains a JdbcFocusObject defining a row in the book table. The above path will return its author.</p>
<p style="padding-left:30px;"><strong>    </strong></p>
<h3><span style="color:#ff0000;"><strong>HTTP Servlet Request Attributes</strong></span></h3>
<p>An attribute can be extracted from the Servlet request using an @ in front of the path item.</p>
<p>For example:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/jdbc-http-servlet-request-attributes-01.png"><img class="alignnone size-full wp-image-1483" title="JDBC HTTP Servlet Request Attributes 01" src="http://yuvalrs.files.wordpress.com/2011/05/jdbc-http-servlet-request-attributes-01.png?w=631&#038;h=30" alt="" width="631" height="30" /></a></p>
<p style="padding-left:30px;"><strong>                  </strong></p>
<h3><span style="color:#ff0000;"><strong>Named Collection Data Paths</strong></span></h3>
<p>A named element in a collection can be extracted from a java object by using two path items,</p>
<ul>
<li>The first identifies the collection,</li>
<li>The second identifies the name of the item.</li>
</ul>
<p> </p>
<p>The java object&#8217;s class must implement either <em>amdocs.core.datapath.INamedCollection</em> or</p>
<p><em>amdocs.core.datapath.INamedCollectionExt</em> or extend  <em>amdocs.core.datapath.NamedCollectionExt</em>.</p>
<p>An example data path is as follows:</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/05/named-collection-data-paths-01.png"><img class="alignnone size-full wp-image-1484" title="Named Collection Data Paths 01" src="http://yuvalrs.files.wordpress.com/2011/05/named-collection-data-paths-01.png?w=631&#038;h=30" alt="" width="631" height="30" /></a><strong>     </strong></p>
<p>The $Dataset context type, represented by a java object which is an INamedCollection, contains a collection that can be accessed by getDataModelByName(&#8220;myDataModel&#8221;).</p>
<p style="padding-left:30px;"> </p>
<p>Next:  <strong><a title="using-expressions" href="http://nextgencon.com/2011/05/12/using-expressions/">Using Expressions (Part 3)</a></strong></p>
<p style="padding-left:30px;"><strong>   </strong></p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/smart-client/'>Smart Client</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1407&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/05/01/database-path-contexts-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-01.png" medium="image">
			<media:title type="html">Using Conditions 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-02.png" medium="image">
			<media:title type="html">Using Conditions 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-sql-031.png" medium="image">
			<media:title type="html">using-conditions-sql-03</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-conditions-resolving-starting-point-04.png" medium="image">
			<media:title type="html">Using Conditions - Resolving Starting Point 04</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-01.png" medium="image">
			<media:title type="html">Using Aliases 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/using-aliases-sql-02.png" medium="image">
			<media:title type="html">Using Aliases (SQL) 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/property-name-path-01.png" medium="image">
			<media:title type="html">Property Name Path 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/flex-attributes-01.png" medium="image">
			<media:title type="html">Flex Attributes 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-01.png" medium="image">
			<media:title type="html">Run Time Path Types 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-table-02.png" medium="image">
			<media:title type="html">Run Time Path Types (table) 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/run-time-path-types-jdbc-03.png" medium="image">
			<media:title type="html">Run Time Path Types (JDBC) 03</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/indirect-paths-01.png" medium="image">
			<media:title type="html">Indirect Paths 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-011.png" medium="image">
			<media:title type="html">JDBC Path Modifiers 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-022.png" medium="image">
			<media:title type="html">JDBC Path Modifiers 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-sql-031.png" medium="image">
			<media:title type="html">JDBC Path Modifiers (SQL) 03</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-path-modifiers-041.png" medium="image">
			<media:title type="html">JDBC Path Modifiers 04</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-12.png" medium="image">
			<media:title type="html">Relation Traversal Path - 1</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-path-with-relation-2.png" medium="image">
			<media:title type="html">Relation Traversal Path With Relation - 2</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-3.png" medium="image">
			<media:title type="html">Relation Traversal Absolute Path- 3</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/relation-traversal-absolute-path-with-relations-4.png" medium="image">
			<media:title type="html">Relation Traversal Absolute Path with Relations - 4</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/reference-path-1.png" medium="image">
			<media:title type="html">Reference Path 1</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/reference-path-2.png" medium="image">
			<media:title type="html">Reference Path 2</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-01.png" medium="image">
			<media:title type="html">JDBC Schema Configuration (ASC) 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-schema-configuration-asc-021.png" medium="image">
			<media:title type="html">JDBC Schema Configuration (ASC) 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-01.png" medium="image">
			<media:title type="html">JDBC Resource Configuration (ASC) 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-resource-configuration-asc-02.png" medium="image">
			<media:title type="html">JDBC Resource Configuration (ASC) 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/more-on-jdbc-data-paths-diagram-01.png" medium="image">
			<media:title type="html">More on JDBC Data Paths (Diagram) 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-01.png" medium="image">
			<media:title type="html">JDBC Relative Paths 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-02.png" medium="image">
			<media:title type="html">JDBC Relative Paths 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-03.png" medium="image">
			<media:title type="html">JDBC Relative Paths 03</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-sql-expression-04.png" medium="image">
			<media:title type="html">JDBC Relative Paths (SQL Expression) 04</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-example-05.png" medium="image">
			<media:title type="html">JDBC Relative Paths (example) 05</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-concatenated-keys-06.png" medium="image">
			<media:title type="html">JDBC Relative Paths (Concatenated Keys) 06</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-relative-paths-concatenated-keys-sql-07.png" medium="image">
			<media:title type="html">JDBC Relative Paths (Concatenated Keys SQL) 07</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-01.png" medium="image">
			<media:title type="html">JDBC Absolute Paths 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-absolute-paths-02.png" medium="image">
			<media:title type="html">JDBC Absolute Paths 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-011.png" medium="image">
			<media:title type="html">JDBC Logical Schema 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-02.png" medium="image">
			<media:title type="html">JDBC Logical Schema (property name) 02</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-03.png" medium="image">
			<media:title type="html">JDBC Logical Schema (property name) 03</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-logical-schema-property-name-04.png" medium="image">
			<media:title type="html">JDBC Logical Schema (property name) 04</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-reference-path-01.png" medium="image">
			<media:title type="html">JDBC Reference Path 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/jdbc-http-servlet-request-attributes-01.png" medium="image">
			<media:title type="html">JDBC HTTP Servlet Request Attributes 01</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/05/named-collection-data-paths-01.png" medium="image">
			<media:title type="html">Named Collection Data Paths 01</media:title>
		</media:content>
	</item>
		<item>
		<title>Data Paths and Expressions (Part 1)</title>
		<link>http://nextgencon.com/2011/04/25/data-paths-and-expressions-part-1/</link>
		<comments>http://nextgencon.com/2011/04/25/data-paths-and-expressions-part-1/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 18:06:49 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[Smart Client]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1379</guid>
		<description><![CDATA[About DataPath A DataPath is a mechanism for defining data stored in a database (Amdocs CRM database or external database) or application memory structure such as Smart Client. Paths identify data items related to a focus object Data path may describe a database field, XML Node, HttpServletRequest, BO, LoadBean, any POJO (Plain Old Java Object) [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1379&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3><strong><span style="color:#ff0000;">About DataPath</span></strong></h3>
<p>A <strong><em>DataPath</em></strong> is a mechanism for defining data stored in a database (Amdocs CRM database or external database) or application memory structure such as Smart Client.</p>
<h3><strong><span style="color:#ff0000;">Paths identify data items related to a focus object</span></strong></h3>
<p>Data path may describe a database field, XML Node, HttpServletRequest, BO, LoadBean, any POJO (Plain Old Java Object) or run-time data structure such as Java Map, Xdo or Cdo. The data path is defined relative to a known starting point known as the <strong><em>context object</em></strong> known also as <strong><em>Focus Object</em></strong>.</p>
<h3><strong><span style="color:#ff0000;">Path Definition</span></strong></h3>
<p>A Path consists of a series of relations terminated by a field. A colon (:) is used to separate the relations and the final field. A path that is just a field identifies a field on the focus object</p>
<h3><strong><span style="color:#ff0000;">Path Context </span></strong></h3>
<p>A <em>context</em> refers to the source of data where the data path originates. For example, in the path given below, the context is a focus object given by $Case:</p>
<pre style="text-align:left;padding-left:30px;">$case:case_reporter2site:cust_primaddr2address:address</pre>
<p>The contexts are of two types:</p>
<ol>
<li><strong>Fixed context</strong>             – these are global and not runtime dependent.</li>
<li><strong>Run time context</strong>    – names that must resolve at run time to context object instance.</li>
</ol>
<h3><strong><span style="color:#ff0000;">Data Path Fixed Contexts</span></strong></h3>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/04/15-datapath-fixed-contexts.png"><img class="alignnone size-full wp-image-1382" title="15 - DataPath Fixed Contexts" src="http://yuvalrs.files.wordpress.com/2011/04/15-datapath-fixed-contexts.png?w=620&#038;h=90" alt="" width="620" height="90" /></a></strong></p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Data Path Run Time Contexts</span></strong></h3>
<p><strong><a href="http://yuvalrs.files.wordpress.com/2011/04/16-datapath-runtime-contexts.png"><img class="alignnone size-full wp-image-1383" title="16 - DataPath Runtime Contexts" src="http://yuvalrs.files.wordpress.com/2011/04/16-datapath-runtime-contexts.png?w=620&#038;h=641" alt="" width="620" height="641" /></a></strong></p>
<p style="padding-left:30px;"> </p>
<h3><strong><span style="color:#ff0000;">Focus Object</span></strong></h3>
<p>The focus objects is not explicitly part of the path but is determined by context. For example:  the focus object for a <strong><em>Case</em></strong> query is Case, for a <strong><em>Subcase</em></strong> query it is subcase, for a Smart Client form it is a reference to a specific form.</p>
<p>Path Examples:</p>
<ul>
<li>Last name of contact for subcase</li>
</ul>
<pre style="padding-left:30px;">subcase2case:case_reporter2contact:last_name</pre>
<p style="padding-left:30px;">The path starts at a beginning point (Subcase), traverses through the database, and locates the object at the end (contact’s last name)</p>
<ul>
<li>Site Id of the currently logged-in Smart Client user:</li>
</ul>
<pre style="padding-left:30px;">Dataset:DataModel:emplUserDM:p_site_id</pre>
<p style="padding-left:30px;">The path starts at a beginning point (global form named CrmGlobal), traverses through the form’s Dataset, the data model emplUserDM and locates the object at the end (site_id)</p>
<p style="padding-left:30px;">The run-time beginning point defined as:</p>
<pre style="padding-left:30px;">$WorkspaceForm:com.nextgen.crm.workspace.CrmGlobal:</pre>
<h3><strong><span style="color:#ff0000;">Where are Paths used in CRM? </span></strong></h3>
<p>Paths and Expressions are widely used both at servers and clients across the CRM environment and its complementary peripheral applications such as Smart Client and Process Manager.</p>
<p>The following list and example demonstrate the most notable areas where paths and their derivate expressions are used:</p>
<ul>
<li>Database Queries</li>
<li>Business rule properties</li>
<li>Auto-destination rules</li>
<li>Smart Client form elements</li>
<li>Smart Client version selectors</li>
<li>Role-based Authorization</li>
<li>Pre-filters for selection</li>
<li>Routing rules</li>
<li>Extended Filters</li>
<li>Output parameters of Services</li>
<li>Define where the results should be stored</li>
<li>Used within expressions (will be elaborated)</li>
</ul>
<p><strong> </strong></p>
<h3><span style="color:#ff0000;"><strong>Usage Examples</strong></span></h3>
<ul>
<li><strong>Database Queries</strong></li>
</ul>
<p style="padding-left:30px;">The following example use path to define the CBO <em>relatedFilter</em> property</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/01-database-bo-query.png"><img class="alignnone size-full wp-image-1384" title="01 - Database BO Query" src="http://yuvalrs.files.wordpress.com/2011/04/01-database-bo-query.png?w=697&#038;h=106" alt="" width="697" height="106" /></a></p>
<ul>
<li><strong>Business rule properties</strong> and recipient aliases – prop_name object</li>
</ul>
<p style="padding-left:30px;">The following example shows the definition of a property named ‘Originator’ related to the a Case focus object. The focus object named here ‘Object Type’:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/02a-rule-properties-smart.png"><img class="alignnone size-full wp-image-1386" title="02A - Rule Properties - Smart" src="http://yuvalrs.files.wordpress.com/2011/04/02a-rule-properties-smart.png?w=672&#038;h=518" alt="" width="672" height="518" /></a></p>
<ul>
<li><strong>Auto-destination rules</strong> –  rule object</li>
</ul>
<p style="padding-left:30px;">The following example shows a path used within an Auto Destination Rule. The implicit focus object here is the Case object. The Case focus object is explicitly defined in <em>table_rule.title</em> field.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/03-auto-destination-rules.png"><img class="alignnone size-full wp-image-1387" title="03 - Auto Destination Rules" src="http://yuvalrs.files.wordpress.com/2011/04/03-auto-destination-rules.png?w=670&#038;h=87" alt="" width="670" height="87" /></a></p>
<ul>
<li><strong>Smart Client form elements</strong>: Forms, Actions, Data Models, Communications</li>
</ul>
<p style="padding-left:30px;">The following example shows path used in Smart Client Action’s Request Map definition:</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/035-smart-client-ui-elements.png"><img class="alignnone size-full wp-image-1388" title="035 - Smart Client UI Elements" src="http://yuvalrs.files.wordpress.com/2011/04/035-smart-client-ui-elements.png?w=557&#038;h=363" alt="" width="557" height="363" /></a></p>
<ul>
<li><strong>Smart Client version selectors</strong></li>
</ul>
<p style="padding-left:30px;">This example shows the use of a path within a condition expression defined for selecting the form version to be displayed. The focus object is <strong>$WorkspaceForm</strong>.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/08-version-selector.png"><img class="alignnone size-full wp-image-1389" title="08 - Version Selector" src="http://yuvalrs.files.wordpress.com/2011/04/08-version-selector.png?w=777&#038;h=462" alt="" width="777" height="462" /></a></p>
<ul>
<li><strong>Role-based Authorization</strong></li>
</ul>
<p style="padding-left:30px;">Path used as part of an expression which defines conditional authorization role. The focus object is <strong>$Var</strong>.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/045-role-base-authorization-condition.png"><img class="alignnone size-full wp-image-1390" title="045 - Role Base Authorization Condition" src="http://yuvalrs.files.wordpress.com/2011/04/045-role-base-authorization-condition.png?w=584&#038;h=342" alt="" width="584" height="342" /></a></p>
<ul>
<li><strong>Pre-filters for selection </strong></li>
</ul>
<p style="padding-left:30px;">The focus object in this example is the table ‘con_bus_role’.</p>
<p style="padding-left:30px;">The path filter a role related to specific address identified by a Vo primary key (objid) passed from the client.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/055-cbo-filter-definition.png"><img class="alignnone size-full wp-image-1391" title="055 - CBO Filter Definition" src="http://yuvalrs.files.wordpress.com/2011/04/055-cbo-filter-definition.png?w=749&#038;h=109" alt="" width="749" height="109" /></a></p>
<ul>
<li><strong>Routing rules</strong></li>
</ul>
<p style="padding-left:30px;">The following example shows a path used within a routing rule. The focus object (called here ‘source type’) is a <strong>Case</strong>.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/05-routing-rules.png"><img class="alignnone size-full wp-image-1396" title="05 - Routing Rules" src="http://yuvalrs.files.wordpress.com/2011/04/05-routing-rules.png?w=591&#038;h=208" alt="" width="591" height="208" /></a></p>
<ul>
<li><strong>Extended Filters</strong> (XFilters)</li>
</ul>
<p style="padding-left:30px;">The following example shows a path used within an extended filter to describe named properties (called here ‘friendly name) which define business entities by their absolute path from the focus object – a view named opp_view_xfilter.</p>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/04-extended-filter.png"><img class="alignnone size-full wp-image-1397" title="04 - Extended Filter" src="http://yuvalrs.files.wordpress.com/2011/04/04-extended-filter.png?w=937&#038;h=356" alt="" width="937" height="356" /></a></p>
<ul>
<li><strong>Used within expressions</strong></li>
</ul>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/04/10-named-expression.png"><img class="alignnone size-full wp-image-1398" title="10 - Named Expression" src="http://yuvalrs.files.wordpress.com/2011/04/10-named-expression.png?w=747&#038;h=596" alt="" width="747" height="596" /></a></p>
<p style="padding-left:30px;">See also Version Selector, Conditional Role Base Authorization, pre-filter and Routing-Rule examples.</p>
<p><strong> </strong></p>
<p>See next part:  <strong><a href="http://wp.me/pPfT5-mH">Database Path Contexts (Part 2)</a></strong></p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/smart-client/'>Smart Client</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1379/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1379&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/04/25/data-paths-and-expressions-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/15-datapath-fixed-contexts.png" medium="image">
			<media:title type="html">15 - DataPath Fixed Contexts</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/16-datapath-runtime-contexts.png" medium="image">
			<media:title type="html">16 - DataPath Runtime Contexts</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/01-database-bo-query.png" medium="image">
			<media:title type="html">01 - Database BO Query</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/02a-rule-properties-smart.png" medium="image">
			<media:title type="html">02A - Rule Properties - Smart</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/03-auto-destination-rules.png" medium="image">
			<media:title type="html">03 - Auto Destination Rules</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/035-smart-client-ui-elements.png" medium="image">
			<media:title type="html">035 - Smart Client UI Elements</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/08-version-selector.png" medium="image">
			<media:title type="html">08 - Version Selector</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/045-role-base-authorization-condition.png" medium="image">
			<media:title type="html">045 - Role Base Authorization Condition</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/055-cbo-filter-definition.png" medium="image">
			<media:title type="html">055 - CBO Filter Definition</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/05-routing-rules.png" medium="image">
			<media:title type="html">05 - Routing Rules</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/04-extended-filter.png" medium="image">
			<media:title type="html">04 - Extended Filter</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/04/10-named-expression.png" medium="image">
			<media:title type="html">10 - Named Expression</media:title>
		</media:content>
	</item>
		<item>
		<title>AIF Overview</title>
		<link>http://nextgencon.com/2011/03/02/aif-overview/</link>
		<comments>http://nextgencon.com/2011/03/02/aif-overview/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 22:27:46 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1354</guid>
		<description><![CDATA[Amdocs Integration Framework provides a common, uniform and standards-based integration foundation for implementing integrations between Amdocs applications, and integrations between Amdocs applications and non Amdocs applications.  AIF Characteristics Portable across application servers (WAS &#38; WLS) Integrate / interoperate with Enterprise Service Bus (ESB)s/EAIs Provide protocol &#8211; neutral service invocation API Service definition customization and upgrade [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1354&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><strong>Amdocs Integration Framework</strong> provides a common, uniform and standards-based integration foundation for implementing integrations between Amdocs applications, and integrations between Amdocs applications and non Amdocs applications. </p>
<h3><span style="color:#ff0000;"><strong>AIF Characteristics</strong></span></h3>
<ul>
<li>Portable across application servers (WAS &amp; WLS)</li>
<li>Integrate / interoperate with <em>Enterprise Service Bus</em> (ESB)s/EAIs</li>
<li>Provide protocol &#8211; neutral service invocation API</li>
<li>Service definition customization and upgrade</li>
<li>Leverages standards and pervasive technologies</li>
<li>Uses existing integration foundations as much as possible</li>
<li>Allows gradual adoption by Amdocs products</li>
</ul>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>AIF Architecture</strong></span></h3>
<p>AIF is a cross portfolio foundation platform – there is no UI. It is tightly integrated with other cross portfolio foundations:</p>
<ul>
<li>APM  (Amdocs Process Manager) for composite operations</li>
<li>ASC   (Amdocs System Configuration) for system configuration</li>
<li>ASM  (Amdocs Security Manager) for security to enable cross portfolio single-sign-on</li>
</ul>
<p style="padding-left:30px;"> </p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/03/01-a-portfolio-integration-foundation.png"><img class="alignnone size-full wp-image-1359" title="01-A Portfolio Integration Foundation" src="http://yuvalrs.files.wordpress.com/2011/03/01-a-portfolio-integration-foundation.png?w=653&#038;h=381" alt="" width="653" height="381" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>AIF Integration with 3rd Party</strong></span></h3>
<p>AIF provides an abstraction layer that enables application code to execute functionality provided by external components or systems in a protocol-independent manner. It supports the following protocols</p>
<ul>
<li>Local Java (POJO)</li>
<li>Local &amp; remote EJB (statefull and stateless)</li>
<li>SOAP over HTTP (Web services)</li>
<li>Tuxedo</li>
<li>Asynchronous one way (JMS)</li>
</ul>
<p>Services are defined in a central Service Repository and are managed via a service management UI</p>
<p>AIF provides data mapping, logging, auditing and monitoring infrastructure independent of the application code. A simulator is provided to facilitate client unit testing. It is monitored by JMX.</p>
<p style="padding-left:30px;"> </p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/03/02-aif-architecture.png"><img class="alignnone size-full wp-image-1362" title="02 AIF Architecture" src="http://yuvalrs.files.wordpress.com/2011/03/02-aif-architecture.png?w=635&#038;h=409" alt="" width="635" height="409" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>AIF Components</strong></span></h3>
<p>AIF infrastructure components include:</p>
<ul>
<li><strong>Service Repository UI</strong> - <br />
A central tool for defining, maintaining and storing Amdocs service definitions<br />
     </li>
<li><strong>Service Repository</strong><br />
Holds detailed technical descriptions of services. Service definitions are stored on disk files and deployed to the database for access by the consumer API infrastructure<br />
  </li>
<li><strong>Service Consumer</strong><br />
A protocol-neutral API for invocation of services<br />
    </li>
<li><strong>Service Provider</strong><br />
Code generation tool for exposing services via standard protocols: EJB, JMS, SOAP over HTTP, SOAP over JMS, POJO<br />
    </li>
<li>AIF can export its service definitions to any UDDI registry using the published UDDI API. However, it does not provide a UDDI compliant registry<br />
  </li>
</ul>
<p> <a href="http://yuvalrs.files.wordpress.com/2011/03/03-service-repository-ui1.png"><img class="alignnone size-full wp-image-1364" title="03 Service Repository UI" src="http://yuvalrs.files.wordpress.com/2011/03/03-service-repository-ui1.png?w=633&#038;h=395" alt="" width="633" height="395" /></a></p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>Service Repository UI Components</strong></span></h3>
<p><strong>Operation<br />
</strong>A <em>business operation</em> is a discreet function that performs a single task. Operations are passed input parameters, and may optionally return output parameters, and faults. An operation corresponds to a Java method</p>
<p><strong>Signature<br />
</strong>These are the input, output and faults parameters which are defined for an operation. The signature refers to the names and types of these items, but not to any specific order (parameter ordering is typically required only for RMI protocols).</p>
<p><strong>Interface<br />
</strong>A logical <em>grouping of operations</em>. An interface corresponds to a Java class or interface.</p>
<p><strong>Service<br />
</strong>Published functionality provided either by an Amdocs application or an external system. A service is an implementation of an interface provided by some service providers. It is a  physical implementation of an interface (e.g. EJB service)</p>
<p><strong>Binding</strong></p>
<p>A physical attribute for an operation of a service;. e.g. EJB bindings define the method name and parameter order</p>
<p><strong> </strong></p>
<h3><span style="color:#ff0000;"><strong>The Service Consumer</strong></span></h3>
<p>Consumer application code uses the service consumer API to invoke a service operation. The consumer is unaware of who provides the service, where they are located, or how the service is invoked.</p>
<p>The Consumer supports the following protocols: POJO, EJB, JMS, Web Services and Tuxedo. Logging, auditing and monitoring is performed by the infrastructure. Details about the service are read from the service repository. Physical details (server URL etc) are taken from runtime configuration</p>
<h3><span style="color:#ff0000;"><strong>The Service Repository</strong></span></h3>
<p>The Service repository defines <em>operations</em>, <em>interfaces</em> and <em>services</em></p>
<p>Service definitions are defined in XML files, and deployed to a database for access by the service consumer API infrastructure (in CRM, the database table is <em>aif_operation</em>)</p>
<p>Service Definitions are edited using an eclipse plug-in. They can be created manually, by importing EJB interfaces or by importing WSDL.</p>
<p>The Service data model is based on WSDL2.0.</p>
<p>The services repository is fully compatible with 3rd party service repositories or registries via WSDL import/export and Java code (EJB interface)</p>
<h3><span style="color:#ff0000;"><strong>Service Definition</strong></span></h3>
<p>A Service is physical implementation of an Interface. The Service name is unique within an Interface. Each Interface may have several Services, each representing a physical implementation of the Interface</p>
<p>Binding represents physical attributes of an operation within a Service. Each Operation within the Interface has a corresponding Binding within each Service.</p>
<p>Services are defined in two parts:</p>
<ol>
<li>Static design-time definition which define the contract, implementation and protocols.</li>
<li>Dynamic run-time deployment configuration, defined in the AIF repository.</li>
</ol>
<p>The AIF repository stores information such as JNDI names. These names are defined in the central configuration repository (Amdocs System Configurator &#8211; ASC)</p>
<p>The run-time configuration data can be changed independently of the AIF repository, giving operational flexibility.</p>
<p><a href="http://yuvalrs.files.wordpress.com/2011/03/05-service-definition.png"><img class="alignnone size-full wp-image-1366" title="05 Service Definition" src="http://yuvalrs.files.wordpress.com/2011/03/05-service-definition.png?w=598&#038;h=324" alt="" width="598" height="324" /></a></p>
<p style="padding-left:30px;"> </p>
<h3><span style="color:#ff0000;"><strong>AIF Configuration</strong></span></h3>
<p>AIF uses ASC to define its configuration items. AIF configuration includes AIF internal configuration, such as the JDBC connection it requires to access the deployed services, and definition of resources used by services defined in the repository</p>
<p>AIF is typically configured in some common node, and then inherited by the applications that use it:</p>
<pre style="padding-left:30px;">/amdocsCommon/Aif</pre>
<pre style="padding-left:30px;">/crm/baseConfig/Aif (inherits /amdocsCommon/Aif)</pre>
<p style="padding-left:30px;"><a href="http://yuvalrs.files.wordpress.com/2011/03/04-aif-configuration2.png"><img class="alignnone size-full wp-image-1372" title="04 AIF Configuration" src="http://yuvalrs.files.wordpress.com/2011/03/04-aif-configuration2.png?w=216&#038;h=334" alt="" width="216" height="334" /></a></p>
<p style="padding-left:30px;"> </p>
<p>&nbsp;</p>
<h3><span style="color:#ff0000;"><strong>The AIF Service Lab</strong></span></h3>
<p>The AIF plug-in for Eclipse provides a full blown UI for creating, testing and deploying AIF services.</p>
<pre><span style="font-family:Times New Roman;font-size:small;"><a href="http://yuvalrs.files.wordpress.com/2011/03/06-aif-lab-service-test.png"><img class="alignnone size-full wp-image-1368" title="06 AIF Lab - Service Test" src="http://yuvalrs.files.wordpress.com/2011/03/06-aif-lab-service-test.png?w=660&#038;h=438" alt="" width="660" height="438" /></a></span></pre>
<pre style="padding-left:30px;"> </pre>
<pre style="padding-left:30px;"> </pre>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/general/'>General</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1354&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/03/02/aif-overview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/01-a-portfolio-integration-foundation.png" medium="image">
			<media:title type="html">01-A Portfolio Integration Foundation</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/02-aif-architecture.png" medium="image">
			<media:title type="html">02 AIF Architecture</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/03-service-repository-ui1.png" medium="image">
			<media:title type="html">03 Service Repository UI</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/05-service-definition.png" medium="image">
			<media:title type="html">05 Service Definition</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/04-aif-configuration2.png" medium="image">
			<media:title type="html">04 AIF Configuration</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/03/06-aif-lab-service-test.png" medium="image">
			<media:title type="html">06 AIF Lab - Service Test</media:title>
		</media:content>
	</item>
		<item>
		<title>Data Objects Map</title>
		<link>http://nextgencon.com/2011/01/27/data-objects-map/</link>
		<comments>http://nextgencon.com/2011/01/27/data-objects-map/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 07:37:23 +0000</pubDate>
		<dc:creator>Yuval R.</dc:creator>
				<category><![CDATA[Amdocs]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[BSS]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Front End]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://nextgencon.com/?p=1333</guid>
		<description><![CDATA[Filed under: Amdocs, Backend, BSS, CRM, CRM, Development, Front End, Technology<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1333&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://yuvalrs.files.wordpress.com/2011/01/data-objects-map-502.png"><img class="alignnone size-full wp-image-1348" title="Data Objects Map 50" src="http://yuvalrs.files.wordpress.com/2011/01/data-objects-map-502.png?w=689&#038;h=512" alt="" width="689" height="512" /></a></p>
<br />Filed under: <a href='http://nextgencon.com/category/amdocs/'>Amdocs</a>, <a href='http://nextgencon.com/category/development/backend/'>Backend</a>, <a href='http://nextgencon.com/category/bss/'>BSS</a>, <a href='http://nextgencon.com/category/crm/'>CRM</a>, <a href='http://nextgencon.com/category/amdocs/crm-amdocs-2/'>CRM</a>, <a href='http://nextgencon.com/category/development/'>Development</a>, <a href='http://nextgencon.com/category/development/front-end/'>Front End</a>, <a href='http://nextgencon.com/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yuvalrs.wordpress.com/1333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yuvalrs.wordpress.com/1333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nextgencon.com&#038;blog=12215803&#038;post=1333&#038;subd=yuvalrs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nextgencon.com/2011/01/27/data-objects-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/df49db011bc4e67c3ce5127474a281c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yuvalrs</media:title>
		</media:content>

		<media:content url="http://yuvalrs.files.wordpress.com/2011/01/data-objects-map-502.png" medium="image">
			<media:title type="html">Data Objects Map 50</media:title>
		</media:content>
	</item>
	</channel>
</rss>
