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

<channel>
	<title>Blogging about Software Development &#187; Apex</title>
	<atom:link href="http://www.bloggingaboutjava.org/category/oracle/apex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bloggingaboutjava.org</link>
	<description>Blogging about Software Development</description>
	<pubDate>Wed, 03 Dec 2008 15:09:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>APEX application for maintaining personal contracts</title>
		<link>http://www.bloggingaboutjava.org/2008/09/apex-application-for-maintaining-personal-contracts/</link>
		<comments>http://www.bloggingaboutjava.org/2008/09/apex-application-for-maintaining-personal-contracts/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 12:35:34 +0000</pubDate>
		<dc:creator>Jasper</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Databases]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=369</guid>
		<description><![CDATA[APEX is famous for it&#8217;s useful applications, so when the idea poped into my head that I would like to track my personal contracts, APEX was first in line to develop such an application.
The purpose of this app is to be able to track longrunning contracts with their renewalperiods. One month before you should end [...]]]></description>
			<content:encoded><![CDATA[<p>APEX is famous for it&#8217;s useful applications, so when the idea poped into my head that I would like to track my personal contracts, APEX was first in line to develop such an application.</p>
<p>The purpose of this app is to be able to track longrunning contracts with their renewalperiods. One month before you should end the contract (checked on contract enddate) you&#8217;ll receive an email. I used Oracle&#8217;s DBMS_SCHEDUAL to call the procedure that sends out the email. Also, it has an authentication scheme so that different users can use this online app. Although it&#8217;s dutch, everyone can apply <a title="Contract Notifier" href="http://apex.oracle.com/pls/otn/f?p=23729" target="_blank">now</a>.</p>
<p> <a href="http://apex.oracle.com/pls/otn/f?p=23729">http://apex.oracle.com/pls/otn/f?p=23729</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/09/apex-application-for-maintaining-personal-contracts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Logica&#8217;s presentations at UKOUG 2008</title>
		<link>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-ukoug-2008/</link>
		<comments>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-ukoug-2008/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 14:13:52 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[UKOUG]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=366</guid>
		<description><![CDATA[Logica does six presentations during the upcoming UKOUG on 1-5 December in Birmingham. For the record: The UKOUG is the largest European Oracle related conference with about 3,000 attendees.



When
What
Who


Monday, Dec 1, 11:00-12:00
Is my Disaster (re)covered?
Piet de Visser


Tuesday, Dec 2, 13:05-13:50
Streamlining the Sales Cycle - Integrating Salesforce.com CRM with Oracle Quoting
Paul Colton


Thursday, Dec 4, 10:45-11:30
Being Steven [...]]]></description>
			<content:encoded><![CDATA[<p>Logica does six presentations during the upcoming UKOUG on 1-5 December in Birmingham. For the record: The UKOUG is the largest European Oracle related conference with about 3,000 attendees.</p>
<table border="0" cellspacing="10">
<tbody>
<tr>
<td><strong>When</strong></td>
<td><strong>What</strong></td>
<td><strong>Who</strong></td>
</tr>
<tr>
<td>Monday, Dec 1, 11:00-12:00</td>
<td>Is my Disaster (re)covered?</td>
<td>Piet de Visser</td>
</tr>
<tr>
<td>Tuesday, Dec 2, 13:05-13:50</td>
<td>Streamlining the Sales Cycle - Integrating Salesforce.com CRM with Oracle Quoting</td>
<td>Paul Colton</td>
</tr>
<tr>
<td>Thursday, Dec 4, 10:45-11:30</td>
<td>Being Steven Feuerstein</td>
<td>Andrew Clarke</td>
</tr>
<tr>
<td>Thursday, Dec 4, 11:55-12:40</td>
<td>Designing PL/SQL applications</td>
<td>Andrew Clarke</td>
</tr>
<tr>
<td>Thursday, Dec 4, 11:55-12:40</td>
<td>Capturing Internal Demand – which Tool to use?</td>
<td>Mike Turner</td>
</tr>
<tr>
<td>Thursday, Dec 4, 15:05-15:50</td>
<td>Developing a Real-World Logistic Application with Oracle Application Express (S301752)</td>
<td>Roel Hartman</td>
</tr>
</tbody>
</table>
<p>Click <a title="UKOUG 2008 agenda" href="http://conference.ukoug.org/default.asp?p=847" target="_blank">here</a> to see the full UKOUG agenda online.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-ukoug-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Logica&#8217;s presentations at Oracle Open World 2008</title>
		<link>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-oracle-open-world-2008/</link>
		<comments>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-oracle-open-world-2008/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 13:51:28 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[Oracle Fusion Middleware]]></category>

		<category><![CDATA[OOW]]></category>

		<category><![CDATA[Open World]]></category>

		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=365</guid>
		<description><![CDATA[Logica does two presentations during the upcoming Oracle Open World 2008 on 21-25 September in San Francisco.



When
Where
What
Who


Monday, Sep 22, 13:00-14:00
Moscone South, Rm 309
Developing a Real-World Logistic Application with Oracle Application Express (S301752)
Roel Hartman


Wednesday, Sep 24. 09:00-10:00
Marriott, Nob Hill CD
Practical Approach to SOA Adoption in Business Environments (S300535)
Edwin van Dis



Both presentations aren&#8217;t fully booked yet, so [...]]]></description>
			<content:encoded><![CDATA[<p>Logica does two presentations during the upcoming Oracle Open World 2008 on 21-25 September in San Francisco.</p>
<table border="0" cellspacing="10">
<tbody>
<tr>
<td><strong>When</strong></td>
<td><strong>Where</strong></td>
<td><strong>What</strong></td>
<td><strong>Who</strong></td>
</tr>
<tr>
<td>Monday, Sep 22, 13:00-14:00</td>
<td>Moscone South, Rm 309</td>
<td>Developing a Real-World Logistic Application with Oracle Application Express (S301752)</td>
<td>Roel Hartman</td>
</tr>
<tr>
<td>Wednesday, Sep 24. 09:00-10:00</td>
<td>Marriott, Nob Hill CD</td>
<td>Practical Approach to SOA Adoption in Business Environments (S300535)</td>
<td>Edwin van Dis</td>
</tr>
</tbody>
</table>
<p>Both presentations aren&#8217;t fully booked yet, so if you have the time and happen to be around&#8230;you can add these to your OOW-schedule!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/09/logicas-presentations-at-oracle-open-world-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Drag &#38; Drop with APEX</title>
		<link>http://www.bloggingaboutjava.org/2008/07/drag-drop-with-apex/</link>
		<comments>http://www.bloggingaboutjava.org/2008/07/drag-drop-with-apex/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 13:15:38 +0000</pubDate>
		<dc:creator>Rutger de Ruiter</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=356</guid>
		<description><![CDATA[Creating out of the box functionality for web apps with APEX is as fun as it is challenging. Some time ago Roel Hartman and me started working on a transport and logistics application in APEX. (Roel allready blogged about it once here)
One specific part of this application was a planboard which used dragging and dropping [...]]]></description>
			<content:encoded><![CDATA[<p>Creating out of the box functionality for web apps with APEX is as fun as it is challenging. Some time ago Roel Hartman and me started working on a transport and logistics application in APEX. (Roel allready blogged about it once <a href="http://roelhartman.blogspot.com/2008/06/drag-drop-feature-in-apex.html" target="_blank">here</a>)<br />
One specific part of this application was a planboard which used dragging and dropping with orders in sort of a truck calendar. It was build in Java and had all the swingy features you&#8217;d expect.<br />
The client wanted to know if this was possible with APEX. Well, sure it is. We&#8217;ll just use the full pallete available for us with the web browser!<a href="http://apex.oracle.com/pls/otn/f?p=52879:PLANBOARD" target="_blank"> CLICK HERE TO SEE IT.</a><br />
Obviously their are many paths to take when considering the design for this sort of functionality, especially when you have APEX at your disposal to create it.</p>
<p>Should we use the available calendar?<br />
Could we use a tabular form?<br />
Do we use standard APEX DML report/forms?</p>
<p>Well, this is what we did <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><!--[if gte mso 9]&amp;gt;  Normal 0     false false false  EN-US X-NONE X-NONE              MicrosoftInternetExplorer4              &amp;lt;![endif]--><!--[if gte mso 9]&amp;gt;                                                                                                                                            &amp;lt;![endif]--> <span style="bold;"><strong>The design</strong><br />
</span><br />
<a href="http://bp0.blogger.com/_Yj6UYlI3btk/SHIDIFPwHtI/AAAAAAAAADY/zmpjK3fdkYE/s1600-h/flow.JPG"><img style="pointer;" src="http://bp0.blogger.com/_Yj6UYlI3btk/SHIDIFPwHtI/AAAAAAAAADY/zmpjK3fdkYE/s400/flow.JPG" border="0" alt="" /></a></p>
<p><span></span><span id="more-356"></span><br />
<span style="bold;">1.</span> Collect the data for the planboard view, it will show the truck number (equipment number) and the orders in the days of the week:</p>
<p class="MsoListParagraph" style="italic;" align="left"><em>Datamodel</em></p>
<p class="MsoListParagraph" style="-18pt;" align="left"><a href="http://bp3.blogger.com/_Yj6UYlI3btk/SHIEMazqyoI/AAAAAAAAADg/tHXn9UYbqvY/s1600-h/data.JPG"><img style="pointer;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SHIEMazqyoI/AAAAAAAAADg/tHXn9UYbqvY/s400/data.JPG" border="0" alt="" /></a></p>
<p class="MsoListParagraph" style="-18pt;" align="left"><em><span style="italic;">Viewquery</span></em></p>
<pre><span style="x-small;">SELECT trucks.truck_id
,      to_char(to_date(load_date), 'YYYYIW') load_week
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'maandag'  , order_id, null )) mon
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'dinsdag'  , order_id, null )) tue
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'woensdag' , order_id, null )) wed
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'donderdag', order_id, null )) thu
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'vrijdag'  , order_id, null )) fri
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'zaterdag' , order_id, null )) sat
,      max(decode( rtrim(to_char(load_date,'day', 'nls_date_language = DUTCH')), 'zondag'   , order_id, null )) sun
FROM   trucks,</span>
<span style="x-small;">     orders
WHERE  orders.truck_id (+) = trucks.truck_id</span>
<span style="x-small;">GROUP BY trucks.truck_id,
to_char(to_date(load_date), 'YYYYIW')</span>
<span style="x-small;">ORDER BY trucks.truck_id</span></pre>
<p><img src="/DOCUME%7E1/ruiterr/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /><span style="bold;">2.</span> The report region has the planboard view as source. For every column box (value or not) <span> </span>a unique id is created . These id’s make sure that a column box is a container where you can drop items in. The column boxes with a value, should show the item with its value.</p>
<p><span style="italic;">Report buildup</span></p>
<pre><a href="http://bp2.blogger.com/_Yj6UYlI3btk/SHIFK93v6fI/AAAAAAAAADw/ahD3YaEdG24/s1600-h/normal.JPG"><img style="pointer;" src="http://bp2.blogger.com/_Yj6UYlI3btk/SHIFK93v6fI/AAAAAAAAADw/ahD3YaEdG24/s320/normal.JPG" border="0" alt="" /></a>
<a href="http://bp1.blogger.com/_Yj6UYlI3btk/SHIFLKFZDII/AAAAAAAAAD4/W-8NeH9xzyo/s1600-h/cont.JPG"><img style="pointer;" src="http://bp1.blogger.com/_Yj6UYlI3btk/SHIFLKFZDII/AAAAAAAAAD4/W-8NeH9xzyo/s320/cont.JPG" border="0" alt="" /></a></pre>
<pre><a href="http://bp3.blogger.com/_Yj6UYlI3btk/SHIFK6o0bEI/AAAAAAAAADo/lip1GIvxI08/s1600-h/item.JPG"><img style="pointer;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SHIFK6o0bEI/AAAAAAAAADo/lip1GIvxI08/s320/item.JPG" border="0" alt="" /></a></pre>
<p><span style="italic;">The column formatting for every day column<br />
</span></p>
<pre><a href="http://bp3.blogger.com/_Yj6UYlI3btk/SHIGlQVCMeI/AAAAAAAAAEA/IJsfMA3nB00/s1600-h/code.jpg"><img style="pointer;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SHIGlQVCMeI/AAAAAAAAAEA/IJsfMA3nB00/s320/code.jpg" border="0" alt="" /></a></pre>
<p><span style="bold;">3.</span> The report region must also call a javascript function CreateDragContainer, for every container in the region. While doing this, all items inside a container (or just the values selected with the view) become draggable. With the unique id’s, movement can be tracked, and when an order item is dropped in a container, the rest of the handling can start. This is all done by Javascript, where credit must go out for a part of the dragging &amp; dropping to Mark Kahn at <a href="http://www.webreference.com/">webreference</a>.<br />
The most important part is that the id&#8217;s are filtered, and passed to application items, and that an AJAX call is made to an application process. Here&#8217;s the AJAX call code:<br />
<span style="xx-small;"><br />
<span style="courier new;">var ajaxRequest = new htmldb_Get(null,&amp;APP_ID.,&#8217;APPLICATION_PROCESS=updatePlanbord&#8217;,null);</span><br />
<span style="courier new;">if (curTarget.id.substr(0,3) == &#8216;new&#8217;){</span><br />
<span style="courier new;"> ajaxRequest.add(&#8217;P_TARGET&#8217;, curTarget.id.substring(13, curTarget.id.length));</span><br />
<span style="courier new;"> ajaxRequest.add(&#8217;P_ADDACTION&#8217;, &#8216;true&#8217;);</span><br />
<span style="courier new;"> var cDay = curTarget.id.substring(9,12);</span><br />
<span style="courier new;">}else{</span><br />
<span style="courier new;"> ajaxRequest.add(&#8217;P_TARGET&#8217;, curTarget.id.substring(9, curTarget.id.length));</span><br />
<span style="courier new;"> ajaxRequest.add(&#8217;P_ADDACTION&#8217;, &#8216;false&#8217;);</span></span></p>
<p><span style="courier new;"> var cDay = curTarget.id.substring(5,8);</span><br />
<span style="courier new;">}</span><br />
<span style="courier new;"> var cDayDate</span><br />
<span style="courier new;"> if (cDay == &#8216;mon&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_MON_DAT&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8216;tue&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_TUE_DATE&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8216;wed&#8217;){</span></p>
<p><span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_WED_DATE&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8216;thu&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_THU_DATE&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8216;fri&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_FRI_DATE&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8217;sat&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_SAT_DATE&#8217;).value;</span><br />
<span style="courier new;"> }else if (cDay == &#8217;sun&#8217;){</span><br />
<span style="courier new;"> cDayDate = html_GetElement(&#8217;P1_SUN_DATE&#8217;).value;</span><br />
<span style="courier new;"> }</span></p>
<p><span style="courier new;">ajaxRequest.add(&#8217;P_PARENT&#8217;, rootContainer.id.substring(9, rootContainer.id.length));</span><br />
<span style="courier new;">ajaxRequest.add(&#8217;P_LOADDATE&#8217;, cDayDate);</span></p>
<p><span style="courier new;">ajaxRequest.GetAsync(f_AsyncReturn);</span></p>
<p><span style="bold;">4. </span>The application process can do two things, UPDATE an existing order when it is dropped in another truck, or UPDATE an existing order when it had no truck (open action) and was dropped in another truck. Here&#8217;s the code:</p>
<p><span style="xx-small;">DECLARE<br />
type_action varchar2(10);</span></p>
<p>BEGIN<br />
<span style="xx-small;">type_action </span><span style="xx-small;">:= &#8221;||:P_ADDACTION||&#8221;;</span></p>
<p>IF <span style="xx-small;">type_action</span><span style="xx-small;">= &#8216;false&#8217; THEN</span></p>
<p>UPDATE orders SET truck_id = :P_PARENT WHERE order_id = :P_TARGET AND to_date(load_date, &#8216;dd-mm-yyyy&#8217;) = to_date(&#8221;||:P_LOADDATE||&#8221;, &#8216;dd-mm-yyyy&#8217;);</p>
<p>ELSIF <span style="xx-small;">type_action </span><span style="xx-small;">= &#8216;true&#8217; THEN</span></p>
<p>UPDATE orders SET truck_id = :P_PARENT WHERE order_id = :P_TARGET;</p>
<p>INSERT INTO orders (ORDER_ID, DESTINATION, LOAD_DATE, TRUCK_ID) VALUES (ODERS_SEQ.nextval, NULL, to_date(&#8221;||:P_LOADDATE||&#8221;, &#8216;dd-mm-yyyy&#8217;), NULL);</p>
<p>END IF;<br />
COMMIT;<br />
EXCEPTION WHEN OTHERS THEN<br />
htp.p(SQLERRM);<br />
END;</p>
<p>After some CSS tricks and custom theming, you get the result you see in the browser. Needless to say, the client was quite impressed with the result, and I think it is another example of the flexibility APEX has to offer being in a web browser!</p>
<p>If you&#8217;d like to know more on this application and you&#8217;re at the Oracle Open World this year, vote for this presentation on Oracle Mix by clicking <a href="https://mix.oracle.com/ideas/30082-re-developing-a-logistic-application-in-apex-in-the-real-world">HERE</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/07/drag-drop-with-apex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reusable Module Components in APEX</title>
		<link>http://www.bloggingaboutjava.org/2008/07/reusable-module-components-in-apex/</link>
		<comments>http://www.bloggingaboutjava.org/2008/07/reusable-module-components-in-apex/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 08:12:02 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=355</guid>
		<description><![CDATA[When building a serious application you often need to repeat certain regions in a couple of pages, for instance customer or order information. In APEX you can ofcourse copy a region to another page, but that enhances your maintenance effort when changes are needed on this copied region. Another solution is to group all the [...]]]></description>
			<content:encoded><![CDATA[<p>When building a serious application you often need to repeat certain regions in a couple of pages, for instance customer or order information. In APEX you can ofcourse copy a region to another page, but that enhances your maintenance effort when changes are needed on this copied region. Another solution is to group all the pages that share this region in one application and define the region on the famous Page 0. But maybe there is a more elegant way to solve this&#8230;.</p>
<p><span id="more-355"></span></p>
<p>As an example I use the &#8216;My Favorite Tasks&#8217; region I described in the previous post. First we set the page alias to &#8216;MYFAV&#8217;, to circumvent a static reference to a page number. In the region header of &#8216;My Favorite Tasks&#8217; we set a HTML tag &#8216;&lt;snap&gt;&#8217; and &#8216;&lt;/snap&gt;&#8217; in the footer  (this &lt;snap&gt; is just an example, it can be anything, as long as it isn&#8217;t a regular HTML tag). Now define a new HTML region on the page where you need to &#8216;reference&#8217; this &#8216;My Favorite Tasks&#8217; region and set the region source to &lt;div id=&#8217;Favorites&#8217;&gt;&lt;/div&gt;. Now we created a placeholder for future use&#8230;</p>
<p>Now let&#8217;s fill this placeholder with the contents of the &#8216;My Favorite Tasks&#8217; region.<br />
Set the Page HMTL Body Attribute to : onload=&#8221;ShowFavs();&#8221;. This will fire a javascript function when the page is loaded. You probably have to set the value of &#8216;Cursor Focus&#8217; to &#8216;Do not focus cursor&#8217; otherwise you&#8217;ll get a &#8216;You may not declaratively set cursor focus&#8217; error. Next define the javascript function in the HTML Header section.</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
function ShowFavs(){<br />
var get = new htmldb_Get(null,$v('pFlowId'),null,'MYFAV');<br />
gReturn = get.get(null,'&lt;snap&gt;','&lt;/snap&gt;');<br />
get = null;<br />
$s('Favorites',gReturn);<br />
return;<br />
}<br />
&lt;/script&gt;</code></p>
<p>This function will request the &#8216;MYFAV&#8217; page.  Then the page is &#8217;stripped&#8217; so only the HTML between the   tags is returned. And this HTML is rendered in the placeholder&#8230;</p>
<p>So with this simple and elegant solution you can define &#8216;region building blocks&#8217; (even more meaningful than &#8216;My Favorite Tasks&#8217;) and assemble pages using this building blocks! So re usability increases and your maintenance effort decreases.</p>
<p>In a next post I will show how you even can put regions anywhere on a page without defining a placeholder at all&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/07/reusable-module-components-in-apex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dynamic &#8216;My Favorites&#8217; Links in your APEX Application</title>
		<link>http://www.bloggingaboutjava.org/2008/07/dynamic-my-favorites-links-in-your-apex-application/</link>
		<comments>http://www.bloggingaboutjava.org/2008/07/dynamic-my-favorites-links-in-your-apex-application/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 14:18:42 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=352</guid>
		<description><![CDATA[For a (even more) Web 2.0 like look-and-feel in your APEX application you can define a dynamic region &#8216;My Favorite Tasks&#8217;, that shows links to the pages you visit most frequently.
For these favorites we can query the APEX repository. Follow these steps to get this thing working:


Enable logging on Application Level. Enabling the logging will [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/07/screenshot033.jpg" alt="" width="145" height="98" align="left" />For a (even more) Web 2.0 like look-and-feel in your APEX application you can define a dynamic region &#8216;My Favorite Tasks&#8217;, that shows links to the pages you visit most frequently.<br />
For these favorites we can query the APEX repository. Follow these steps to get this thing working:<br />
<span id="more-352"></span></p>
<ol>
<li>Enable logging on Application Level. Enabling the logging will result in records in the view apex_workspace_activity_log.</li>
<li>Create a Report Page with a region based on a SQL Query.</li>
<li>Enter the query to show the links for the three most visited pages:</li>
</ol>
<blockquote><p><span style="courier new;">select htf.anchor( &#8216;f?p=&#8217;||:APP_ID||&#8217;:'||page_id||&#8217;:'||:APP_SESSION</span><br />
<span style="courier new;"> , page_name ) Task<br />
from</span><br />
<span style="courier new;">(</span><br />
<span style="courier new;">select page_name</span><br />
<span style="courier new;">, page_id</span><br />
<span style="courier new;">,      count(*)</span><br />
<span style="courier new;">from apex_workspace_activity_log</span><br />
<span style="courier new;">where application_id = :APP_ID</span><br />
<span style="courier new;">and apex_user    = :APP_USER</span><br />
<span style="courier new;">and page_id  &lt;&gt; :APP_PAGE_ID</span><br />
<span style="courier new;">group by page_name, page_id</span><br />
<span style="courier new;">order by 3 desc</span><br />
<span style="courier new;">)</span><br />
<span style="courier new;">where rownum &lt;= 3 </span></p></blockquote>
<p>In a next post I will show how you can embed this report page in any other page in your application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/07/dynamic-my-favorites-links-in-your-apex-application/feed/</wfw:commentRss>
		</item>
		<item>
		<title>APEX 3.1.1 &#8220;broke my application&#8221; : This is the fix.</title>
		<link>http://www.bloggingaboutjava.org/2008/06/apex-311-broke-my-application-this-is-the-fix/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/apex-311-broke-my-application-this-is-the-fix/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 09:57:42 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=346</guid>
		<description><![CDATA[In APEX 3.1.1 all compound item types - items that contain HTML layout and multiple inputs - have been surrounded by a fieldset. The result is that some items that previously nicely aligned horizontally now wrap to the next line.

It mainly effects items with a Post Element Text or where a ColSpan &#62; 1 is [...]]]></description>
			<content:encoded><![CDATA[<p>In APEX 3.1.1 all compound item types - items that contain HTML layout and multiple inputs - have been surrounded by a fieldset. The result is that some items that previously nicely aligned horizontally now wrap to the next line.</p>
<p><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/screenshot030.jpg" alt="" width="400" height="150" /><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/screenshot029.jpg" alt="" /><br />
It mainly effects items with a Post Element Text or where a ColSpan &gt; 1 is defined.</p>
<p><span id="more-346"></span></p>
<p>This unwanted effect is easily repaired by creating a new CSS file containing:</p>
<p><code>fieldset{display:inline;vertical-align:middle;}</code></p>
<p>and referencing this CSS file in your template. The result then looks like it was before:</p>
<p><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/screenshot032.jpg" alt="" /><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/screenshot031.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/apex-311-broke-my-application-this-is-the-fix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>APEX workshop @ Logica Arnhem</title>
		<link>http://www.bloggingaboutjava.org/2008/06/apex-workshop-logica-arnhem/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/apex-workshop-logica-arnhem/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 09:02:52 +0000</pubDate>
		<dc:creator>Rutger de Ruiter</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=345</guid>
		<description><![CDATA[Last thursday I hosted my first APEX workshop from a teaching perspective, and I must say it&#8217;s a whole different experience then being the attendee. Luckily Roel Hartman and I had prepared the workshop properly. (we hosted the workshop together)
First off I gave a presentation about APEX. My focus was especially set on &#8220;seeing the [...]]]></description>
			<content:encoded><![CDATA[<p><img style="padding:5px;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SGSzKvqDwTI/AAAAAAAAACg/Yt0BrHp3VMI/s400/SP_A0210.jpg" alt="" height="120" align="left" />Last thursday I hosted my first APEX workshop from a teaching perspective, and I must say it&#8217;s a whole different experience then being the attendee. Luckily <a href="http://roelhartman.blogspot.com/">Roel Hartman</a> and I had prepared the workshop properly. (we hosted the workshop together)</p>
<p>First off I gave a presentation about APEX. My focus was especially set on &#8220;seeing the point&#8221; about what APEX is, does and what it&#8217;s intended to do. This combined with a healthy summary of features and architectures made the presentation quite long (about 50 min) but it was the minimal version, because I wanted to put so much fun stuff in that APEX has to offer. I just couldn&#8217;t decide what to scrap!<br />
I must say the presentation went as expected, and the reaction afterwards were very positive, so thanks for the compliments.</p>
<p><span id="more-345"></span></p>
<p><a href="http://bp3.blogger.com/_Yj6UYlI3btk/SGSzKq2Hp_I/AAAAAAAAACY/jWRGkWgW064/s1600-h/SP_A0209.jpg"><img class="alignright" style="pointer;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SGSzKq2Hp_I/AAAAAAAAACY/jWRGkWgW064/s400/SP_A0209.jpg" border="0" alt="" width="240" height="320" /></a><a href="http://bp3.blogger.com/_Yj6UYlI3btk/SGSzKvqDwTI/AAAAAAAAACg/Yt0BrHp3VMI/s1600-h/SP_A0210.jpg"><img class="alignright" style="pointer;" src="http://bp3.blogger.com/_Yj6UYlI3btk/SGSzKvqDwTI/AAAAAAAAACg/Yt0BrHp3VMI/s400/SP_A0210.jpg" border="0" alt="" /></a></p>
<p>Next up was the workshop. We created a beginners workshop, for people who had never worked with the magic of APEX before. There was little or no experience with HTML_DB or APEX in the room among the attendees, so I was a bit nervous about the complexity of the workshop.</p>
<p>Apparently I forgot how easy it was to start working with APEX, because people were flying through the workshop! Luckily, somewhere in the middle they reached some more complex material, which provided the attendees with some more challenges.<br />
The feedback we received on the workshop was again, very positive.</p>
<p>Finally after 2 hours of<em> quick&amp;clean</em> application building, Roel gave his presentation about the ODTUG&#8217;08 Kaleidoscope where he attended earlier this month. A lot of cool new features / directions came to light, creating a bit of a buzz followed by a good discussion among the attendees.</p>
<p><span style="bold;">Yes it was happening</span>, the healthy addiction with APEX found some more hosts once more!!</p>
<p>This workshop created a lot of enthousiasm among the attendees, and I think almost everyone wanted a follow up workshop with more details. This is (again) a clear case of how low the threshold is that APEX has when people are just starting to create some application with it.</p>
<p>In case you haven&#8217;t noticed yet, <span style="bold;">APEX rocks!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/apex-workshop-logica-arnhem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Drag &#38; Drop feature in APEX</title>
		<link>http://www.bloggingaboutjava.org/2008/06/drag-drop-feature-in-apex/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/drag-drop-feature-in-apex/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 13:51:06 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=344</guid>
		<description><![CDATA[In a previous post I mentioned a Drag &#38; Drop feature we created in APEX. Because there is a lot of interest for this subject, I created a small movie where I show the drag and drop function. The purpose is to load an Open Action (or Order) into a Truck for a specified day.
Click [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous post I mentioned a Drag &amp; Drop feature we created in APEX. Because there is a lot of interest for this subject, I created a small movie where I show the drag and drop function. The purpose is to load an Open Action (or Order) into a Truck for a specified day.</p>
<p><a href="http://www.youtube.com/watch?v=dwmRdd-t7VQ" target="_blank"><strong><span style="underline;">Click here to see the viewlet.</span></strong></a></p>
<p>If you like to see this feature live at OOW - and on a somewhat bigger size screen - , or other nice things we created during our project, please vote for my session on Oracle Mix : <a href="https://mix.oracle.com/ideas/30082-re-developing-a-logistic-application-in-apex-in-the-real-world">(Re)developing-a-logistic-application-in-apex-in-the-real-world.</a> You can register using your OTN account.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/drag-drop-feature-in-apex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ODTUG Kaleidoscope 2008 : Day 4 - ADF vs APEX and Wrap Up</title>
		<link>http://www.bloggingaboutjava.org/2008/06/odtug-kaleidoscope-2008-day-5-adf-vs-apex-and-wrap-up/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/odtug-kaleidoscope-2008-day-5-adf-vs-apex-and-wrap-up/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 13:25:52 +0000</pubDate>
		<dc:creator>Roel</dc:creator>
		
		<category><![CDATA[Apex]]></category>

		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=340</guid>
		<description><![CDATA[The last morning of this years ODTUG was completely filled with one three hour session: APEX versus ADF &#8217;shootout&#8217;. Although the presenters, Lucas and Dimitri, quickly stated that there was no violence to be expected, the audience was hoping for some clear statements.

Lucas and Dimitri both built an application using their favorite tool and demo&#8217;ed [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/img_0007.jpg" alt="" width="182" height="120" align="left" />The last morning of this years ODTUG was completely filled with one three hour session: APEX versus ADF &#8217;shootout&#8217;. Although the presenters, Lucas and Dimitri, quickly stated that there was no violence to be expected, the audience was hoping for some clear statements.</p>
<p><span id="more-340"></span></p>
<p>Lucas and Dimitri both built an application using their favorite tool and demo&#8217;ed it to the audience. Both failed on one part - as live demo&#8217;s tend to do - so it was 1-1 at mid time. After the break the match continued with some nice features shown on both sides. Both presenters where dared to say something positive on the other tools. For Dimitri this was the most difficult part: &#8220;I can&#8217;t come up with anything nice to say about JDeveloper&#8221;.</p>
<p>After a complete comparison, there was one clear winner: <span style="underline;">The audience</span>!</p>
<p>Thanks to both of you guys for this joint effort!</p>
<p>So to wrap up: ODTUG is a great event. Not great in the sense that you&#8217;re overwhelmed with 1,000&#8217;s of people (there were about 700 attendees), but exactly the opposite. Due to the fact that it is rather small, you&#8217;ll find yourself having a beer (or two) with all kind of guru&#8217;s, experts, co-bloggers etc. Especially that relaxed, cool atmosphere is what makes ODTUG such an excellent event.</p>
<p>One more note about &#8216;atmosphere&#8217;: New Orleans in June is so hot and humid, that you barely can stand the outside temperature for more than 10 minutes - on the opposite : inside (in particular inside the Sheraton) the air conditioning is turned to the max. So every time you get from the outside to the inside, or the other way round, you have to deal with a temperature difference that feels like a 20 C.</p>
<p>Also the Sheraton is a good place to stay and from the 43th floor I had a great view on the river. Could have been better if somebody had cleaned the window - but who cleans windows at that height?</p>
<p>I hope to see everybody again next year - in Monterey (?).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/odtug-kaleidoscope-2008-day-5-adf-vs-apex-and-wrap-up/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
