<?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/"
	>

<channel>
	<title>Developing with Infor and Lawson Technologies</title>
	<atom:link href="http://www.joshgeving.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshgeving.com</link>
	<description>Code Samples and Helpful Things by Josh Geving</description>
	<lastBuildDate>Tue, 21 May 2013 17:54:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Smart Office SDK: Prefix Viewer Example Tool</title>
		<link>http://www.joshgeving.com/lawson/smart-office-sdk-prefix-viewer-example-tool/</link>
		<comments>http://www.joshgeving.com/lawson/smart-office-sdk-prefix-viewer-example-tool/#comments</comments>
		<pubDate>Tue, 21 May 2013 17:52:30 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Lawson]]></category>
		<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office SDK]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=194</guid>
		<description><![CDATA[The much awaited Smart Office SDK was released on May 15th for Lawson S3 users. It has been available on the M3 side for a few years. With the SDK you can create your own complete applications and widgets using Visual Studio that can be run within Smart Office. The following application is a simple...]]></description>
				<content:encoded><![CDATA[<p>The much awaited Smart Office SDK was released on May 15th for Lawson S3 users. It has been available on the M3 side for a few years. With the SDK you can create your own complete applications and widgets using Visual Studio that can be run within Smart Office. The following application is a simple tool that can be used to determine the table name from a given prefix. Locating the associated table for a form field can be a great help when you are doing any sort of development or reporting. The idea came from a similar application I saw a few years ago. So cool it stuck with me until the tools were available to built it myself.</p>
<p><iframe width="660" height="371" src="http://www.youtube.com/embed/Whdw6eR-JZ8?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Once installed, the tool can be accessed using the Smart Office URL prefix://, or you can change this within the Project using Visual Studio.</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/SDK_PrefixViewer.zip">Visual Studio project source available here</a></p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/PrefixViewer_lawsonapp.zip">Smart Office application (.lawsonapp) available here</a><a href="http://www.joshgeving.com/wp-content/uploads/SDK_PrefixViewer.zip"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/lawson/smart-office-sdk-prefix-viewer-example-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashup &#8211; Deduction Workbench</title>
		<link>http://www.joshgeving.com/smartoffice/mashup-deduction-workbench/</link>
		<comments>http://www.joshgeving.com/smartoffice/mashup-deduction-workbench/#comments</comments>
		<pubDate>Mon, 20 May 2013 13:07:58 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>
		<category><![CDATA[Mashup]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=172</guid>
		<description><![CDATA[Mashup example providing quick access to employees with a certain deduction. A Deduction list is at the top. When a deduction is clicked the corresponding employees are listed below. Double-clicking an employee will bring up that record in PR14. &#160; Full source code available here: DeductionWorkBench]]></description>
				<content:encoded><![CDATA[<p>Mashup example providing quick access to employees with a certain deduction. A Deduction list is at the top. When a deduction is clicked the corresponding employees are listed below. Double-clicking an employee will bring up that record in PR14.</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/mashup_deduction_workbench.png"><img src="http://www.joshgeving.com/wp-content/uploads/mashup_deduction_workbench.png" alt="mashup_deduction_workbench" width="895" height="813" class="aligncenter size-full wp-image-173" /></a></p>
<p>&nbsp;</p>
<p>Full source code available here: <a href="http://www.joshgeving.com/wp-content/uploads/DeductionWorkBench.zip">DeductionWorkBench</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/mashup-deduction-workbench/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashup &#8211; Employee Maintenance</title>
		<link>http://www.joshgeving.com/smartoffice/mashup-employee-maintenance/</link>
		<comments>http://www.joshgeving.com/smartoffice/mashup-employee-maintenance/#comments</comments>
		<pubDate>Mon, 13 May 2013 12:02:15 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>
		<category><![CDATA[Mashup]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=168</guid>
		<description><![CDATA[Mashup example providing quick access to a range of Employee related screens. Employee selection filter is at the top. When an employee records is clicked the data is passed to the screens below. &#160; Full source code available here: EmployeeMaintenance]]></description>
				<content:encoded><![CDATA[<p>Mashup example providing quick access to a range of Employee related screens. Employee selection filter is at the top. When an employee records is clicked the data is passed to the screens below.</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/mashup_employee_maintenance.png"><img src="http://www.joshgeving.com/wp-content/uploads/mashup_employee_maintenance.png" alt="mashup_employee_maintenance" width="1181" height="1007" class="aligncenter size-full wp-image-169" /></a></p>
<p>&nbsp;</p>
<p>Full source code available here: <a href="http://www.joshgeving.com/wp-content/uploads/EmployeeMaintenance.zip">EmployeeMaintenance</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/mashup-employee-maintenance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashup &#8211; Item Master and Location Information</title>
		<link>http://www.joshgeving.com/smartoffice/mashup-item-master-and-location-information/</link>
		<comments>http://www.joshgeving.com/smartoffice/mashup-item-master-and-location-information/#comments</comments>
		<pubDate>Fri, 03 May 2013 17:21:13 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>
		<category><![CDATA[Mashup]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=188</guid>
		<description><![CDATA[During this past Inforum event we mocked up a number of Mashups with customers interested in Mashup Designer. One of the ideas was figuring out some way to better combine the Item Master (IC11) screen with Item Location (IC12). Based on the quick designs that were tossed around in the Lab the following Mashup was...]]></description>
				<content:encoded><![CDATA[<p>During this past Inforum event we mocked up a number of Mashups with customers interested in Mashup Designer. One of the ideas was figuring out some way to better combine the Item Master (IC11) screen with Item Location (IC12). Based on the quick designs that were tossed around in the Lab the following Mashup was developed using Mashup Designer.</p>
<p>In this Mashup the user is provided a list which can be used to filter and locate a specific item. When clicked, both the Item Master and Item Location screens are populated. Global actions are located in the top left which allow the user to process both forms simultaneously. Additional item information is located in a separate tab which includes some basic analysis for Stock on Hand, Allocatable quantities and Cost Details.</p>
<p>This video provides a high level demonstration. Source for this Mashup is also found below.  This Mashup was built in Smart Office version 10.1.</p>
<p><iframe width="660" height="371" src="http://www.youtube.com/embed/5ksZo4qw8NA?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Full source is available here: <a href="http://www.joshgeving.com/wp-content/uploads/ItemMasterAndLocation.zip">ItemMasterAndLocation</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/mashup-item-master-and-location-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Smart Office Widgets from a Shortcut</title>
		<link>http://www.joshgeving.com/smartoffice/open-smart-office-widgets-from-a-shortcut/</link>
		<comments>http://www.joshgeving.com/smartoffice/open-smart-office-widgets-from-a-shortcut/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 15:51:44 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Widget]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=182</guid>
		<description><![CDATA[One of the questions that came up at Inforum last week was how to open a Widget from a Canvas Shortcut.  To do so all you need is the Widget Name.  For example, I have a widget called LM Leases.  Here is what that looks like within Predefined Widgets: &#160; Although in this case all...]]></description>
				<content:encoded><![CDATA[<p>One of the questions that came up at Inforum last week was how to open a Widget from a Canvas Shortcut.  To do so all you need is the Widget Name.  For example, I have a widget called LM Leases.  Here is what that looks like within Predefined Widgets:</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/smart_office_predefined_widgets.png"><img src="http://www.joshgeving.com/wp-content/uploads/smart_office_predefined_widgets.png" alt="smart_office_predefined_widgets" width="535" height="471" class="aligncenter size-full wp-image-183" /></a></p>
<p>&nbsp;</p>
<p>Although in this case all the Names are the same as the Widget ID, we are going to use the name and create a shortcut with a URL like this:</p>
<p style="text-align: center;">widget://add/?Scheme=LM Leases</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/open-smart-office-widgets-from-a-shortcut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashup &#8211; Employees By Position</title>
		<link>http://www.joshgeving.com/smartoffice/mashup-employees-by-position/</link>
		<comments>http://www.joshgeving.com/smartoffice/mashup-employees-by-position/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 18:01:26 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>
		<category><![CDATA[Mashup]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=164</guid>
		<description><![CDATA[Example mashup providing quick access to Employees filtered by Position. A list of Positions is provided at the top which can be filtered.  When a position is clicked the corresponding employees are listed in a list below. If a specific employee is clicked their information in HR11 is displayed to the right. &#160; &#160; Full...]]></description>
				<content:encoded><![CDATA[<p>Example mashup providing quick access to Employees filtered by Position. A list of Positions is provided at the top which can be filtered.  When a position is clicked the corresponding employees are listed in a list below. If a specific employee is clicked their information in HR11 is displayed to the right.</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/mashup_employees_by_position.png"><img src="http://www.joshgeving.com/wp-content/uploads/mashup_employees_by_position.png" alt="mashup_employees_by_position" width="899" height="695" class="aligncenter size-full wp-image-165" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Full source code available here: <a href="http://www.joshgeving.com/wp-content/uploads/EmployeesByPosition.zip">EmployeesByPosition</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/mashup-employees-by-position/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display Vendor Balance in AP10 using Smart Office Scripting</title>
		<link>http://www.joshgeving.com/smartoffice/display-vendor-balance/</link>
		<comments>http://www.joshgeving.com/smartoffice/display-vendor-balance/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 15:14:46 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Scripting]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=160</guid>
		<description><![CDATA[The following example utilizes Smart Office scripting to hook into the AfterTransaction event to display the corresponding Vendor balance.  Not a very complicated script. Basically a new label added to the header of the form and a custom Data Query function to gather values from the form and fetch the balance, which is then sent...]]></description>
				<content:encoded><![CDATA[<p>The following example utilizes Smart Office scripting to hook into the AfterTransaction event to display the corresponding Vendor balance.  Not a very complicated script. Basically a new label added to the header of the form and a custom Data Query function to gather values from the form and fetch the balance, which is then sent to the new label.</p>
<p><a href="http://www.joshgeving.com/wp-content/uploads/ScriptAP10VendorBalance.png"><img src="http://www.joshgeving.com/wp-content/uploads/ScriptAP10VendorBalance.png" alt="ScriptAP10VendorBalance" width="713" height="343" class="aligncenter size-full wp-image-161" /></a></p>
<p>&nbsp;</p>

<div class="bwp-syntax-block clearfix">
<div class="bwp-syntax-toolbar" style="right: 15px;" ><div class="bwp-syntax-control"><a href="javascript:;" class="bwp-syntax-source-switch" title="View Source Code"></a></div></div>
<div class="bwp-syntax-wrapper clearfix bwp-syntax-simple"style=" height: 252px;"><table class="csharp"><tbody><tr class="li1"><td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
</pre></td><td class="de1"><pre class="de1"><span class="co1">//-----------------------------------------------------------------------------</span>
<span class="co1">//&nbsp; JScript Example</span>
<span class="co1">//&nbsp; Created by: &nbsp; &nbsp; Josh Geving - Innovations Group</span>
<span class="co1">//&nbsp; </span>
<span class="co1">//&nbsp; Description: &nbsp; &nbsp;Example script to fetch a vendor balance from APVENBAL</span>
<span class="co1">//</span>
<span class="co1">//&nbsp; Notice: &nbsp; &nbsp; &nbsp; &nbsp; VBASET2 is being used as the index which is Vendor Group</span>
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and Vendor, depending on yous situation you may choose to</span>
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; change the code below and use VBASET1 which includes </span>
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Company</span>
<span class="co1">//&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>
<span class="co1">//</span>
<span class="co1">//&nbsp; Last Tested on Smart Office Version 10.1.0.38</span>
<span class="co1">//-----------------------------------------------------------------------------</span>
import <span class="kw5">System</span><span class="sy0">;</span>
import <span class="kw5">System</span><span class="sy0">.</span><span class="me1">Windows</span><span class="sy0">;</span>
import <span class="kw5">System</span><span class="sy0">.</span><span class="me1">Windows</span><span class="sy0">.</span><span class="me1">Controls</span><span class="sy0">;</span>
import S3<span class="sy0">.</span><span class="me1">Client</span><span class="sy0">.</span><span class="me1">Forms</span><span class="sy0">;</span>
&nbsp;
package S3<span class="sy0">.</span><span class="me1">Client</span><span class="sy0">.</span><span class="me1">Forms</span><span class="sy0">.</span><span class="me1">JScript</span> <span class="br0">&#123;</span>
&nbsp;
<span class="kw4">class</span> JjgAp10Balance
<span class="br0">&#123;</span>
&nbsp; &nbsp; var console, form, formGrid<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">public</span> function Init<span class="br0">&#40;</span>element<span class="sy0">:</span> <span class="kw4">Object</span>, args<span class="sy0">:</span> <span class="kw4">Object</span>, controller<span class="sy0">:</span> <span class="kw4">Object</span>, debug<span class="sy0">:</span> <span class="kw4">Object</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; form <span class="sy0">=</span> controller<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; formGrid <span class="sy0">=</span> form<span class="sy0">.</span><span class="me1">FormGrid</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console <span class="sy0">=</span> debug<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// TODO Add your code here</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// add a lable to display the vendor balance</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var label <span class="sy0">=</span> ControlsUtil<span class="sy0">.</span><span class="me1">AddCustomLabel</span><span class="br0">&#40;</span>form, formGrid, <span class="st0">&quot;lblBalance&quot;</span>, <span class="nu0">1</span>, <span class="nu0">60</span>, <span class="nu0">10</span>, <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// hook into the AfterTransaction event</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; form<span class="sy0">.</span><span class="me1">add_AfterTransaction</span><span class="br0">&#40;</span>OnAfterTransaction<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; form<span class="sy0">.</span><span class="me1">add_BeforeUnload</span><span class="br0">&#40;</span>OnBeforeUnload<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span>ScriptUtil<span class="sy0">.</span><span class="me1">FormatException</span><span class="br0">&#40;</span><span class="st0">&quot;Init&quot;</span>, e<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// event handlers</span>
&nbsp; &nbsp; <span class="kw1">public</span> function OnBeforeUnload<span class="br0">&#40;</span>sender<span class="sy0">:</span> <span class="kw4">Object</span>, e<span class="sy0">:</span> FormEventArgs<span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// perform cleanup</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// remove the hook for AfterTransaction</span>
&nbsp; &nbsp; &nbsp; &nbsp; form<span class="sy0">.</span><span class="me1">remove_AfterTransaction</span><span class="br0">&#40;</span>OnAfterTransaction<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; form<span class="sy0">.</span><span class="me1">remove_BeforeUnload</span><span class="br0">&#40;</span>OnBeforeUnload<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// AfterTransaction Event</span>
&nbsp; &nbsp; <span class="kw1">public</span> function OnAfterTransaction<span class="br0">&#40;</span>sender<span class="sy0">:</span> <span class="kw4">Object</span>, e<span class="sy0">:</span> TransactionEventArgs<span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// variable for balance</span>
&nbsp; &nbsp; &nbsp; &nbsp; var vBalance <span class="sy0">=</span> RunDataMine<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// set the value of the custom label to the balance found</span>
&nbsp; &nbsp; &nbsp; &nbsp; form<span class="sy0">.</span><span class="me1">SetCustomElementValue</span><span class="br0">&#40;</span><span class="st0">&quot;lblBalance&quot;</span>, vBalance<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">private</span> function RunDataMine<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//OUT=XML&amp;MAX=100&amp;PROD=APPS901&amp;FILE=APVENBAL&amp;INDEX=VBASET2&amp;KEY=1=1&amp;FIELD=CURRENT-BAL;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//gather form variables from the transaction</span>
&nbsp; &nbsp; &nbsp; &nbsp; var vVendorGroup &nbsp; &nbsp;<span class="sy0">=</span> form<span class="sy0">.</span><span class="me1">GetTransactionValue</span><span class="br0">&#40;</span><span class="st0">&quot;VEN-VENDOR-GROUP&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var vVendor &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> form<span class="sy0">.</span><span class="me1">GetTransactionValue</span><span class="br0">&#40;</span><span class="st0">&quot;VEN-VENDOR&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="me1">Trim</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// build up the Data Service call</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sProd &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> form<span class="sy0">.</span><span class="me1">GetUserAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;productline&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sFile &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;APVENBAL&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sField&nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;CURRENT-BAL&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sIndex &nbsp;&nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;VBASET2&amp;KEY=&quot;</span><span class="sy0">+</span>vVendorGroup<span class="sy0">+</span><span class="st0">&quot;=&quot;</span><span class="sy0">+</span>vVendor<span class="sy0">+</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sCond &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sSelect &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var sMax &nbsp; &nbsp;&nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Pass the variables for the API to DataService_Execute</span>
&nbsp; &nbsp; &nbsp; &nbsp; var aDataAPI &nbsp; &nbsp;<span class="sy0">=</span> DataService_Execute<span class="br0">&#40;</span>sProd,sFile, sField, sIndex, sCond, sSelect, sMax<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;aDataAPI.length: &quot;</span> <span class="sy0">+</span> aDataAPI<span class="sy0">.</span><span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Did we get anything back from the call?</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>aDataAPI<span class="sy0">.</span><span class="me1">length</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> aDataAPI<span class="sy0">.</span><span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span>aDataAPI<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> aDataAPI<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;***No Records***&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;No Balance&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">// private functions</span>
&nbsp; &nbsp; <span class="coMULTI">/**</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* DataService_Execute - This method returns an array for the api specified</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* Detail description</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* This method returns an array of values for for the api details</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;required &nbsp; &nbsp; sProd, PROD, defaults to user profile if not set - required</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;required &nbsp; &nbsp; sFile, FILE</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;required &nbsp; &nbsp; sField, FIELD</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;optional &nbsp; &nbsp; sIndex, INDEX, removed from api if not set</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;optional &nbsp; &nbsp; sCond, COND</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;optional &nbsp; &nbsp; sSelect, SELECT</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param &nbsp; &nbsp; &nbsp;optional &nbsp; &nbsp; sMax, MAX, defaults to 0 if not set</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @access &nbsp; &nbsp; private</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* @return &nbsp; &nbsp; array</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;*</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;* Example:</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;*</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp;*</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; private function RunDataMine()</span>
<span class="coMULTI">&nbsp; &nbsp; {</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; //OUT=XML&amp;MAX=100&amp;PROD=APPS901&amp;FILE=APVENBAL&amp;INDEX=VBASET2&amp;KEY=1=1&amp;FIELD=CURRENT-BAL;</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; //gather form variables from the transaction</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var vVendorGroup &nbsp; &nbsp;= form.GetTransactionValue(&quot;VEN-VENDOR-GROUP&quot;);</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var vVendor &nbsp; &nbsp; &nbsp; &nbsp; = form.GetTransactionValue(&quot;VEN-VENDOR&quot;).Trim();</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; // build up the Data Service call</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sProd &nbsp; &nbsp; &nbsp; = form.GetUserAttribute(&quot;productline&quot;);</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sFile &nbsp; &nbsp; &nbsp; = &quot;APVENBAL&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sField&nbsp; &nbsp; &nbsp; = &quot;CURRENT-BAL&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sIndex &nbsp;&nbsp; &nbsp; = &quot;VBASET2&amp;KEY=&quot;+vVendorGroup+&quot;=&quot;+vVendor+&quot;&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sCond &nbsp; &nbsp; &nbsp; = &quot;&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sSelect &nbsp; &nbsp; = &quot;&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var sMax &nbsp; &nbsp;&nbsp; &nbsp; = &quot;&quot;;</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; // Pass the variables for the API to DataService_Execute</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; var aDataAPI &nbsp; &nbsp;= DataService_Execute(sProd,sFile, sField, sIndex, sCond, sSelect, sMax);</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; console.WriteLine(&quot;aDataAPI.length: &quot; + aDataAPI.length);</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; // Did we get anything back from the call?</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; if(aDataAPI.length &gt; 0)</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; {</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var i = 0;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i = 0; i &lt; aDataAPI.length; i++)</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.WriteLine(aDataAPI[i]);</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return aDataAPI[i];</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; else{</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.WriteLine(&quot;***No Records***&quot;);</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &quot;No Balance&quot;;</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="coMULTI">&nbsp; &nbsp; }</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; */</span>
&nbsp; &nbsp; <span class="kw1">private</span> function DataService_Execute<span class="br0">&#40;</span>sProd,sFile, sField, sIndex, sCond, sSelect, sMax<span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var a &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="kw3">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var aFields <span class="sy0">=</span> <span class="kw3">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var i &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var s &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var oXML<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var oRecs<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var oRecNum<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var oRec<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var oFields<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Productline sProd empty, set from profile</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>sProd <span class="sy0">==</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>sProd <span class="sy0">=</span> form<span class="sy0">.</span><span class="me1">GetUserAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;productline&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Max sMax empty, set to 0 for all</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>sMax <span class="sy0">==</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>sMax <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Build the complete Data Service Call</span>
&nbsp; &nbsp; &nbsp; &nbsp; s <span class="sy0">=</span> ScriptConstants<span class="sy0">.</span><span class="me1">DataMinePath</span> <span class="sy0">+</span> <span class="st0">&quot;?PROD=&quot;</span> <span class="sy0">+</span> sProd <span class="sy0">+</span> <span class="st0">&quot;&amp;FILE=&quot;</span> <span class="sy0">+</span> sFile <span class="sy0">+</span> <span class="st0">&quot;&amp;FIELD=&quot;</span> <span class="sy0">+</span> sField<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// If Index we add Index to the call</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>sIndex <span class="sy0">!=</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>s <span class="sy0">+=</span> <span class="st0">&quot;&amp;INDEX=&quot;</span> <span class="sy0">+</span> sIndex<span class="sy0">;</span><span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// The rest of the call</span>
&nbsp; &nbsp; &nbsp; &nbsp; s <span class="sy0">+=</span> <span class="st0">&quot;&amp;COND=&quot;</span> <span class="sy0">+</span> sCond <span class="sy0">+</span> <span class="st0">&quot;&amp;SELECT=&quot;</span> <span class="sy0">+</span> sSelect <span class="sy0">+</span> <span class="st0">&quot;&amp;MAX=&quot;</span> <span class="sy0">+</span> sMax <span class="sy0">+</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;&amp;OUT=XML&amp;DELIM=&quot;</span><span class="sy0">+</span> <span class="kw3">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// Time used to prevent caching</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;s: &quot;</span> <span class="sy0">+</span> s<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Make the server request, record the time it took</span>
&nbsp; &nbsp; &nbsp; &nbsp; var bTime &nbsp; <span class="sy0">=</span> <span class="kw3">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; oXML &nbsp; &nbsp;&nbsp; &nbsp; <span class="sy0">=</span> ScriptUtil<span class="sy0">.</span><span class="me1">ServerRequest</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; var eTime &nbsp; <span class="sy0">=</span> <span class="kw3">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;API Execution Time: &quot;</span> <span class="sy0">+</span> <span class="br0">&#40;</span>eTime<span class="sy0">-</span>bTime<span class="br0">&#41;</span><span class="sy0">/</span><span class="nu0">1000</span> <span class="sy0">+</span> <span class="st0">&quot;seconds&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the Record Count Node</span>
&nbsp; &nbsp; &nbsp; &nbsp; oRecs &nbsp; <span class="sy0">=</span> oXML<span class="sy0">.</span><span class="me1">SelectSingleNode</span><span class="br0">&#40;</span><span class="st0">&quot;//RECORDS&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; oRecNum <span class="sy0">=</span> oRecs <span class="sy0">!=</span> <span class="kw1">null</span> <span class="sy0">?</span> oRecs<span class="sy0">.</span><span class="me1">ChildNodes</span><span class="sy0">.</span><span class="me1">Count</span> <span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;oRecNum: &quot;</span> <span class="sy0">+</span>oRecNum<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Determine if records were returned</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>oRecNum <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console<span class="sy0">.</span><span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;Data Service Call<span class="es0">\n</span><span class="es0">\n</span>&quot;</span> <span class="sy0">+</span> s <span class="sy0">+</span> <span class="st0">&quot;<span class="es0">\n</span><span class="es0">\n</span> returned &quot;</span> <span class="sy0">+</span> oRecNum <span class="sy0">+</span> <span class="st0">&quot; records.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> a<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Build an array with the results</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span>oRec <span class="kw1">in</span> oRecs<span class="sy0">.</span><span class="me1">ChildNodes</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oFields <span class="sy0">=</span> oRec<span class="sy0">.</span><span class="me1">SelectSingleNode</span><span class="br0">&#40;</span><span class="st0">&quot;./COLS&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFields <span class="sy0">=</span> <span class="kw3">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> oFields<span class="sy0">.</span><span class="me1">ChildNodes</span><span class="sy0">.</span><span class="me1">Count</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFields<span class="br0">&#91;</span>aFields<span class="sy0">.</span><span class="me1">length</span><span class="br0">&#93;</span> <span class="sy0">=</span> oFields<span class="sy0">.</span><span class="me1">ChildNodes</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">.</span><span class="me1">InnerText</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a<span class="br0">&#91;</span>a<span class="sy0">.</span><span class="me1">length</span><span class="br0">&#93;</span> <span class="sy0">=</span> aFields<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> 
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> a<span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span> <span class="br0">&#125;</span></pre></td></tr></tbody></table></div>
<div class="bwp-syntax-source"><pre class="no-parse">//-----------------------------------------------------------------------------
//	JScript Example
//	Created by: 	Josh Geving - Innovations Group
//	
//	Description: 	Example script to fetch a vendor balance from APVENBAL
//
//	Notice:			VBASET2 is being used as the index which is Vendor Group
//					and Vendor, depending on yous situation you may choose to
//					change the code below and use VBASET1 which includes 
//					Company
//					
//
//	Last Tested on Smart Office Version 10.1.0.38
//-----------------------------------------------------------------------------
import System;
import System.Windows;
import System.Windows.Controls;
import S3.Client.Forms;

package S3.Client.Forms.JScript {

class JjgAp10Balance
{
	var console, form, formGrid;

	public function Init(element: Object, args: Object, controller: Object, debug: Object)
	{
		try {
			form = controller;
			formGrid = form.FormGrid;
			console = debug;

			// TODO Add your code here

			// add a lable to display the vendor balance
			var label = ControlsUtil.AddCustomLabel(form, formGrid, "lblBalance", 1, 60, 10, "");

			// hook into the AfterTransaction event
			form.add_AfterTransaction(OnAfterTransaction);

			form.add_BeforeUnload(OnBeforeUnload);

		} catch (e) {
			console.WriteLine(ScriptUtil.FormatException("Init", e));
		}
	}

	// event handlers
	public function OnBeforeUnload(sender: Object, e: FormEventArgs)
	{
		// perform cleanup

		// remove the hook for AfterTransaction
		form.remove_AfterTransaction(OnAfterTransaction);

		form.remove_BeforeUnload(OnBeforeUnload);
	}

	// AfterTransaction Event
	public function OnAfterTransaction(sender: Object, e: TransactionEventArgs)
	{
		// variable for balance
		var vBalance = RunDataMine();

		// set the value of the custom label to the balance found
		form.SetCustomElementValue("lblBalance", vBalance);

	}

	private function RunDataMine()
	{
		//OUT=XML&amp;MAX=100&amp;PROD=APPS901&amp;FILE=APVENBAL&amp;INDEX=VBASET2&amp;KEY=1=1&amp;FIELD=CURRENT-BAL;

		//gather form variables from the transaction
		var vVendorGroup 	= form.GetTransactionValue("VEN-VENDOR-GROUP");
		var vVendor 		= form.GetTransactionValue("VEN-VENDOR").Trim();

		// build up the Data Service call
		var sProd 		= form.GetUserAttribute("productline");
		var sFile 		= "APVENBAL";
		var sField		= "CURRENT-BAL";
		var sIndex 		= "VBASET2&amp;KEY="+vVendorGroup+"="+vVendor+"";
		var sCond 		= "";
		var sSelect		= "";
		var sMax 		= "";

		// Pass the variables for the API to DataService_Execute
		var aDataAPI 	= DataService_Execute(sProd,sFile, sField, sIndex, sCond, sSelect, sMax);

		console.WriteLine("aDataAPI.length: " + aDataAPI.length);

		// Did we get anything back from the call?
		if(aDataAPI.length &gt; 0)
		{
			var i = 0;
			for(i = 0; i &lt; aDataAPI.length; i++)
			{
				console.WriteLine(aDataAPI[i]);
				return aDataAPI[i];
			}
		}
		else{
			console.WriteLine("***No Records***");
			return "No Balance";
		}
	}

	// private functions
	/**
	 * DataService_Execute - This method returns an array for the api specified
	 * Detail description
	 * This method returns an array of values for for the api details
	 * @param      required 	sProd, PROD, defaults to user profile if not set - required
	 * @param      required		sFile, FILE
	 * @param      required		sField, FIELD
	 * @param      optional		sIndex, INDEX, removed from api if not set
	 * @param      optional		sCond, COND
	 * @param      optional		sSelect, SELECT
	 * @param      optional		sMax, MAX, defaults to 0 if not set
	 * @access     private
	 * @return     array
	 *
	 * Example:
	 *
	 *

	private function RunDataMine()
	{
		//OUT=XML&amp;MAX=100&amp;PROD=APPS901&amp;FILE=APVENBAL&amp;INDEX=VBASET2&amp;KEY=1=1&amp;FIELD=CURRENT-BAL;

		//gather form variables from the transaction
		var vVendorGroup 	= form.GetTransactionValue("VEN-VENDOR-GROUP");
		var vVendor 		= form.GetTransactionValue("VEN-VENDOR").Trim();

		// build up the Data Service call
		var sProd 		= form.GetUserAttribute("productline");
		var sFile 		= "APVENBAL";
		var sField		= "CURRENT-BAL";
		var sIndex 		= "VBASET2&amp;KEY="+vVendorGroup+"="+vVendor+"";
		var sCond 		= "";
		var sSelect		= "";
		var sMax 		= "";

		// Pass the variables for the API to DataService_Execute
		var aDataAPI 	= DataService_Execute(sProd,sFile, sField, sIndex, sCond, sSelect, sMax);

		console.WriteLine("aDataAPI.length: " + aDataAPI.length);

		// Did we get anything back from the call?
		if(aDataAPI.length &gt; 0)
		{
			var i = 0;
			for(i = 0; i &lt; aDataAPI.length; i++)
			{
				console.WriteLine(aDataAPI[i]);
				return aDataAPI[i];
			}
		}
		else{
			console.WriteLine("***No Records***");
			return "No Balance";
		}
	}

	*/
	private function DataService_Execute(sProd,sFile, sField, sIndex, sCond, sSelect, sMax)
	{
		var a 		= new Array();
		var aFields = new Array();
		var i 		= 0;
		var s 		= "";
		var oXML;
		var oRecs;
		var oRecNum;
		var oRec;
		var oFields;

		// Productline sProd empty, set from profile
		if(sProd == ""){sProd = form.GetUserAttribute("productline");}

		// Max sMax empty, set to 0 for all
		if(sMax == ""){sMax = 0;}

		// Build the complete Data Service Call
		s = ScriptConstants.DataMinePath + "?PROD=" + sProd + "&amp;FILE=" + sFile + "&amp;FIELD=" + sField;

		// If Index we add Index to the call
		if(sIndex != ""){s += "&amp;INDEX=" + sIndex;}

		// The rest of the call
		s += "&amp;COND=" + sCond + "&amp;SELECT=" + sSelect + "&amp;MAX=" + sMax +
			"&amp;OUT=XML&amp;DELIM="+ new Date().getTime(); // Time used to prevent caching

		console.WriteLine("s: " + s);

		// Make the server request, record the time it took
		var bTime 	= new Date().getTime();

		oXML 		= ScriptUtil.ServerRequest(s);
		var eTime 	= new Date().getTime();
		console.WriteLine("API Execution Time: " + (eTime-bTime)/1000 + "seconds");

		// Get the Record Count Node
		oRecs 	= oXML.SelectSingleNode("//RECORDS");
		oRecNum = oRecs != null ? oRecs.ChildNodes.Count : 0;

		console.WriteLine("oRecNum: " +oRecNum);

		// Determine if records were returned
		if(oRecNum == 0)
		{
			console.WriteLine("Data Service Call\n\n" + s + "\n\n returned " + oRecNum + " records.");
			return a;
		}

		// Build an array with the results
		for(oRec in oRecs.ChildNodes)
		{
			oFields = oRec.SelectSingleNode("./COLS");
			aFields = new Array();
			for(i = 0; i &lt; oFields.ChildNodes.Count; i++)
			{
				aFields[aFields.length] = oFields.ChildNodes[i].InnerText;
			}
			a[a.length] = aFields;
		} 
		return a;
	}

} }</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/display-vendor-balance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Mining Engine (DME) Code for Design Studio Scripting</title>
		<link>http://www.joshgeving.com/lawson/data-mining-engine-dme-code-for-design-studio-scripting/</link>
		<comments>http://www.joshgeving.com/lawson/data-mining-engine-dme-code-for-design-studio-scripting/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 19:19:01 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Design Studio]]></category>
		<category><![CDATA[Lawson]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=5</guid>
		<description><![CDATA[I am always asked by developers new to Design Studio how to perform a DME call to retrieve data within Lawson S3 applications.  I came across this code years ago and it has proven invaluable for this task. You can attach directly to a form as is or use it as an Include file but it facilitates...]]></description>
				<content:encoded><![CDATA[<p>I am always asked by developers new to Design Studio how to perform a DME call to retrieve data within Lawson S3 applications.  I came across this code years ago and it has proven invaluable for this task. You can attach directly to a form as is or use it as an Include file but it facilitates the processing of a DME API into Lawson for use with an S3 form.  Below the code I have attached a simple example where this code is used.</p>
<h1>DME Code (Updated on April 16, 2013, now compatible with 10.0.3 and 10.1 Portal)</h1>
<p>&nbsp;</p>

<div class="bwp-syntax-block clearfix">
<div class="bwp-syntax-toolbar" style="right: 15px;" ><div class="bwp-syntax-control"><a href="javascript:;" class="bwp-syntax-source-switch" title="View Source Code"></a></div></div>
<div class="bwp-syntax-wrapper clearfix bwp-syntax-simple"style=" height: 252px;"><table class="javascript"><tbody><tr class="li1"><td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
</pre></td><td class="de1"><pre class="de1"><span class="coMULTI">/************************************************************</span>
<span class="coMULTI">********************* DME OBJECT CODE ***********************</span>
<span class="coMULTI">***************** SIMPLIFIES PERFORMING A DME ***************</span>
<span class="coMULTI">***************** UPDATED APRIL 2013 for 10.0.3 *************</span>
<span class="coMULTI">*************************************************************</span>
<span class="coMULTI">************************************************************* &nbsp; </span>
<span class="coMULTI">************************************************************/</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: exampleDme()</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Simple example usign the dme code</span>
<span class="coMULTI">************************************************************/</span>
<span class="kw2">function</span> exampleDme<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="co1">//fetch the effective date used so we can send a change action</span>
&nbsp; &nbsp; <span class="kw2">var</span> vCo &nbsp; &nbsp; <span class="sy0">=</span> portalWnd.<span class="me1">oUserProfile</span>.<span class="me1">getAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;company&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw2">var</span> vJobCode &nbsp; &nbsp;<span class="sy0">=</span> <span class="st0">&quot;110&quot;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//set object and table/prodline</span>
&nbsp; &nbsp; <span class="kw2">var</span> empDMEObj &nbsp; <span class="sy0">=</span> <span class="kw2">new</span> DMEObject<span class="br0">&#40;</span><span class="st0">&quot;JOBCODE&quot;</span><span class="sy0">,</span> strPDL<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//set an index</span>
&nbsp; &nbsp; empDMEObj.<span class="me1">setIndex</span><span class="br0">&#40;</span><span class="st0">&quot;JBCSET1&amp;KEY=&quot;</span> <span class="sy0">+</span> vCo <span class="sy0">+</span> <span class="st0">&quot;=&quot;</span> <span class="sy0">+</span> vJobCode<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//tell it what fields to fetch</span>
&nbsp; &nbsp; empDMEObj.<span class="me1">addField</span><span class="br0">&#40;</span><span class="st0">&quot;EFFECTIVE-DATE&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//prompt(&quot;obj&quot;,empDMEObj.toString());</span>
&nbsp; &nbsp; empDMEObj.<span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//grab a field from the dme result</span>
&nbsp; &nbsp; <span class="kw2">var</span> vEffectDateHR06 <span class="sy0">=</span> empDMEObj.<span class="me1">getField</span><span class="br0">&#40;</span><span class="st0">&quot;EFFECTIVE-DATE&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> 
&nbsp;
&nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>vEffectDateHR06<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: getVarFromString</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;get the variables from the search string</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Example: &nbsp;var vCompany = getVarFromString(&quot;Company&quot;,parent.location.search);</span>
<span class="coMULTI">************************************************************/</span>
<span class="kw2">function</span> getVarFromString<span class="br0">&#40;</span>varName<span class="sy0">,</span>str<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; str<span class="sy0">+=</span><span class="st0">'&amp;'</span>
&nbsp; &nbsp; reStr<span class="sy0">=</span><span class="st0">&quot;(?:<span class="es0">\\</span>&amp;|<span class="es0">\\</span>?|^)&quot;</span> <span class="sy0">+</span> varName <span class="sy0">+</span> <span class="st0">&quot;=(.*?)(?:<span class="es0">\\</span>&amp;|$)&quot;</span>
&nbsp; &nbsp; <span class="kw2">var</span> re<span class="sy0">=</span><span class="kw2">new</span> RegExp<span class="br0">&#40;</span>reStr<span class="sy0">,</span><span class="st0">&quot;gi&quot;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>re.<span class="me1">test</span><span class="br0">&#40;</span>str<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> RegExp.$1
&nbsp; &nbsp; <span class="kw1">else</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;&quot;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: getDMEColumnIndex(pColumns)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Helper Method used assist in getting DME record data as seen on pg 114 of </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Design Studio User Guide</span>
<span class="coMULTI">************************************************************/</span>
<span class="kw2">function</span> getDMEColumnIndex<span class="br0">&#40;</span>pColumns<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> vIndex <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>pColumns.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vLabel <span class="sy0">=</span> pColumns<span class="br0">&#91;</span>i<span class="br0">&#93;</span>.<span class="me1">getAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;header&quot;</span><span class="br0">&#41;</span>.<span class="me1">toUpperCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&quot;_&quot;</span><span class="br0">&#41;</span>.<span class="me1">join</span><span class="br0">&#40;</span><span class="st0">&quot;-&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; vIndex<span class="br0">&#91;</span>vLabel<span class="br0">&#93;</span> <span class="sy0">=</span> i<span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="kw1">return</span> vIndex<span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: getNodeValue(pNode)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Helper Method used assist in getting DME field data as seen on pg 114 of</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Design Studio User Guide</span>
<span class="coMULTI">************************************************************/</span>
<span class="kw2">function</span> getNodeValue<span class="br0">&#40;</span>pNode<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>pNode.<span class="me1">childNodes</span>.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>pNode.<span class="me1">childNodes</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span>.<span class="me1">nodeType</span> <span class="sy0">==</span> <span class="nu0">4</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> pNode.<span class="me1">childNodes</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span>.<span class="me1">nodeValue</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: DMEObject</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Constructor. &nbsp;Return a new DMEObject for a file(table) and productline.</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Initialize your instance variables.</span>
<span class="coMULTI">************************************************************/</span>
<span class="kw2">function</span> DMEObject<span class="br0">&#40;</span>pFile<span class="sy0">,</span> pPDL<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">file</span> <span class="sy0">=</span> pFile<span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">pdl</span> <span class="sy0">=</span> pPDL<span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">index</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">conditions</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">fields</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">select</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">optParams</span><span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">dmeString</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">records</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">columns</span> <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">length</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">maxRecords</span> <span class="sy0">=</span> <span class="nu0">9999</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">success</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: setIndex(pIndex)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a predefined index and sets in in </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the object..</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">setIndex</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pIndex<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">index</span> <span class="sy0">=</span> pIndex<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: setIndex(pIndex)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a predefined index and sets in in </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the object..</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">setOptParams</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pOptParams<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">optParams</span> <span class="sy0">=</span> pOptParams<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: setConditions(pConditions)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a predefined Conditions and sets in in </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the object..</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">setConditions</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pConditions<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">conditions</span> <span class="sy0">=</span> pConditions<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: setSelect(pSelect)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a predefined index and sets in in </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the object..</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">setSelect</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pSelect<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">select</span><span class="sy0">=</span> pSelect<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: addField(pField, pFieldValue)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a field name and adds it to the </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fields portion of the DME string.</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">addField</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pField<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">fields</span> <span class="sy0">+=</span> pField<span class="sy0">+</span><span class="st0">&quot;;&quot;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">true</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: getField(pField)</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method for DMEObject. &nbsp;Takes in a field name as a parameter and </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return's it's value from the DME String. &nbsp;If pRelRecTable is populated, pField</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; will be ignored and an array will be passed back.</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">getField</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>pField<span class="sy0">,</span> pRow<span class="sy0">,</span> pRelRecTable<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> rFieldValue<span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>pRow <span class="sy0">==</span> undefined<span class="br0">&#41;</span> <span class="sy0">||</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pRow <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; pRow <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>pRelRecTable <span class="sy0">==</span> undefined<span class="br0">&#41;</span> <span class="sy0">||</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pRelRecTable <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; pRelRecTable <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//if it's not an empty string, we'll return the value from the related record tables</span>
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>pRelRecTable <span class="sy0">!=</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vNewRelRecsArray <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vRelRecsArray <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">returnRecords</span><span class="br0">&#91;</span>pRow<span class="br0">&#93;</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;RELRECS&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="co1">//alert(this.returnRecords[0].getElementsByTagName(&quot;RELRECS&quot;)[0].getElementsByTagName(&quot;RELREC&quot;)[1].getElementsByTagName(&quot;COL&quot;)[1].childNodes[0].nodeValue)</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//search each related table record set for one that matches pRelRecTable</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> vRelRecsArray.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>vRelRecsArray<span class="br0">&#91;</span>i<span class="br0">&#93;</span>.<span class="me1">getAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span><span class="br0">&#41;</span>.<span class="me1">toUpperCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&quot;_&quot;</span><span class="br0">&#41;</span>.<span class="me1">join</span><span class="br0">&#40;</span><span class="st0">&quot;-&quot;</span><span class="br0">&#41;</span> <span class="sy0">==</span> pRelRecTable.<span class="me1">toUpperCase</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vRelRecArray <span class="sy0">=</span> vRelRecsArray<span class="br0">&#91;</span>i<span class="br0">&#93;</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;RELREC&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//search specific related table record set's values</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> j<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> j <span class="sy0">&lt;</span> vRelRecArray.<span class="me1">length</span><span class="sy0">;</span> j<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vNewRelRecArray <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vRelRecColArray <span class="sy0">=</span> vRelRecArray<span class="br0">&#91;</span>j<span class="br0">&#93;</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;COL&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> k<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> k <span class="sy0">&lt;</span> vRelRecColArray.<span class="me1">length</span><span class="sy0">;</span> k<span class="sy0">++</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vRelRecColValue <span class="sy0">=</span> vRelRecColArray<span class="br0">&#91;</span>k<span class="br0">&#93;</span>.<span class="me1">childNodes</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>.<span class="me1">nodeValue</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vNewRelRecArray.<span class="me1">push</span><span class="br0">&#40;</span>vRelRecColValue<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vNewRelRecsArray.<span class="me1">push</span><span class="br0">&#40;</span>vNewRelRecArray<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; rFieldValue <span class="sy0">=</span> vNewRelRecsArray<span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="kw1">else</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> vRecord <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">returnRecords</span><span class="br0">&#91;</span>pRow<span class="br0">&#93;</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;COL&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; rFieldValue <span class="sy0">=</span> getNodeValue<span class="br0">&#40;</span>vRecord<span class="br0">&#91;</span><span class="kw1">this</span>.<span class="me1">columns</span><span class="br0">&#91;</span>pField<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span>rFieldValue<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: BuildDMEString()</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Helper class method for DMEObject to build an DME string based on an DMEObject </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; passed in. &nbsp;Could be used stand-alone.</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">BuildDMEString</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>vDMEObject<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw2">var</span> vDMEString <span class="sy0">=</span> portalWnd.<span class="me1">DMEPath</span> 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;?PROD=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">pdl</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;FILE=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">file</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;INDEX=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">index</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;COND=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">conditions</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;FIELD=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">fields</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;SELECT=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">select</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> <span class="st0">&quot;&amp;MAX=&quot;</span> <span class="sy0">+</span> vDMEObject.<span class="me1">maxRecords</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span> vDMEObject.<span class="me1">optParams</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">+</span><span class="st0">&quot;&amp;OUT=XML&amp;DELIM=&quot;</span><span class="sy0">+</span><span class="br0">&#40;</span><span class="kw2">new</span> Date<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//time was added to the unused field &quot;DELIM&quot; so it forces the DME to not used the cached data</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">return</span> vDMEString<span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: execute()</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method to execute this DME call. &nbsp;Returns true on success, false on any </span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; failure</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">execute</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">dmeString</span> <span class="sy0">=</span> DMEObject.<span class="me1">BuildDMEString</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
&nbsp; &nbsp; <span class="co1">//execute http post</span>
&nbsp; &nbsp; <span class="kw2">var</span> vDMEInfo <span class="sy0">=</span> portalWnd.<span class="me1">httpRequest</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">dmeString</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="co1">//if the status exists, there was an error in the system, otherwise proceed to pull data out</span>
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>vDMEInfo.<span class="kw3">status</span><span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">success</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="kw1">else</span>
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> xmlObj <span class="sy0">=</span> <span class="kw2">new</span> portalWnd.<span class="me1">DataStorage</span><span class="br0">&#40;</span>vDMEInfo<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">returnRecords</span> <span class="sy0">=</span> xmlObj.<span class="me1">document</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;RECORD&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">columns</span> <span class="sy0">=</span> getDMEColumnIndex<span class="br0">&#40;</span>xmlObj.<span class="me1">document</span>.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;COLUMN&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">length</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">returnRecords</span>.<span class="me1">length</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="co1">//return true if it was successful and false if it wasnt&nbsp; &nbsp; </span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">success</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="coMULTI">/************************************************************</span>
<span class="coMULTI">&nbsp; &nbsp; Function: toString()</span>
&nbsp;
<span class="coMULTI">&nbsp; &nbsp; Purpose: &nbsp;Instance method to aid in debugging. &nbsp;Returns the current DME string for the</span>
<span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the fields that have been added to the object so far.</span>
<span class="coMULTI">************************************************************/</span>
DMEObject.<span class="me1">prototype</span>.<span class="me1">toString</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">dmeString</span> <span class="sy0">=</span> DMEObject.<span class="me1">BuildDMEString</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">dmeString</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></tbody></table></div>
<div class="bwp-syntax-source"><pre class="no-parse">/************************************************************
********************* DME OBJECT CODE ***********************
***************** SIMPLIFIES PERFORMING A DME ***************
***************** UPDATED APRIL 2013 for 10.0.3 *************
*************************************************************
*************************************************************	
************************************************************/

/************************************************************
	Function: exampleDme()

	Purpose:  Simple example usign the dme code
************************************************************/
function exampleDme()
{
	//fetch the effective date used so we can send a change action
	var vCo 	= portalWnd.oUserProfile.getAttribute("company");
	var vJobCode 	= "110";

	//set object and table/prodline
	var empDMEObj 	= new DMEObject("JOBCODE", strPDL);

	//set an index
	empDMEObj.setIndex("JBCSET1&amp;KEY=" + vCo + "=" + vJobCode);

	//tell it what fields to fetch
	empDMEObj.addField("EFFECTIVE-DATE");

	//prompt("obj",empDMEObj.toString());
	empDMEObj.execute();

	//grab a field from the dme result
	var vEffectDateHR06 = empDMEObj.getField("EFFECTIVE-DATE");	

	alert(vEffectDateHR06);
}

/************************************************************
	Function: getVarFromString

	Purpose:  get the variables from the search string

	Example:  var vCompany = getVarFromString("Company",parent.location.search);
************************************************************/
function getVarFromString(varName,str)
{
	str+='&amp;'
	reStr="(?:\\&amp;|\\?|^)" + varName + "=(.*?)(?:\\&amp;|$)"
	var re=new RegExp(reStr,"gi")
	if(re.test(str))
		return RegExp.$1
	else
		return ""
}

/************************************************************
	Function: getDMEColumnIndex(pColumns)

	Purpose:  Helper Method used assist in getting DME record data as seen on pg 114 of 
		  Design Studio User Guide
************************************************************/
function getDMEColumnIndex(pColumns)
{
	var vIndex = new Array();
	for (var i=0; i&lt;pColumns.length; i++)
	{
		var vLabel = pColumns[i].getAttribute("header").toUpperCase().split("_").join("-");
		vIndex[vLabel] = i;
	}
	return vIndex;
}

/************************************************************
	Function: getNodeValue(pNode)

	Purpose:  Helper Method used assist in getting DME field data as seen on pg 114 of
		  Design Studio User Guide
************************************************************/
function getNodeValue(pNode)
{
	for (var i=0; i&lt;pNode.childNodes.length; i++)
	{
		if (pNode.childNodes[i].nodeType == 4)
		{
			return pNode.childNodes[i].nodeValue;
		}
	}
}

/************************************************************
	Function: DMEObject

	Purpose:  Constructor.  Return a new DMEObject for a file(table) and productline.
		  Initialize your instance variables.
************************************************************/
function DMEObject(pFile, pPDL)
{
	this.file = pFile;
	this.pdl = pPDL;
	this.index = "";
	this.conditions = "";
	this.fields = "";
	this.select = "";
	this.optParams= "";
	this.dmeString = "";
	this.records = null;
	this.columns = new Array();
	this.length = 0;
	this.maxRecords = 9999;
	this.success = false;
}

/************************************************************
	Function: setIndex(pIndex)

	Purpose:  Instance method for DMEObject.  Takes in a predefined index and sets in in 
		  the object..
************************************************************/
DMEObject.prototype.setIndex = function(pIndex)
{
	this.index = pIndex;

	return true;
}

/************************************************************
	Function: setIndex(pIndex)

	Purpose:  Instance method for DMEObject.  Takes in a predefined index and sets in in 
		  the object..
************************************************************/
DMEObject.prototype.setOptParams = function(pOptParams)
{
	this.optParams = pOptParams;

	return true;
}

/************************************************************
	Function: setConditions(pConditions)

	Purpose:  Instance method for DMEObject.  Takes in a predefined Conditions and sets in in 
		  the object..
************************************************************/
DMEObject.prototype.setConditions = function(pConditions)
{
	this.conditions = pConditions;

	return true;
}

/************************************************************
	Function: setSelect(pSelect)

	Purpose:  Instance method for DMEObject.  Takes in a predefined index and sets in in 
		  the object..
************************************************************/
DMEObject.prototype.setSelect = function(pSelect)
{
	this.select= pSelect;

	return true;
}

/************************************************************
	Function: addField(pField, pFieldValue)

	Purpose:  Instance method for DMEObject.  Takes in a field name and adds it to the 
		  fields portion of the DME string.
************************************************************/
DMEObject.prototype.addField = function(pField)
{
	this.fields += pField+";";

	return true;
}

/************************************************************
	Function: getField(pField)

	Purpose:  Instance method for DMEObject.  Takes in a field name as a parameter and 
		  return's it's value from the DME String.  If pRelRecTable is populated, pField
		  will be ignored and an array will be passed back.
************************************************************/
DMEObject.prototype.getField = function(pField, pRow, pRelRecTable)
{
	var rFieldValue;

	if ((pRow == undefined) ||
	    (pRow == null))
	{
		pRow = 0;
	}
	if ((pRelRecTable == undefined) ||
	    (pRelRecTable == null))
	{
		pRelRecTable = "";
	}

	//if it's not an empty string, we'll return the value from the related record tables
	if (pRelRecTable != "")
	{
		var vNewRelRecsArray = new Array();
		var vRelRecsArray = this.returnRecords[pRow].getElementsByTagName("RELRECS");
//alert(this.returnRecords[0].getElementsByTagName("RELRECS")[0].getElementsByTagName("RELREC")[1].getElementsByTagName("COL")[1].childNodes[0].nodeValue)
		//search each related table record set for one that matches pRelRecTable
		for(var i=0; i &lt; vRelRecsArray.length; i++)
		{
			if (vRelRecsArray[i].getAttribute("name").toUpperCase().split("_").join("-") == pRelRecTable.toUpperCase())
			{
				var vRelRecArray = vRelRecsArray[i].getElementsByTagName("RELREC");
				//search specific related table record set's values
				for(var j=0; j &lt; vRelRecArray.length; j++)
				{
					var vNewRelRecArray = new Array();
					var vRelRecColArray = vRelRecArray[j].getElementsByTagName("COL");

					for(var k=0; k &lt; vRelRecColArray.length; k++)
					{
						var vRelRecColValue = vRelRecColArray[k].childNodes[0].nodeValue;
						vNewRelRecArray.push(vRelRecColValue);
					}
					vNewRelRecsArray.push(vNewRelRecArray)
				}

				break;
			}
		}
		rFieldValue = vNewRelRecsArray;
	}
	else
	{
		var vRecord = this.returnRecords[pRow].getElementsByTagName("COL");

		rFieldValue = getNodeValue(vRecord[this.columns[pField]]);
	}

	return (rFieldValue);
}

/************************************************************
	Function: BuildDMEString()

	Purpose:  Helper class method for DMEObject to build an DME string based on an DMEObject 
		  passed in.  Could be used stand-alone.
************************************************************/
DMEObject.BuildDMEString = function(vDMEObject)
{
	var vDMEString = portalWnd.DMEPath 
			 + "?PROD=" + vDMEObject.pdl
			 + "&amp;FILE=" + vDMEObject.file
			 + "&amp;INDEX=" + vDMEObject.index
			 + "&amp;COND=" + vDMEObject.conditions
			 + "&amp;FIELD=" + vDMEObject.fields
			 + "&amp;SELECT=" + vDMEObject.select
			 + "&amp;MAX=" + vDMEObject.maxRecords
			 + vDMEObject.optParams
			 +"&amp;OUT=XML&amp;DELIM="+(new Date()).getTime();

	//time was added to the unused field "DELIM" so it forces the DME to not used the cached data

	return vDMEString;
}

/************************************************************
	Function: execute()

	Purpose:  Instance method to execute this DME call.  Returns true on success, false on any 
		  failure
************************************************************/
DMEObject.prototype.execute = function()
{
	this.dmeString = DMEObject.BuildDMEString(this);

	//execute http post
	var vDMEInfo = portalWnd.httpRequest(this.dmeString);
	//if the status exists, there was an error in the system, otherwise proceed to pull data out
	if (vDMEInfo.status)
	{
		this.success = false;
	}
	else
	{
		var xmlObj = new portalWnd.DataStorage(vDMEInfo);
		this.returnRecords = xmlObj.document.getElementsByTagName("RECORD");
		this.columns = getDMEColumnIndex(xmlObj.document.getElementsByTagName("COLUMN"));
		this.length = this.returnRecords.length;
	}
	//return true if it was successful and false if it wasnt	
	return this.success;
}

/************************************************************
	Function: toString()

	Purpose:  Instance method to aid in debugging.  Returns the current DME string for the
		  the fields that have been added to the object so far.
************************************************************/
DMEObject.prototype.toString = function()
{
	this.dmeString = DMEObject.BuildDMEString(this);
	return this.dmeString;
}</pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/lawson/data-mining-engine-dme-code-for-design-studio-scripting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Employee Self-Service Mashup Example</title>
		<link>http://www.joshgeving.com/smartoffice/employee-self-service-mashup-example/</link>
		<comments>http://www.joshgeving.com/smartoffice/employee-self-service-mashup-example/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 14:32:48 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=140</guid>
		<description><![CDATA[I had a few requests within the same week to create a Mashup that employees could use inside Smart Office to access the Self-Service applications which are browser applications. This can be done various ways, one of the easiest being to provide a set of Favorites. But the Mashup was the preferred route. Below you...]]></description>
				<content:encoded><![CDATA[<p>I had a few requests within the same week to create a Mashup that employees could use inside Smart Office to access the Self-Service applications which are browser applications.</p>
<p>This can be done various ways, one of the easiest being to provide a set of Favorites. But the Mashup was the preferred route.</p>
<p><a href="http://www.joshgeving.com/smartoffice/employee-self-service-mashup-example/attachment/ess_mashup/" rel="attachment wp-att-141"><img class="aligncenter size-full wp-image-141" title="ess_mashup" src="http://www.joshgeving.com/wp-content/uploads/ess_mashup.png" alt="" width="885" height="681" /></a></p>
<p>Below you will find the completed Xaml code.  There are only a few interesting parts to note:</p>
<p>1) Notice the use of the &lt;&lt;HttpServer&gt;&gt; constant.  This is a value understood by the Mashup and allows you to move this around from server to server and avoid using a hard-coded value.</p>

<div class="bwp-syntax-block clearfix">
<div class="bwp-syntax-toolbar"><div class="bwp-syntax-control"><a href="javascript:;" class="bwp-syntax-source-switch" title="View Source Code"></a></div></div>
<div class="bwp-syntax-wrapper clearfix bwp-syntax-simple"><table class="csharp"><tbody><tr class="li1"><td class="ln"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1"><span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Reg by Course&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycourse.htm&quot;</span> <span class="sy0">/&gt;</span></pre></td></tr></tbody></table></div>
<div class="bwp-syntax-source"><pre class="no-parse">&lt;mashup:NavigationTreeMember Level="1" Label="Reg by Course" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycourse.htm" /&gt;</pre></div></div>

<p>&nbsp;</p>
<p>2) The Column and Row where the NetBrowser control resides are both set to 1* and not Auto.  This allows the web page to fit nicely inside the Mashup and take up all of the existing space.</p>
<p>Here is the completed Xaml.</p>

<div class="bwp-syntax-block clearfix">
<div class="bwp-syntax-toolbar" style="right: 15px;" ><div class="bwp-syntax-control"><a href="javascript:;" class="bwp-syntax-source-switch" title="View Source Code"></a></div></div>
<div class="bwp-syntax-wrapper clearfix bwp-syntax-simple"style=" height: 252px;"><table class="csharp"><tbody><tr class="li1"><td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
</pre></td><td class="de1"><pre class="de1"><span class="sy0">&lt;!--</span>
Employee Self<span class="sy0">-</span>Service example mashup developed by Josh Geving
<span class="sy0">--&gt;</span>
<span class="sy0">&lt;</span>Grid xmlns<span class="sy0">=</span><span class="st0">&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span> xmlns<span class="sy0">:</span>x<span class="sy0">=</span><span class="st0">&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span> xmlns<span class="sy0">:</span>ui<span class="sy0">=</span><span class="st0">&quot;clr-namespace:Mango.UI.Controls;assembly=Mango.UI&quot;</span> xmlns<span class="sy0">:</span>mashup<span class="sy0">=</span><span class="st0">&quot;clr-namespace:Mango.UI.Services.Mashup;assembly=Mango.UI&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;</span>Grid<span class="sy0">.</span><span class="me1">Resources</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>Grid<span class="sy0">.</span><span class="me1">Resources</span><span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sy0">&lt;</span>Grid<span class="sy0">.</span><span class="me1">ColumnDefinitions</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>ColumnDefinition Width<span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>ColumnDefinition Width<span class="sy0">=</span><span class="st0">&quot;Auto&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>ColumnDefinition Width<span class="sy0">=</span><span class="st0">&quot;1*&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>Grid<span class="sy0">.</span><span class="me1">ColumnDefinitions</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;</span>Grid<span class="sy0">.</span><span class="me1">RowDefinitions</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>RowDefinition Height<span class="sy0">=</span><span class="st0">&quot;40&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>RowDefinition Height<span class="sy0">=</span><span class="st0">&quot;1*&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>Grid<span class="sy0">.</span><span class="me1">RowDefinitions</span><span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;!--</span> An example of an optional menu bar, could be removed <span class="kw1">if</span> no menu bar will be used <span class="sy0">--&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;!--</span>
&nbsp; &nbsp; <span class="sy0">&lt;</span>StackPanel Grid<span class="sy0">.</span><span class="me1">Row</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Grid<span class="sy0">.</span><span class="me1">Column</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Orientation<span class="sy0">=</span><span class="st0">&quot;Horizontal&quot;</span> HorizontalAlignment<span class="sy0">=</span><span class="st0">&quot;Stretch&quot;</span> Height<span class="sy0">=</span><span class="st0">&quot;40&quot;</span> 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Style<span class="sy0">=</span><span class="st0">&quot;{DynamicResource styleBackgroundApplicationBarMashup}&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>Menu<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>MenuItem Header<span class="sy0">=</span><span class="st0">&quot;_File&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>MenuItem Header<span class="sy0">=</span><span class="st0">&quot;_New&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>Separator <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>MenuItem Header<span class="sy0">=</span><span class="st0">&quot;_Save&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>MenuItem<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>Menu<span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>StackPanel<span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">--&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTree Name<span class="sy0">=</span><span class="st0">&quot;NavTree&quot;</span> Grid<span class="sy0">.</span><span class="me1">Column</span><span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Grid<span class="sy0">.</span><span class="me1">Row</span><span class="sy0">=</span><span class="st0">&quot;1&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTree<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Credentials&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Career Management&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/careermanagement/employee/mainWinCheesecake.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Competency Profile&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/credentials/ecpmain.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Contract Balances&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/contractbalances.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Professional Profile&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/credentials/pp.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Employment&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Job Postings&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/pajobreq.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Job Profile&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/jobprofile.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Jobs Applied For&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/pareqapp.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Phone Book&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/phonebook.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Policy Manual&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/policybook.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;ReviewHistory&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/reviewhist.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Work Phone&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/empphone.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Life Events&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Life Events&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/lifeevents_splash.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Adoption&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/adoption.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Birth&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/birth.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Divorce&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/divorce.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Legal Separation&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/legalsep.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Marriage&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/marriage.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Move&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/homeaddress.htm?from=lifeevents&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Spouse Employment&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/spouseemployment.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Pay&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Direct Deposit&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/directdeposit/ddmain.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Org Chart&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/orgchart.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Pay Checks&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paychecks.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Pay Rate History&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/payratehistory.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Payment Modeling&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paymentmodeling.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Tax Withholding&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/w4/taxwithholding.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Year To Date&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/yeartodate.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Personal Info&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Certifications&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=crt&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Competencies&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=cmp&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Dependents&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/dependentsmain.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Education&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=edu&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Emergency&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/emergencycontacts.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Ethnicity&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/ethnicity.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Leave Balances&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/leavebalancebegin.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Marital Status&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/maritalstatus.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Military Status&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/military.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Nickname&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/nickname.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Personal Profile&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/emppersonal.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Veteran Status&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/veteran.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Time Entry&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Daily&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/timeentry.htm?type=daily&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Exception Entry&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/exception/exception.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Period Entry&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/timeentry.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Print Time Entry&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/printtime.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Training&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Reg by Category&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycategory.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Reg by Course&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycourse.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Reg by Tracks&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbytrack.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Required Training&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/patrnreq.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Scheduled Training&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paregister.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Training History&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/patrnhist.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;0&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Retirement&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Stock Options&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/stockoptions/employee/shr064.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Savings Modeling&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/401k/401k.htm&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NavigationTreeMember Level<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Label<span class="sy0">=</span><span class="st0">&quot;Goal View&quot;</span> Uri<span class="sy0">=</span><span class="st0">&quot;&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/goalmanagementemployee.html&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMember<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTreeMembers<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTree<span class="sy0">.</span><span class="me1">Members</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NavigationTree<span class="sy0">&gt;</span>
&nbsp;
&nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NetBrowser Name<span class="sy0">=</span><span class="st0">&quot;NetBrowser&quot;</span> Grid<span class="sy0">.</span><span class="me1">Column</span><span class="sy0">=</span><span class="st0">&quot;2&quot;</span> StartUri<span class="sy0">=</span><span class="st0">&quot;http://go2.infor.com/brand/images/logo_animation.gif&quot;</span> Margin<span class="sy0">=</span><span class="st0">&quot;5&quot;</span> Grid<span class="sy0">.</span><span class="me1">Row</span><span class="sy0">=</span><span class="st0">&quot;1&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>NetBrowser<span class="sy0">.</span><span class="me1">Events</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>Events<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span><span class="kw1">Event</span> SourceName<span class="sy0">=</span><span class="st0">&quot;NavTree&quot;</span> TargetName<span class="sy0">=</span><span class="st0">&quot;NetBrowser&quot;</span> SourceEventName<span class="sy0">=</span><span class="st0">&quot;CurrentItemChanged&quot;</span> TargetEventName<span class="sy0">=</span><span class="st0">&quot;Navigate&quot;</span> Activate<span class="sy0">=</span><span class="st0">&quot;NetBrowser&quot;</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>mashup<span class="sy0">:</span>Parameter SourceKey<span class="sy0">=</span><span class="st0">&quot;Uri&quot;</span> TargetKey<span class="sy0">=</span><span class="st0">&quot;Uri&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span><span class="kw1">Event</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>Events<span class="sy0">&gt;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NetBrowser<span class="sy0">.</span><span class="me1">Events</span><span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;/</span>mashup<span class="sy0">:</span>NetBrowser<span class="sy0">&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;</span>GridSplitter Name<span class="sy0">=</span><span class="st0">&quot;Splitter&quot;</span> Style<span class="sy0">=</span><span class="st0">&quot;{DynamicResource styleGridSplitterVerticalMashup}&quot;</span> Grid<span class="sy0">.</span><span class="me1">Column</span><span class="sy0">=</span><span class="st0">&quot;1&quot;</span> Grid<span class="sy0">.</span><span class="me1">Row</span><span class="sy0">=</span><span class="st0">&quot;1&quot;</span> <span class="sy0">/&gt;</span>
&nbsp; &nbsp; <span class="sy0">&lt;</span>Label Name<span class="sy0">=</span><span class="st0">&quot;TitleLabel&quot;</span> Content<span class="sy0">=</span><span class="st0">&quot;Employee Self-Service&quot;</span> Style<span class="sy0">=</span><span class="st0">&quot;{DynamicResource styleGroupBoxHeaderMashup}&quot;</span> Margin<span class="sy0">=</span><span class="st0">&quot;5&quot;</span> <span class="sy0">/&gt;</span>
<span class="sy0">&lt;/</span>Grid<span class="sy0">&gt;</span></pre></td></tr></tbody></table></div>
<div class="bwp-syntax-source"><pre class="no-parse">&lt;!--
Employee Self-Service example mashup developed by Josh Geving
--&gt;
&lt;Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ui="clr-namespace:Mango.UI.Controls;assembly=Mango.UI" xmlns:mashup="clr-namespace:Mango.UI.Services.Mashup;assembly=Mango.UI"&gt;
	&lt;Grid.Resources&gt;
	&lt;/Grid.Resources&gt;

	&lt;Grid.ColumnDefinitions&gt;
		&lt;ColumnDefinition Width="200" /&gt;
		&lt;ColumnDefinition Width="Auto" /&gt;
		&lt;ColumnDefinition Width="1*" /&gt;
	&lt;/Grid.ColumnDefinitions&gt;
	&lt;Grid.RowDefinitions&gt;
		&lt;RowDefinition Height="40" /&gt;
		&lt;RowDefinition Height="1*" /&gt;
	&lt;/Grid.RowDefinitions&gt;

&lt;!-- An example of an optional menu bar, could be removed if no menu bar will be used --&gt;
	&lt;!--
	&lt;StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Stretch" Height="40" 
					 Style="{DynamicResource styleBackgroundApplicationBarMashup}"&gt;
		&lt;Menu&gt;
			&lt;MenuItem Header="_File"&gt;
				&lt;MenuItem Header="_New" /&gt;
				&lt;Separator /&gt;
				&lt;MenuItem Header="_Save" /&gt;
			&lt;/MenuItem&gt;
		&lt;/Menu&gt;
	&lt;/StackPanel&gt;
	--&gt;

	&lt;mashup:NavigationTree Name="NavTree" Grid.Column="0" Grid.Row="1"&gt;
		&lt;mashup:NavigationTree.Members&gt;
			&lt;mashup:NavigationTreeMembers&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Credentials"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Career Management" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/careermanagement/employee/mainWinCheesecake.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Competency Profile" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/credentials/ecpmain.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Contract Balances" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/contractbalances.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Professional Profile" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/credentials/pp.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Employment"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Job Postings" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/pajobreq.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Job Profile" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/jobprofile.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Jobs Applied For" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/pareqapp.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Phone Book" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/phonebook.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Policy Manual" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/policybook.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="ReviewHistory" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/reviewhist.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Work Phone" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/empphone.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Life Events"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Life Events" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/lifeevents_splash.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Adoption" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/adoption.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Birth" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/birth.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Divorce" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/divorce.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Legal Separation" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/legalsep.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Marriage" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/marriage.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Move" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/homeaddress.htm?from=lifeevents" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Spouse Employment" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/spouseemployment.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Pay"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Direct Deposit" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/directdeposit/ddmain.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Org Chart" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/orgchart.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Pay Checks" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paychecks.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Pay Rate History" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/payratehistory.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Payment Modeling" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paymentmodeling.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Tax Withholding" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/w4/taxwithholding.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Year To Date" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/yeartodate.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Personal Info"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Certifications" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=crt" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Competencies" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=cmp" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Dependents" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/dependentsmain.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Education" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/qualifications.htm?type=edu" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Emergency" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/emergencycontacts.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Ethnicity" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/ethnicity.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Leave Balances" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/leavebalancebegin.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Marital Status" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/maritalstatus.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Military Status" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/military.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Nickname" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/nickname.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Personal Profile" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/emppersonal.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Veteran Status" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/veteran.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Time Entry"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Daily" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/timeentry.htm?type=daily" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Exception Entry" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/exception/exception.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Period Entry" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/timeentry.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Print Time Entry" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/timeentry/employee/printtime.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Training"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Reg by Category" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycategory.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Reg by Course" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbycourse.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Reg by Tracks" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/registrationbytrack.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Required Training" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/patrnreq.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Scheduled Training" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/paregister.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Training History" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/patrnhist.htm" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

				&lt;mashup:NavigationTreeMember Level="0" Label="Retirement"&gt;
					&lt;mashup:NavigationTreeMember.Members&gt;
						&lt;mashup:NavigationTreeMembers&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Stock Options" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/stockoptions/employee/shr064.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Savings Modeling" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/401k/401k.htm" /&gt;
							&lt;mashup:NavigationTreeMember Level="1" Label="Goal View" Uri="&amp;lt;&amp;lt;HttpServer&amp;gt;&amp;gt;/lawson/xhrnet/goalmanagementemployee.html" /&gt;
						&lt;/mashup:NavigationTreeMembers&gt;
					&lt;/mashup:NavigationTreeMember.Members&gt;
				&lt;/mashup:NavigationTreeMember&gt;

			&lt;/mashup:NavigationTreeMembers&gt;
		&lt;/mashup:NavigationTree.Members&gt;
	&lt;/mashup:NavigationTree&gt;

	&lt;mashup:NetBrowser Name="NetBrowser" Grid.Column="2" StartUri="http://go2.infor.com/brand/images/logo_animation.gif" Margin="5" Grid.Row="1"&gt;
		&lt;mashup:NetBrowser.Events&gt;
			&lt;mashup:Events&gt;
				&lt;mashup:Event SourceName="NavTree" TargetName="NetBrowser" SourceEventName="CurrentItemChanged" TargetEventName="Navigate" Activate="NetBrowser"&gt;
					&lt;mashup:Parameter SourceKey="Uri" TargetKey="Uri" /&gt;
				&lt;/mashup:Event&gt;
			&lt;/mashup:Events&gt;
		&lt;/mashup:NetBrowser.Events&gt;
	&lt;/mashup:NetBrowser&gt;
	&lt;GridSplitter Name="Splitter" Style="{DynamicResource styleGridSplitterVerticalMashup}" Grid.Column="1" Grid.Row="1" /&gt;
	&lt;Label Name="TitleLabel" Content="Employee Self-Service" Style="{DynamicResource styleGroupBoxHeaderMashup}" Margin="5" /&gt;
&lt;/Grid&gt;</pre></div></div>

<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/employee-self-service-mashup-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mashups Inside Form Tabs, and the Ability to Pass Data to Them</title>
		<link>http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/</link>
		<comments>http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 15:09:22 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Smart Office]]></category>
		<category><![CDATA[Smart Office Mashups]]></category>

		<guid isPermaLink="false">http://www.joshgeving.com/?p=133</guid>
		<description><![CDATA[Beginning in Smart Office version 10.0.4.1 you have the ability to place Mashups inside form tabs (Browser Tabs). Of course, to make them contextual you also have the ability to pass data from the form to the mashup. This capability opens up a whole world of exciting possibilities. Think about it. Mashups allow you to...]]></description>
				<content:encoded><![CDATA[<p>Beginning in Smart Office version 10.0.4.1 you have the ability to place Mashups inside form tabs (Browser Tabs). Of course, to make them contextual you also have the ability to pass data from the form to the mashup. This capability opens up a whole world of exciting possibilities. Think about it. Mashups allow you to bring together various parts of the ecosystem and bring them together to form a new application for the user. With this feature, you are bringing the Mashup to the form, where the user is already working, rather than bringing the form to the Mashup. In the end it is another tool you can use to help the user do their job more efficiently.</p>
<p>The following are the basic details to embed a Mashup inside a form tab and pass data from the form to the Mashup. Specific details may be refined in future versions of Smart Office, but the functionality is here to stay.</p>
<p>In this simple example we are going to create a List View for AP10.2 and embed it inside a tab on AP10.1. The List View has two keys we are intersted in <strong>VENDOR-GROUP</strong> and <strong>VENDOR</strong>. We will use these to filter the List View based on the form data. We call the List Panel &#8220;<strong>Locations</strong>&#8221; which we will reference later on when we add the Brower Tab to the form. The last step in the Designer is to create one empty event for the List Panel against the Global &gt; Startup which looks like this:</p>
<p><a href="http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/attachment/mashup_in_form_event/" rel="attachment wp-att-134"><img class="aligncenter size-full wp-image-134" title="Mashup_In_Form_Event" src="http://www.joshgeving.com/wp-content/uploads/Mashup_In_Form_Event.jpg" alt="" width="543" height="409" /></a></p>
<p><em>Future versions of LSO should no longer require this</em></p>
<p>Next we create the Browser tab on AP10, we are calling this Locations.  The url we are going to enter is as follows:</p>
<pre>mashup:///?BaseUri=Tab.mashup&amp;RelativeUri=tab.xaml&amp;Locations=VENDOR-GROUP:&lt;VEN-VENDOR-GROUP&gt;;VENDOR:&lt;VEN-VENDOR&gt;</pre>
<p>I always let the system create the initial shortcut for me by dragging the Mashup from the Navigation Panel out to the Canvas, then check the Settings. The system will give you something like this:</p>
<pre>mashup:///?BaseUri=Tab.mashup&amp;RelativeUri=tab.xaml</pre>
<p>We are adding the following to pass the values:</p>
<pre>&amp;Locations=VENDOR-GROUP:&lt;VEN-VENDOR-GROUP&gt;;VENDOR:&lt;VEN-VENDOR&gt;</pre>
<p>Locations is the name of the List View control in the Mashup. The remaining are sets of name/value pairs telling it what to pass over to the Mashup.</p>
<p><a href="http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/attachment/mashup_in_form_browsertab/" rel="attachment wp-att-135"><img class="aligncenter size-full wp-image-135" title="Mashup_In_Form_BrowserTab" src="http://www.joshgeving.com/wp-content/uploads/Mashup_In_Form_BrowserTab.jpg" alt="" width="773" height="461" /></a></p>
<p>In the end you should have something that looks like this:</p>
<p><a href="http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/attachment/mashup_in_form_full/" rel="attachment wp-att-136"><img class="aligncenter size-full wp-image-136" title="Mashup_In_Form_Full" src="http://www.joshgeving.com/wp-content/uploads/Mashup_In_Form_Full.jpg" alt="" width="835" height="729" /></a></p>
<p>As the user proceeds through the records the values from the form are passed into the Mashup and the List View is filtered accordingly.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshgeving.com/smartoffice/mashups-inside-form-tabs-and-the-ability-to-pass-data-to-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
