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

<channel>
	<title>Berthold Maier's Weblog</title>
	<atom:link href="http://bmaier.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bmaier.wordpress.com</link>
	<description>Softwareentwicklung</description>
	<lastBuildDate>Fri, 03 Jun 2011 18:53:17 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bmaier.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Berthold Maier's Weblog</title>
		<link>http://bmaier.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bmaier.wordpress.com/osd.xml" title="Berthold Maier&#039;s Weblog" />
	<atom:link rel='hub' href='http://bmaier.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Html5 WebSockets mit Apache Camel</title>
		<link>http://bmaier.wordpress.com/2011/06/02/html5-websocket-mit-apache-camel/</link>
		<comments>http://bmaier.wordpress.com/2011/06/02/html5-websocket-mit-apache-camel/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 21:19:39 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Html5]]></category>

		<guid isPermaLink="false">http://bmaier.wordpress.com/?p=135</guid>
		<description><![CDATA[HTML5 wird das Internet nochmals revolutionieren, da bin ich mir ganz sicher. Altgediente Web-Frameworks, die nach dem Request/Reply Muster verfahren, werden langsam durch HTML5 Rich Clients ersetzt. Diese ist vor allem den Html5-WebSockets und Mobiles geschuldet. Welches Potential hinter dieser Technik steckt verdeutlicht ein von uns (Claus, Chris, und mir) erstelltes Beispiel sehr gut: Ein Anwender gibt in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=135&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>HTML5 wird das Internet nochmals revolutionieren, da bin ich mir ganz sicher. Altgediente Web-Frameworks, die nach dem Request/Reply Muster verfahren, werden langsam durch HTML5 Rich Clients ersetzt. Diese ist vor allem den Html5-WebSockets und Mobiles geschuldet.</p>
<p>Welches Potential hinter dieser Technik steckt verdeutlicht ein von uns (Claus, Chris, und mir) erstelltes Beispiel sehr gut: Ein Anwender gibt in seinem Browser (Chrome, Firefox, Opera, Safari,&#8230; <a href="http://html5test.com/">http://html5test.com/</a>)  einen Text ein und alle parallel angemeldeten Anwender erhalten unmittelbar die Nachricht im Browser dargestellt. Dazu haben wir das <a href="http://camel.apache.org/">Apache Camel Framework </a>erweitert, um die Nachricht zusätzlich über eine Datei auf dem Server zu spoolen. Das heißt, wir können mit Camel einen einfachen Protokollwechsel implementieren und Nachrichten z.B. aus der DB, FTP, Mail, RMI, &#8230; direkt in WebSockets wandeln und an den Browser senden &#8211; natürlich auch umgekehrt.</p>
<p>Eine <a href="http://www.catify.com/2011/05/27/websockets-with-apache-camel/">detaillierte Anleitung</a> hat Claus Straube zusammengefasst, womit die Demo in 10min auf jedem Rechner lauffähig sein sollte. Sourcecode ist unter <a href="https://github.com/catify/camel-websocket">GitHub </a>verfügbar. Viel Spaß beim Testen!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=135&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2011/06/02/html5-websocket-mit-apache-camel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>JSR 94 mit Oracle Business Rules &amp; Spring Modules</title>
		<link>http://bmaier.wordpress.com/2011/01/04/jsr-96-mit-oracle-business-rules-spring-modules/</link>
		<comments>http://bmaier.wordpress.com/2011/01/04/jsr-96-mit-oracle-business-rules-spring-modules/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 00:00:09 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/2011/01/04/jsr-96-mit-oracle-business-rules-spring-modules/</guid>
		<description><![CDATA[Die Integration der Oracle Rules mit Spring Modules ist leider nicht beschrieben, jedoch durch die Implementierung des JSR 94&#160; möglich. Folgender funktionsfähiger Testcode möchte ich deshalb mit interessierten teilen (Umsetzungszeit 10 Minuten). Es muss dazu weder die SOA-Suite noch die Oracle Business Rule Engine installiert werden. Eine paar Libraries in Classpath reichen aus, um die [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=129&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Die Integration der <a href="http://www.oracle.com/technetwork/middleware/business-rules/index.html" target="_blank">Oracle Rules</a> mit <a href="https://springmodules.dev.java.net/docs/reference/0.8/html/jsr94.html#d0e5975" target="_blank">Spring Modules</a> ist leider nicht beschrieben, jedoch durch die Implementierung des <a href="http://jcp.org/aboutJava/communityprocess/review/jsr094/" target="_blank">JSR 94</a>&#160; möglich.</p>
<p>Folgender funktionsfähiger Testcode möchte ich deshalb mit interessierten teilen (Umsetzungszeit 10 Minuten). Es muss dazu weder die SOA-Suite noch die Oracle Business Rule Engine installiert werden. Eine paar Libraries in Classpath reichen aus, um die Oracle RuleEngine zu nutzen. Zudem ist die <a href="http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10227/rlprog.htm#CEGFJEDE" target="_blank">Regelsprache</a> intuitiv und kann direkt ohne Konvertierung mit Java-Objekten umgehen.</p>
<ul>
<li>Herunterladen des <a href="https://springmodules.dev.java.net" target="_blank">JSR94 Spring Module</a> </li>
<li>Die mit dem JDeveloper mitgelieferten Oracle Rules Libraries in den Classpath aufnehmen: <strong>jsr94_obr.jar, jsr94.jar, rl.jar, rl_dms.jar, rules.jar, rulesdk2.jar,&#160; xmlparserv2.jar</strong>&#160; </li>
<li>applicationContext.xml laut Muster anlegen: </li>
</ul>
<table cellspacing="0" cellpadding="2" width="999" border="0">
<tbody>
<tr>
<td valign="top" width="997">
<p><font face="Courier New">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; </font></p>
<p><font face="Courier New">&lt;beans xmlns=&quot;</font><a href="http://www.springframework.org/schema/beans&quot;"><font face="Courier New">http://www.springframework.org/schema/beans&quot;</font></a><font face="Courier New">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:xsi=&quot;</font><a href="http://www.w3.org/2001/XMLSchema-instance&quot;"><font face="Courier New">http://www.w3.org/2001/XMLSchema-instance&quot;</font></a><font face="Courier New">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:aop=&quot;</font><a href="http://www.springframework.org/schema/aop&quot;"><font face="Courier New">http://www.springframework.org/schema/aop&quot;</font></a><font face="Courier New">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:tx=&quot;</font><a href="http://www.springframework.org/schema/tx&quot;"><font face="Courier New">http://www.springframework.org/schema/tx&quot;</font></a><font face="Courier New">              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xsi:schemaLocation=&quot;               <br /></font><a href="http://www.springframework.org/schema/beans"><font face="Courier New">http://www.springframework.org/schema/beans</font></a><font face="Courier New"> </font><a href="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><font face="Courier New">http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</font></a><font face="Courier New">              <br /></font><a href="http://www.springframework.org/schema/aop"><font face="Courier New">http://www.springframework.org/schema/aop</font></a><font face="Courier New"> </font><a href="http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><font face="Courier New">http://www.springframework.org/schema/aop/spring-aop-2.5.xsd</font></a><font face="Courier New">              <br /></font><a href="http://www.springframework.org/schema/tx"><font face="Courier New">http://www.springframework.org/schema/tx</font></a><font face="Courier New"> </font><a href="http://www.springframework.org/schema/tx/spring-tx-2.5.xsd&quot;"><font face="Courier New">http://www.springframework.org/schema/tx/spring-tx-2.5.xsd&quot;</font></a><font face="Courier New">&gt; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; &lt;bean id=&quot;ruleServiceProvider&quot;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; class=&quot;org.springmodules.jsr94.factory.DefaultRuleServiceProviderFactoryBean&quot;&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;provider&quot;&gt;&lt;value&gt;</font><a href="http://www.oracle.com/"><font face="Courier New">http://www.oracle.com/</font></a><font face="Courier New">&lt;/value&gt;&lt;/property&gt;              <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;providerClass&quot;&gt;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;value&gt;<strong>oracle.rules.jsr94.RLRuleServiceProvider</strong>&lt;/value&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;/property&gt;               <br />&#160;&#160;&#160; &lt;/bean&gt; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; &lt;bean id=&quot;ruleRuntime&quot;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; class=&quot;org.springmodules.jsr94.factory.RuleRuntimeFactoryBean&quot;&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;serviceProvider&quot;&gt;&lt;ref local=&quot;ruleServiceProvider&quot;/&gt;&lt;/property&gt;               <br />&#160;&#160;&#160; &lt;/bean&gt; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; &lt;bean id=&quot;ruleAdministrator&quot;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; class=&quot;org.springmodules.jsr94.factory.RuleAdministratorFactoryBean&quot;&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;serviceProvider&quot;&gt;&lt;ref local=&quot;ruleServiceProvider&quot;/&gt;&lt;/property&gt;               <br />&#160;&#160;&#160; &lt;/bean&gt; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; &lt;bean id=&quot;ruleSource&quot; class=&quot;org.springmodules.jsr94.rulesource.DefaultRuleSource&quot;&gt;              <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;ruleRuntime&quot;&gt;&lt;ref local=&quot;ruleRuntime&quot;/&gt;&lt;/property&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;ruleAdministrator&quot;&gt;&lt;ref local=&quot;ruleAdministrator&quot;/&gt;&lt;/property&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;source&quot;&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font><font face="Courier New">&lt;value&gt;<strong>file:/D:/projekte/prototype/RulesIntegration/src/de/bmaier/rules/test/MyOracleRules.rl</strong>&lt;/value&gt;              <br />&#160;&#160;&#160;&#160;&#160; </font><font face="Courier New">&lt;/property&gt;              <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;bindUri&quot;&gt;&lt;value&gt;<strong>MyTestOracleRules</strong>&lt;/value&gt;&lt;/property&gt;               <br />&#160;&#160;&#160; &lt;/bean&gt; </font></p>
<p><font face="Courier New">&#160;&#160;&#160; &lt;bean id=&quot;<em><strong>testRule</strong></em>&quot; class=&quot;org.springmodules.jsr94.core.Jsr94Template&quot;&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;property name=&quot;ruleSource&quot;&gt;&lt;ref local=&quot;ruleSource&quot;/&gt;               <br />&#160;&#160;&#160;&#160;&#160; &lt;/property&gt;               <br />&#160;&#160;&#160; &lt;/bean&gt; </font></p>
<p><font face="Courier New">&lt;/beans&gt;</font></p>
</td>
</tr>
</tbody>
</table>
<ul>
<li>Wichtig sind die Einträge:
<ul>
<li>providerClass = <strong>oracle.rules.jsr94.RLRuleServiceProvider</strong> </li>
<li>source = Lokation der Regeldatei: (<strong>file:/D:/projekte/prototype/RulesIntegration/src/de/bmaier/rules/test/MyOracleRules.rl</strong>) </li>
<li>bindUri = Beliebiger Name, der später aus dem JavaCode bei der Regelausführung referenziert wird (hier <strong>MyTestOracleRule</strong>)&#160; </li>
</ul>
</li>
<li>Die RegelDatei im XML-Format JSR94 anlegen und darin die Oracle RL definieren (Beispiel Funktioniert mit <a href="http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10228/jsr2.htm#sthref998" target="_blank">Oracle Rules 11g</a>):<br />
<table cellspacing="0" cellpadding="2" width="1142" border="0">
<tbody>
<tr>
<td valign="top" width="1140">
<p><font face="Courier New">&lt;rule-execution-set xmlns=&quot;</font><a href="http://xmlns.oracle.com/rules/jsr94/configuration&quot;"><font face="Courier New">http://xmlns.oracle.com/rules/jsr94/configuration&quot;</font></a><font face="Courier New">                  <br />xmlns:xsi=&quot;</font><a href="http://www.w3.org/2001/XMLSchema-instance&quot;"><font face="Courier New">http://www.w3.org/2001/XMLSchema-instance&quot;</font></a><font face="Courier New"> version=&quot;1.0&quot;&gt;                  <br />&#160;&#160;&#160; &lt;name&gt;CarRentalDemo&lt;/name&gt;                   <br />&#160;&#160;&#160; &lt;description&gt;The Car Rental Demo&lt;/description&gt;                   <br />&#160;&#160;&#160; &lt;rule-source&gt;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;rl-text&gt;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ruleset DM { </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; final String DeclineMessage = &amp;quot;Rental declined &amp;quot;; </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public class Decision&#160; supports xpath {                  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public String driverName;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public String type;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public String message;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; function assertXPath(String package,                  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; java.lang.Object element, String xpath) {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //RL literal statement                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; main.assertXPath( package, element, xpath );                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; function println(String message) {                  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //RL literal statement                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; main.println(message);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; function showDecision(DM.Decision decision) {                  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //RL literal statement                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DM.println( &amp;quot;Rental decision is &amp;quot; + decision.type +                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;quot; for driver &amp;quot; + decision.driverName +                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;quot; for reason &amp;quot; + decision.message);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/rl-text&gt;                   <br />&#160;&#160;&#160; &lt;/rule-source&gt;                   <br />&#160;&#160;&#160; &lt;rule-source&gt;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;rl-text&gt;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ruleset vehicleRent {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rule UnderAge {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; priority = 0;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ((fact de.arbeitsagentur.robaso.rules.test.Driver v0_Driver &amp;amp;&amp;amp;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (v0_Driver.age &amp;lt; 19))) {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DM.println( &amp;quot;Rental declined: &amp;quot; + v0_Driver.name +                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;quot; under age, age is: &amp;quot; + v0_Driver.age);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; retract(v0_Driver);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rule DriverAge {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; priority = 0;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ((fact de.arbeitsagentur.robaso.rules.test.Driver v0_Driver &amp;amp;&amp;amp;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (v0_Driver.age &amp;gt; 18))) {                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DM.println( &amp;quot;Rental permitted for: &amp;quot; + v0_Driver.name +                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;quot;, age is: &amp;quot; + v0_Driver.age);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; retract(v0_Driver);                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/rl-text&gt;                   <br />&#160;&#160;&#160; &lt;/rule-source&gt;                   <br />&#160;&#160;&#160; &lt;ruleset-stack&gt;                   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;ruleset-name&gt;vehicleRent&lt;/ruleset-name&gt;                   <br />&#160;&#160;&#160; &lt;/ruleset-stack&gt;                   <br />&lt;/rule-execution-set&gt; </font></p>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<p>&#160;</p>
<ul>
<li>Das konfigurierte Springbean “<em>testRule</em>” laden und dann mit den individuellen “Facts” (hier Class Driver) ausführen. Achtung der Name (hier <strong>MyTestOracleRules) </strong>muss mit dem Attribut <strong>bindUri</strong> des konfigurierten SpringBean RuleSource im applicationContext.xml übereinstimmen. </li>
</ul>
<ul>
<table cellspacing="0" cellpadding="2" width="1106" border="0">
<tbody>
<tr>
<td valign="top" width="1104">
<p>&#160; <font face="Courier New">&#160; public static void main(String[] args) {</font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160; ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(&quot;/applicationContext.xml&quot;);                <br />&#160;&#160;&#160;&#160;&#160; Jsr94Template rule = (Jsr94Template)ctx.getBean(&quot;<strong>testRule</strong>&quot;);                 <br /></font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160; rule.executeStateless(&quot;<strong>MyTestOracleRules</strong>&quot;, Collections.emptyMap(), new StatelessRuleSessionCallback() {                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public Object execute(StatelessRuleSession session) throws InvalidRuleSessionException, RemoteException {                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List result;                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List input = new ArrayList();                 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Driver d = new Driver();                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d.setAge(25);                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d.setName(&quot;Dave&quot;);                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; input.add(d);                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d = new Driver();                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d.setAge(8);                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d.setName(&quot;John&quot;);                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; input.add(d); </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; result = session.executeRules(input);                <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return result;                 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </font></p>
<p><font face="Courier New">&#160;&#160;&#160;&#160;&#160;&#160;&#160; });                <br />&#160;&#160;&#160; }</font></p>
</td>
</tr>
<tr>
<td valign="top" width="1104">… dann noch die Java Klasse Driver, die im Beispiel verwendet wurde:           </p>
<p>package de.bamier.rules.test; </p>
<p>public class Driver {             <br />&#160;&#160;&#160; int age = 18;              <br />&#160;&#160;&#160; String name = &quot;Luis&quot;;              <br />&#160;&#160;&#160; public Driver() {              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; super();              <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; public void setAge(int age) {             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.age = age;              <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; public int getAge() {             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return age;              <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; public void setName(String name) {             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.name = name;              <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; public String getName() {             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return name;              <br />&#160;&#160;&#160; }              <br />}</p>
</td>
</tr>
</tbody>
</table>
</ul>
<p>&#160;</p>
<p>Und es funktioniert !!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=129&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2011/01/04/jsr-96-mit-oracle-business-rules-spring-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>ADFFaces Features im &#220;berblick</title>
		<link>http://bmaier.wordpress.com/2010/10/09/adffaces-features-im-berblick/</link>
		<comments>http://bmaier.wordpress.com/2010/10/09/adffaces-features-im-berblick/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 18:56:28 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[ADF]]></category>
		<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/?p=121</guid>
		<description><![CDATA[ADFFaces ist ein auf dem JEE Standard aufbauende JavaServer Faces (JSF) Komponentenbibliothek. Der Basissatz der ADFFaces UI-Elemente wurde u.a. als OpenSource der Apache Foundation übergeben und ist unter dem Name Trinidad im MyFaces Projekt verfügbar. Einstellungen und Konfigurationsfiles, die für MyFaces Trinidad gelten, sind somit auch für ADFFaces gültig. ADFFaces liefert zu den JSF-Standardkomponenten und [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=121&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oracle.com/technetwork/developer-tools/adf/index.html" target="_blank">ADFFaces</a> ist ein auf dem JEE Standard aufbauende JavaServer Faces (JSF) Komponentenbibliothek. Der Basissatz der ADFFaces UI-Elemente wurde u.a. als OpenSource der Apache Foundation übergeben und ist unter dem Name <a href="http://myfaces.apache.org/trinidad/index.html" target="_blank">Trinidad</a> im <a href="http://myfaces.apache.org/" target="_blank">MyFaces</a> Projekt verfügbar. Einstellungen und Konfigurationsfiles, die für <a href="http://myfaces.apache.org/" target="_blank">MyFaces</a> <a href="http://myfaces.apache.org/trinidad/index.html" target="_blank">Trinidad</a> gelten, sind somit auch für ADFFaces gültig.</p>
<p><a href="http://www.oracle.com/technetwork/developer-tools/adf/learnmore/index-101235.html" target="_blank">ADFFaces</a> liefert zu den JSF-Standardkomponenten und <a href="http://matthiaswessendorf.wordpress.com/2010/09/15/adf-faces-and-trinidad-renderkits/" target="_blank">Trindidad</a>-Basisklassen erweiterte Eigenschaften in folgenden Bereichen, die bei einer Architekturbewertung einzeln betrachtet werden müssen:</p>
<blockquote><p>· <a href="http://andrejusb-samples.blogspot.com/2007/05/jdevadf-sample-using-templates-in.html" target="_blank"><strong>Templates</strong></a><strong>:</strong> Zentrale Layout-Gestaltung und dessen Wiederverwendung durch ADF-Templates.</p>
<p>· <a href="http://biemond.blogspot.com/2009/01/adf-skinning-in-jdeveloper-11g.html" target="_blank"><strong>Skinning</strong></a>: Anpassung der JSF UI Komponenten an das vorgegebene Cooperate Design mit dem CSS basierten <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/af_skin.htm#BAJFEFCJ" target="_blank">ADFSkinning</a> Framework</p>
<p>· Erstellen von <strong>JSF Komponenten</strong>: Bauen von widerverwendbaren Composite JSF-UIKomponenten auf XML Basis ohne Programmierung mit dem <a href="http://blogs.oracle.com/adffun/2010/05/fun_with_declarative_components.html" target="_blank">ADF Declarative Components</a> Framework.</p>
<p>· Leistungsfähige moderne <strong>RIA &#8211; AJAX Komponenten</strong> inkl. JavaScript-Abstraktion durch <a href="http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adffaces/adffaces.html" target="_blank">ADF-Rich Components.</a> Anwendungsentwickler soll AJAX ohne JS verwenden können.</p>
<p>· <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/dv_intro.htm" target="_blank"><strong>Visuelle DVT Komponenten</strong></a>: Graphik-, <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/dv_gantt.htm" target="_blank">Gantt-</a>, <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/dv_hviewer.htm" target="_blank">Hierarchy</a>- Chart-, <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/dv_crosstab.htm" target="_blank">Pivot-Table</a>, <a href="http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/dv_map.htm" target="_blank">GoeMap</a>-Komponenten ,die dynamsich aus Businessdaten JSF-integrierte Graphiken erstellen und sich dynamsich bei Datenänderungen im Backend anpassen, werden durch ADF Visual RIA Components bereitgestellt. Sie interagieren mit den übrigen JSF-Komponenten und sind mit den anderen Komponenten in Bezug zu setzen – z.B. Einblenden eines Kontextmenü und starten eines JSF Dialogs beim Mouse eins Charts.</p>
<p>· <strong>Barrierefreiheit</strong>, zur Unterstützung von eingeschränkten Anwendernwerden eigene JSF Renderer bereitgestellt und können rein konfigurativ zur Laufzeit</p>
<p>· <strong>I18N Unterstützung inkl</strong>. arabische Leserichtung, CSS Anpassung und Image-Generierung.</p>
<p>· <strong>Dialogframework</strong>, zur Umsetzung der von MS-Windows bekannten Popups oder Dialogfolgen.</p>
<p>· <strong>Active Data Service</strong>, zur asynchroner Kommunikation zwischen Server und Client (Server Side Push), um den Client vom Server mit Infos und aktualisierten Daten zu versorgen ohne erneutem User-Request – ist auch unter dem Namen <a href="http://en.wikipedia.org/wiki/Comet_(programming)" target="_blank">Coment</a> bekannt. Wird u.a. zur Umsetzung von BI-Dashboards zum Refresh der Charts verwendet.</p>
<p>· Maskenflusssteuerung mit <strong>Stausverwaltung</strong> (<strong>Statemachine</strong>) und Bildung von wiederverwendbaren UI-Flows ADFController/ADFFlow:.</p>
<p>· <strong>Portlet</strong>: Native Integration in Standard-Portale (<a href="http://www.oracle.com/global/de/community/adf/webcenter.html" target="_blank">Portlet Bridge</a>) und ADFWebCenter zum Bau von Prozess Interations Portale</p>
<p>· <strong>ADFLibrary</strong>: Java Archiv mit wiederverwendbaren UI Komponenten, wie ADFFlows, UI Komponenten, Skinns oder Templates.</p>
<p>· <strong>Customization mit MDS</strong>: Zur Realisierung von Varianten nach der Fertigstellung der Anwendung. Varianten können zur Gestaltung der UI Elemente, des Maskenflusses, der Logik wie z.B. Validatoren verwendet werden.</p>
<p>· <a href="http://wiki.oracle.com/page/ADF+Security" target="_blank">ADFSecurity</a><strong></strong>: Integration der nativen Java unter Nutzung von JAAS, bzw. Java Permissions zur Absicherung von UI-Flows, UI Seiten oder Seiten-Bereiche (Create, Read, Update, Delete).</p>
<p>· <strong>ADF IDE</strong>: WISIWIG Designer in Jdeveloper (<a href="http://www.networkworld.com/news/2010/092310-oracle-links-adf-development-technology.html" target="_blank">Eclipse geplant</a>) für Masken, Skin, Controller/Flows und Konfigurationseinstellungen.</p>
<p>· Browserunabhängigkeit in Bezug auf CSS, JavaScript und HTML. Unterstützt u.a. IE, Firefox, Chrome.</p>
<p>· <a href="http://www.oracle.com/technetwork/developer-tools/adf/adfregioninteraction-155145.html" target="_blank"><strong>Contextual Framework Events</strong></a>: Integriertes Event Framework zur losen UI-Kopplung und Integration von technologisch unabhängigen Komponenten.</p>
<p>· <strong><a href="http://download.oracle.com/docs/cd/E14571_01/doc.1111/e14149/toc.htm" target="_blank">ADFHelp</a></strong>: Auf dem Java Standard aufbauendes Web Hilfesystem, das mit den gängigen Autoringwerkzeuge wie z.B. RoboHelp versorgt werden kann.</p>
<p>· UI-Statusverwaltung mit integrierter <strong>Bookmark- und Savepoint-Support</strong>.</p></blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=121&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/10/09/adffaces-features-im-berblick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>ADFFaces /JSF Templates zur Wiederverwendung</title>
		<link>http://bmaier.wordpress.com/2010/10/09/adffaces-jsf-templates-zur-wiederverwendung/</link>
		<comments>http://bmaier.wordpress.com/2010/10/09/adffaces-jsf-templates-zur-wiederverwendung/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 17:02:50 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[ADF]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Nicht kategorisiert]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/?p=116</guid>
		<description><![CDATA[Oberflächen weisen traditionell einen hohen Grad an widerholenden Bereichen auf. Die Einbindung von Fragmenten mit Include-Tags haben hier einen sehr hohen Verbreitungsgrad. Dieser Mechanismus hat jedoch einen entscheidenden Nachteile: die Fragmente werden 1:1 ohne Anpassungsmöglichkeit in die aufrufende Seite eingebunden. Änderungen am Verhalten oder an der Gestaltung lassen sich damit kaum oder nur durch Umwege [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=116&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oberflächen weisen traditionell einen hohen Grad an widerholenden Bereichen auf. Die Einbindung von Fragmenten mit Include-Tags haben hier einen sehr hohen Verbreitungsgrad. Dieser Mechanismus hat jedoch einen entscheidenden Nachteile: die Fragmente werden 1:1 ohne Anpassungsmöglichkeit in die aufrufende Seite eingebunden. Änderungen am Verhalten oder an der Gestaltung lassen sich damit kaum oder nur durch Umwege realisieren. ADF löst das Problem u.a. mit den genannten <a href="http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adfjsfreuse/templates.html" target="_blank">ADF-Templates bzw. ADF-Declarative Components</a> (siehe auch <a href="http://technology.amis.nl/blog/5711/the-adf-11g-area-template-for-micro-level-layout-design-patterns" target="_blank">AMIS</a> und <a href="http://andrejusb-samples.blogspot.com/2007/05/jdevadf-sample-using-templates-in.html" target="_blank">Andrejus</a>), die Aufrufparameter wie als Funktionsargumente erhalten können. Unterschieden wird zwischen einfachen Attributen und komplexe Seitenfragmet-Argumenten. Attribute steuern das Verhalten, dagegen werden Seitenfragmente am gewünschten Bereich innerhalb der Template-Vorgabe positioniert. Für ein UI-Wizard/Dialog Template würden z.B. die Buttons übergeben und im Template unterhalb den Eingabefeldern positioniert. Trotz spezifischem Verhalten der übergebenen Buttons, ist somit die Ausrichtung bei allen Seiten identisch, ohne dass er Anwendungsentwickler sich letztlich um Position oder Ausrichtung kümmern muss.</p>
<p>Wiederverwendung gilt in ADF als wichtiges Designprinzip: alle Seiten werden als ADF-Fragmente mit der Endung .jsff erstellt und im Seiten-Controller (ADFFlow) orchestriert. Das Einbinden der erstellten Fragmente in die JSF Hauptseiten oder auch in das Portal erfolgt erst bei der konkreten Verwendung über das JSF-Elemente Region und Dynamic Region (&lt;<a href="http://download.oracle.com/docs/cd/E12839_01/apirefs.1111/e12419/tagdoc/af_region.html" target="_blank">af:region</a>&gt;). Jede ADF-Region verwaltet den Maskenstatus autark womit mehrere unabhängige Anwendungsfälle (z.B. ausführen der Kundenauskunft während man in einer parallel angezeigten Region Auftragsdaten ändert) parallel in der selben Maske gestartet werden können.</p>
<p>Die Problematik, dass somit mehrere HTML-From Elemente geschachtelt in einer Seite vorhanden sein können – ist in HTML untersagt, wird in ADF mit dem Tag &lt;ad:form&gt; und &lt;af:subform&gt; gelöst. In Seitenfragmenten sollte deshalb stets &lt;<a href="http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_subform.html" target="_blank">af:subform</a>&gt; anstatt af:form verwendet werden.</p>
<p>Widerverwendung bedeutet auch technologisch auch Upgradefähig zu sein. Die klassische JSP Entwicklung, bei der verschiedene Sprachen (HTML, Java, JavaScript, CSS, JSP-Tags), in einer Datei gebündelt verwendet wurden lassen sich bei einem Innovationsschub nur schwer in eine neue Technologie überführen..</p>
<p><strong>ADFFaces &amp; Facelets </strong></p>
<p>Alternative zu den ADF-Templates existiert das Template-Framework <a href="https://facelets.dev.java.net/" target="_blank">Facelets</a>, das u.a. in der JSF Version 2 mit im Standard enthalten sein wird. <a href="http://download.oracle.com/docs/cd/E16764_01/web.1111/b31973/ap_config.htm" target="_blank">ADF unterstützt Facelet</a> bereits seit der ersten Version. Dem Paradigma als Auszeichnungssprache XML (XHTML) anstatt, JSP Syntax zu folgen, wurde seit Beginn der ADF Entwicklung gefolgt. Die Verwendung von Facelet als Definitions-Struktur für Seiten ist deshalb einfach möglich und bringt den Vorteil der kurzen Turnaround-Zeiten bei der Entwicklung – JSP-Compile, Deploy, Class-Reload entfällt.</p>
<p>Derzeit wird jedoch <a href="http://download.oracle.com/docs/cd/E15523_01/web.1111/b31973/gs_jdev.htm" target="_blank">Facelet in ADFFaces</a> nicht in der Kombination mit ADF-Templates und ADF-Page-Fragmenten unterstützt, da der ADF-Template Mechanismus bereits seit 2002 im UIX Framework existieren und es damals noch keine Facelets gab. Mit einer nächsten ADF Version, die u.a. JSF 2.0 unterstützt, wird sich diese jedoch ändern.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=116&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/10/09/adffaces-jsf-templates-zur-wiederverwendung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>ADF Projekt &#8211; Best Practice</title>
		<link>http://bmaier.wordpress.com/2010/07/30/adf-projekt-best-practice/</link>
		<comments>http://bmaier.wordpress.com/2010/07/30/adf-projekt-best-practice/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 21:18:23 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/2010/07/30/adf-projekt-best-practice/</guid>
		<description><![CDATA[Immer wieder werde ich gefragt wie wir von Oracle Consultant ADF-Projekte richtig aufsetzen. Leider ist es bei ADF wie überall in der Softwareentwicklung: die Anforderungen legen die Architektur und das Vorgehen fest und nicht das Framework. Ich möchte deshalb in einer kleinen Blog-Folge eine paar Ansätze diskutieren, die den Interessierten eine kleine Orientierungshilfe geben. Dabei [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=115&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Immer wieder werde ich gefragt wie wir von Oracle Consultant ADF-Projekte richtig aufsetzen. Leider ist es bei ADF wie überall in der Softwareentwicklung: die Anforderungen legen die Architektur und das Vorgehen fest und nicht das Framework. Ich möchte deshalb in einer kleinen Blog-Folge eine paar Ansätze diskutieren, die den Interessierten eine kleine Orientierungshilfe geben. Dabei will ich nur auf rein architektonische und technische Aspekte und nicht auf die in unseren Projekten meist verwendete Methode <a href="www.oracle.com/consulting/library/.../oracle-unified-method.pdf " target="_blank">OUM (Oracle Unified Method)</a> eingehen. </p>
<p>Im IT-Umfeld setzt sich ja vermehrt die Erkenntnis durch, dass die traditionellen Monster-Anwendungen und ihre enge Kopplung langfristig einem Unternehmen mehr schaden als sie nützen. Betroffen sind dabei nicht nur alte Cobol oder PL-SQL Anwendungen, sonder vor allem auch J2EE Anwendungen, die traditionelle Aufgaben wie Master Data Management, Identity- und AccessManagement, Reporting usw. immer wieder monolithisch neu implementieren. Ich plädiere deshalb dafür sich bei einer Neuimplementierung nur auf die Kernaufgaben zu konzentrieren und klare fachliche und technische Domänen auf Grundlage des <a href="http://domaindrivendesign.org/library/evans_2009_1" target="_blank">Domain Driven Developments </a>(<a href="http://www.voelter.de/publications/index/detail1682480815.html" target="_blank">DDD</a>) zu bilden. </p>
<p><strong>Lose Kopplung</strong> klare Schnittstellen und übergreifende Zusammenarbeit (Collaboration) der Softwarebausteine (Building Blocks) ist also ein muss beim Design einer Anwendung. </p>
<p>Und nun zu ADF. ADF mit alle seinen Sub-Frameworks biete viele Möglichkeiten Digen richtig order auch falsch zu machen. Deshalb treffen wir zuerst ein paar Vorentscheidungen, bevor wir beginnen:</p>
<p>1.) Die Daten und deren Qualität sind oft das wertvollste einer Anwendung, weshalb die Datenbank nicht automatisiert aus den Java-Objekten (EntityObject) generiert werden, sondern von einem erfahrenen Datenbankdesigner erstellt werden. Der DB-Designer sollte natürlich auch das ER-Modell mit einem grafischen Tool wie z.B. <a href="http://www.mid.de/produkte/innovator-data/ueberblick.html" target="_blank">MID-Innovator Data</a> erstellen und beim Einsatz des MDA/MDSD-Generators die Templates mit angepassten Designentscheidungen (physisches DB Design) bereitstellen.&#160; </p>
<p>1.1) In der Anwendungsdatenbank sollten keine Masterdaten (Bundesländer, Kunden, Organisationseinheiten) gehalten werden und diese alleinig über eindeutige Schlüssel (<a href="http://bmaier.wordpress.com/2010/04/05/soa-funktioniert-nur-mit-eindeutigen-objektschlssel-und-nicht-mit-lokalen-db-sequenzen/" target="_blank">GUID</a>) logisch referenziert werden – hier existiert kein DB-Constraint (Ausnahmen durch programmatische CheckConstraint z.B. in einer PLSQL-Funktion). </p>
<p>1.2) Als Objekt-Schlüssel (Primary-Key) werden stets nichtsprechende eindeutige IDs (<a href="http://bmaier.wordpress.com/2010/04/05/soa-funktioniert-nur-mit-eindeutigen-objektschlssel-und-nicht-mit-lokalen-db-sequenzen/" target="_blank">GUID</a>) verwendet. </p>
<p>1.3) Constraints außerhalb der Fachdomäne werden über die Business-Logik abgehandelt und nicht durch native Datenbankmittel wie CheckConstraints (ALTER TABLE table_name enable CONSTRAINT constraint_name;)</p>
<p>1.4) Die letzte Änderung eines Datensatzes wird je Tabelle durch zwei Change-Indikator Felder (Zeit + Benutzer aus LoginContext) gekennzeichnet. </p>
<p>1.5) Historisierung in einer relationalen OLTP-Anwendung lässt sich nur mit hohem Aufwand realisieren und ist soweit wie möglich vermeiden. Bei einer Anforderung zur Nachvollziehbarkeit wird das Prinzip der zentralen ChangeHistoryTabelle mit eingeführt. Notwendige Columns: Zeitpunkt, Benutzername, alter Wert, neuer Wert.&#160; Aus Performanzgründen muss ein zyklischer Bereinigungslauf vorhanden sein und die angefallenen Alt-Daten archivieren.&#160; </p>
<p>1.6) Die Datenbank sollte mindestens die <a href="http://www.ziemers.de/datenbanken/normalformen.html" target="_blank">Normalisierungsstufe</a>&#160; aufweisen, bevor man beginnt die Entity-Objekte zu erstellen. Ein Refactoring ist heute zwar per Jdeveloper möglich, verursacht jedoch einen riesen Aufwand.</p>
<p>1.7) Ein EntityObject basiert immer auf einer&#160; Tabelle und nicht auf einer DB-View. Ausnahmen mit einer 1:1 View sind möglich; es ist jedoch zu Bedenken, dass hier oft Seiteneffekte mit dem ADF-Cache auftreten.&#160;&#160;&#160; </p>
<p>&#160;</p>
<p>Die Liste werde ich in dem Blog die nächsten Monate fortsetzen!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=115&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/07/30/adf-projekt-best-practice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>SOA &amp; Cloud Symposium 2010 in Berlin (5.-6. Oktober)</title>
		<link>http://bmaier.wordpress.com/2010/07/30/soa-cloud-symposium-2010-in-berlin-5-6-oktober/</link>
		<comments>http://bmaier.wordpress.com/2010/07/30/soa-cloud-symposium-2010-in-berlin-5-6-oktober/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 16:37:04 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[BPM/SOA]]></category>
		<category><![CDATA[Nicht kategorisiert]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/2010/07/30/soa-cloud-symposium-2010-in-berlin-5-6-oktober/</guid>
		<description><![CDATA[Unter dem Mott “Scaling Your Business and Infrastructure into the Cloud” findet die renommierte Veranstaltung rund um SOA und Cloud dieses Jahr am 5 und 6. Oktober in Berlin statt. Zu den Sprechern zählen Thomas Erl, Dirk Krafzig, Stefan Tilkov, Mark Little, Brian Loesgen, John deVadoss, Nicolai Josuttis, Tony Shan, Toufic Boubez, Paul C. Brown, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=114&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Unter dem Mott “<strong><a href="http://www.soasymposium.com" target="_blank">Scaling Your Business and Infrastructure into the Cloud</a></strong>” findet die renommierte Veranstaltung rund um SOA und Cloud dieses Jahr am 5 und 6. Oktober in Berlin statt.</p>
<p>Zu den Sprechern zählen Thomas Erl, Dirk Krafzig, Stefan Tilkov, Mark Little, Brian Loesgen, John deVadoss, Nicolai Josuttis, Tony Shan, Toufic Boubez, Paul C. Brown, Clemens Utschig, Satadru Roy, David Chou, Torsten Winterberg, Berthold Maier, Hajo Normann und vielen anderen – sie alle bringen neue Ideen, praktische Projekterfahrung und exklusive Informationen aus allen Bereichen des SOA und Cloud Computings ein und freuen sich auf die Diskussion mit Ihnen.</p>
<p>Themen aus den folgenden Bereichen werden auf dem Symposium diskutiert:</p>
<ul><strong><a href="http://www.cloudsymposium.com" target="_blank">Scaling Your Business and Infrastructure into the Cloud</a><br />
</strong>• The Latest Cloud Technology Innovation<br />
• Building &amp; Working with Cloud-Based Services<br />
• Cloud Computing Business Strategies<br />
• Case Studies &amp; Business Models<br />
• Understanding SOA &amp; Cloud Computing<br />
• Cloud-based Infrastructure &amp; Products</p>
<p><strong><a href="http://www.soasymposium.com" target="_blank">Exploring Modern Service Technologies &amp; Practices</a></strong><br />
• Service Architecture &amp; Service Engineering<br />
• Service Governance &amp; Scalability<br />
• SOA Case Studies &amp; Strategic Planning<br />
• REST Service Design &amp; RESTful SOA<br />
• Service Security &amp; Policies<br />
• Semantic Services &amp; Patterns<br />
• Service Modeling &amp; BPM</ul>
<p>&nbsp;</p>
<p>Im direkten Anschluss an die Veranstaltung findet am 7. und 8. Oktober 2010 ein zusätzlicher Workshop rund um das Thema Cloud Computings statt.</p>
<p>Die Veranstaltung ist Pflicht, für alle die sich im SOA oder Cloud Umfeld bewegen. Wer sich beeilt, der kann über die Early Bird Registration noch ein paar Euro sparen. Bis zum 31.07.2010 gibt es 100 € Rabatt für Firmen und Organisationen. Studenten erhalten ohnehin einen 80%igen Rabatt. Oder man bucht über Firmen wie, <a href="http://www.oracle.com/de" target="_blank">Oracle</a>, <a href="http://www.mid.de" target="_blank">MID</a>, IBM, SAG, usw. bei denen man einen Discount von 5% erhalten kann. Die offizielle Registrierung findet man <a href="http://www.soasymposium.com/">hier</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=114&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/07/30/soa-cloud-symposium-2010-in-berlin-5-6-oktober/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>ADF Strukturierung &#8211; Best Practices</title>
		<link>http://bmaier.wordpress.com/2010/07/29/adf-project-structure-best-practices/</link>
		<comments>http://bmaier.wordpress.com/2010/07/29/adf-project-structure-best-practices/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 20:30:36 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[ADF]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://bmaier.wordpress.com/?p=106</guid>
		<description><![CDATA[Immer und immer wieder sehe ich Kunden-Projekt in denen eine ADF-Projektstruktur erstellt wurde, die 1:1 aus dem  Jdeveloper Standard-Wizard generiert wurde. Problematisch daran  ist, dass diese Struktur sich weder für Wiederverwendung noch konkurrierende Programmierung eignet. Als Regel gilt  in unseren  Projekten deshalb  immer: Es es existiert auf oberster Ebene  immer ein ADF- Framework Projekt für das ADF-Model und [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=106&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Immer und immer wieder sehe ich Kunden-Projekt in denen eine ADF-Projektstruktur erstellt wurde, die 1:1 aus dem  Jdeveloper Standard-Wizard generiert wurde.<br />
Problematisch daran  ist, dass diese Struktur sich weder für Wiederverwendung noch konkurrierende Programmierung eignet. Als Regel gilt  in unseren  Projekten deshalb  immer:</p>
<ul>
<li>Es es existiert auf oberster Ebene  immer ein ADF- Framework Projekt für das ADF-Model und die ADF-UI. Das <em>ADFModeCommon </em>Projekt enthält die  Basisfunktionalität des Modells wie Protokollierung, VPD Anmedlung usw.  des ADF Models. Das <em>ADFUICommon </em>Projekt enthält die Basisklassen der Oberfläche wie z.B. Internationalisierung, Help-Einbindung usw.</li>
<li>Die <strong>EntityObjekte</strong> und <strong>Associationen</strong> werden in einem eigenen Projekt, getrennt von <strong>AppModule</strong> und <strong>ViewObjects</strong> gespeichert. Die Strukturierung und Anzahl der Projekte erfolgt durch Vorgabe der  fachlichen Domänen.<br />
<em><strong>Beispiel</strong>: Entities der Versicherungsdomäne Vertrag oder Partner werden jeweils in eigenen Entity-Projekten verwaltet. Die Anlage von Association über die Grenze einer Fachdomäne sollte soweit wie möglich vermieden werden (Kopplungsgrad).</em></li>
<li><strong>ViewObjects</strong> gelten als Objektschnittstellen zu den Fachanwendungen und sollten deshalb die identische  Projektgranularität aufweisen. Es wird jedoch erst ein ViewObjet angelegt, wenn es wirklich gebraucht wird und niemals der Wizard zur Default-Gernerierung (1:1 zu Entities)   verwendet werden &#8211; erzeugt zu viel Objekte, die danach verwaltet werden müssen. Die Funktion der View-Object Vererbung ist hier ein ganz wichtiges Feature, um tatsächlich Wiederverwendung zu gewährleisten und die  wiederholte Definition aller Attribute zu vermeiden.</li>
<li>Die <strong>Nameskonvention</strong> der  Wizards sind  sehr technisch und sollte immer überschrieben werden:
<ul>
<li><strong>Entity Objekte</strong> werden immer wie das fachliche Geschäftsobjekt, ohne dem Anhang Entity, benannt und unter demSub- Package <em>bo </em>abgelegt  <em>(Beispiel: </em>de.mycompany.mode.bo.customer.Address)</li>
<li><strong>View Objecte</strong> werden ebenfalls  fachliche getrieben , ohne dem Anhang View,  benannt und unter demSub- Package vo<em> </em>abgelegt  <em>(Beispiel: </em>de.mycompany.mode.vo.customer.CustomerAddress)</li>
<li>Bei der Namesvergabe der  <strong>Entity Associations</strong> sind verwende ich immer die Konvention <em>BaseObject2DestinationObjectAccociation</em>. Eine strikte Regel kann aufgrund der unterschiedlichen  Kardinalitätsmöglichkeiten und Eindutigkeit innerhalb einem Projekt  nicht geben.    Zudem müssen die Asscciationen nach der Anlage durch den Refactor-Wizard verschoben und umbenannt werden.</li>
<li>Für <strong>ViewLinks</strong> sind die identischen Regeln wie bei den Associations anzuwenden. einziger Unterschied ist, dass sie im Sub-Package der VO abgelegt und mit dem Nameszusatzs Link angelegt werden.</li>
<li><strong>ApplicationsModules </strong>ist für die meisten ein nicht aussagekräftiger Begriff. Ich verwende deshalb stets den Begriff und Strukturierungsmerkmal Component oder Service. Zu Components(AppModule)  werden alle wiederverwendbare kleine Einheiten. Den Begriff Service verwende ich für AppModule dann, wenn ein Service nach außen sichtbar und damit öffentlich wird.<em> Beispiel:  OrderManagementService, OrderComponent, CustomerComponent, usw.
<p></em></li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=106&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/07/29/adf-project-structure-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>
	</item>
		<item>
		<title>SOA Literatur: Integration und Blueprint</title>
		<link>http://bmaier.wordpress.com/2010/07/29/soa-integrations-literatur/</link>
		<comments>http://bmaier.wordpress.com/2010/07/29/soa-integrations-literatur/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 15:36:38 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">http://bmaier.wordpress.com/?p=101</guid>
		<description><![CDATA[bald wir eine sehr interessantes Integrations-Architekturbuch rund um SOA von meinem geschätzten Kollegen und exzellenten Architekten Guido Schmutz und seinen  Mitautoren Peter Welkenbach, Daniel Liebhart im PACKT Verlag  erscheinen. Service Oriented Architecture: An Integration Blueprint http://www.packtpub.com/service-oriented-architecture-an-integration-blueprint/book?utm_source=bmaier.wordpress.com&#38;utm_medium=bookrev&#38;utm_content=blog&#38;utm_campaign=mdb_003972<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=101&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>bald wir eine sehr interessantes Integrations-Architekturbuch rund um SOA von meinem geschätzten Kollegen und exzellenten Architekten Guido Schmutz und seinen  Mitautoren Peter Welkenbach, Daniel Liebhart im PACKT Verlag  erscheinen.</p>
<p style="text-align:center;"><a title="Service Oriented Architecture: An Integration Blueprint" href="http://www.packtpub.com/service-oriented-architecture-an-integration-blueprint/book?utm_source=bmaier.wordpress.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003972" target="_blank">Service Oriented Architecture: An Integration Blueprint</p>
<p></a><img class="aligncenter" src="http://image.wetpaint.com/image/2/OJ0WMFEiTVo2O92BlA9UXA6949/GW125H152" alt="clip_image002" /></p>
<p><a href="http://www.packtpub.com/service-oriented-architecture-an-integration-blueprint/book?utm_source=bmaier.wordpress.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003972">http://www.packtpub.com/service-oriented-architecture-an-integration-blueprint/book?utm_sou</a><a href="http://www.packtpub.com/service-oriented-architecture-an-integration-blueprint/book?utm_source=bmaier.wordpress.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003972">rce=bmaier.wordpress.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003972</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=101&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/07/29/soa-integrations-literatur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>

		<media:content url="http://image.wetpaint.com/image/2/OJ0WMFEiTVo2O92BlA9UXA6949/GW125H152" medium="image">
			<media:title type="html">clip_image002</media:title>
		</media:content>
	</item>
		<item>
		<title>ADFFaces und GoogleMaps</title>
		<link>http://bmaier.wordpress.com/2010/04/29/adffaces-und-googlemaps/</link>
		<comments>http://bmaier.wordpress.com/2010/04/29/adffaces-und-googlemaps/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 09:14:12 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/2010/04/29/adffaces-und-googlemaps/</guid>
		<description><![CDATA[Heute wird oft die Anforderung gestellt, die Lokation einer Adresse zu prüfen und diese dann per GeoMap zu visualisieren. Eine sehr einfache und auch interaktive Lösung stellt zwar OracleMaps mit der ADFFaces MapComponente dar, doch oft ist eine nicht interaktive Lösung mit GoogleMap gefordert. Dies in mit ADFFaces umzusetzen ist mit ein paar Handgriffen möglich. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=95&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Heute wird oft die Anforderung gestellt, die Lokation einer Adresse zu prüfen und diese dann per GeoMap zu visualisieren. </p>
<p>Eine sehr einfache und auch interaktive Lösung stellt zwar OracleMaps mit der <a href="http://jdevadf.oracle.com/adf-richclient-demo/faces/index.jspx;jsessionid=2KGCLX1hpG75TtrBvZVRjsFw6YYdy1pgXWm09VQfVmTgvkvBVMN2!1379630328?gallery=true&amp;_afrLoop=15503758432556025&amp;_afrWindowMode=0&amp;_afrWindowId=null#%2Fcomponents%2FgeoMapMultipleThemes.jspx%40" target="_blank">ADFFaces MapComponente</a> dar, doch oft ist eine nicht interaktive Lösung mit GoogleMap gefordert. Dies in mit ADFFaces umzusetzen ist mit ein paar Handgriffen möglich. Bei diesem Beispiel habe ich mich entschieden ein ADF-Texteingabefeld zu verwenden, das am linken Rand eine kontextgestützten Aufruf ermöglicht und damit ein Popup-Dialog mit integrierte GoogleMap&#160; aufzurufen. </p>
<p align="left"><a href="http://bmaier.files.wordpress.com/2010/04/image4.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="133" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb4.png?w=221&#038;h=133" width="221" border="0" /></a></p>
<p>Das eingebettete Element &lt;af:contextInfo&gt; blendet einen modernen AJAX ContextButton am linke Rand des Eingabefelds ein.</p>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image5.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="39" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb5.png?w=196&#038;h=39" width="196" border="0" /></a></p>
<p>&#160;</p>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image6.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="94" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb6.png?w=383&#038;h=94" width="383" border="0" /></a> </p>
<p>&#160;</p>
<p>Mit dem Element &lt;af:showPopupBehavior&gt; kann ein AJAX-Aufruf initiiert werden, der ein Popup-Dialog aufruft und die GoggleMap mit Lokation zur Darstellung bringt.</p>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image7.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="186" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb7.png?w=244&#038;h=186" width="244" border="0" /></a> </p>
<p>Zur Darstellung des Dialogs sind nur eine paar wenige Zeilen Code erforderlich.</p>
<p>&#160;</p>
<p align="left"><a href="http://bmaier.files.wordpress.com/2010/04/image8.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="74" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb8.png?w=415&#038;h=74" width="415" border="0" /></a> </p>
</p>
</p>
</p>
</p>
</p>
</p>
<p>&#160;</p>
<p>und hier der gesamte Code des Beispiels:</p>
<p>&#160;</p>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image10.png"><img title="image" style="border-right:0;border-top:0;display:block;float:none;margin-left:auto;border-left:0;margin-right:auto;border-bottom:0;" height="212" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb10.png?w=306&#038;h=212" width="306" border="0" /></a> </p>
<p>&#160;</p>
<p>Die GoogleMaps-Adressierung erfolgt im Bespiel per <a href="http://mapki.com/wiki/Google_Map_Parameters" target="_blank">Google-URL</a> und deklarativer Übergabe der Lokation an den Dialog wie folgt:&#160;&#160; </p>
<p>&lt;af:clientAttribute name=&quot;searchText&quot; value=&quot;#{pageFlowScope.tmp}&quot; /&gt;     </p>
<p>Das Auslesen des Parameters im PopupDialog wird mit dem &lt;af:setPropertyListener&gt;&#160; Element erreicht. </p>
<p>&lt;af:setPropertyListener from=&quot;#{source.attributes.searchText}&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; to=&quot;#{pageFlowScope.searchText}&quot; type=&quot;popupFetch&quot;/&gt;     </p>
<p>Weder Java noch JavaScript-Programmierung ist für diese Lösung notwendig.&#160; Sollte das InlineFrame stören, so sind auch <a href="http://technology.amis.nl/blog/3929/adf-11g-richfaces-creating-a-googlemaps-mashup-part-i-clientlisteners-and-clientattributes" target="_blank">alternative Lösungsansätze </a>denkbar. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=95&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/04/29/adffaces-und-googlemaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb7.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb8.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb10.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Zusammenfassung: Oracle ADF und SOA</title>
		<link>http://bmaier.wordpress.com/2010/04/26/zusammenfassung-oracle-adf-und-soa/</link>
		<comments>http://bmaier.wordpress.com/2010/04/26/zusammenfassung-oracle-adf-und-soa/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 20:40:50 +0000</pubDate>
		<dc:creator>bmaier</dc:creator>
				<category><![CDATA[Nicht kategorisiert]]></category>

		<guid isPermaLink="false">https://bmaier.wordpress.com/2010/04/26/zusammenfassung-oracle-adf-und-soa/</guid>
		<description><![CDATA[ADF ist eine Komponentenframework das folgende Möglichkeiten einer SOA-Integration mit WebService bietet: ADF kann JAX WS-Konforme SOA Service der Kategorie Activity-Service bereitstellen (siehe SOA Referenzarchitektur). Hierbei wird in der Komponente ApplicationsModul die ServiceMethode als normale JavaMethode implementiert und dann als WebService per Dialog exponiert. Objekte, die als Übergabeparameter der ServiceMethoden dienen, müssen das Interface java.io.Serializable [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=82&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ADF ist eine Komponentenframework das folgende Möglichkeiten einer <a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/bcextservices.htm#CJABABJE" target="_blank">SOA-Integration mit WebService</a> bietet: </p>
<ol>
<li>ADF kann JAX WS-Konforme SOA Service der Kategorie Activity-Service bereitstellen (siehe SOA Referenzarchitektur). Hierbei wird in der Komponente ApplicationsModul die ServiceMethode als normale JavaMethode implementiert und dann als WebService per Dialog exponiert.      <br />Objekte, die als Übergabeparameter der ServiceMethoden dienen, müssen das Interface java.io.Serializable implementieren und als ClientInterfaces des ApplicationModule eingetragen werden, um im ServiceDialog überhaupt als WebService-Implementierung zur Verfügung zu stehen.       </li>
</ol>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="154" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb.png?w=244&#038;h=154" width="244" border="0" /></a> </p>
<p>&#160;</p>
<ul>
<ul>
<li>Auf Ebene der ApplicationModules &quot;(Activity-Service) sind die drei Message Exchange Pattern (MEP) Synchrone, Asynchron Fire and Forget und Asynchron Request-Reply vorhanden. Beim MEP Asynchron-Request-Reply muss der Client einen Http-Server als Listener und eine CallbackMethode implementieren, damit der Server zeitverzöger das Ergebnis an den Client ausliefern kann. ADF generiert nach Auswahl der Option Asynchronous den zugehörige ServerCode inkl. der separaten asynchronen Methode mit dem Namenszusatz <strong>Async</strong> (z.B. MyMthodeNameAsync). </li>
</ul>
</ul>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image1.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="154" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb1.png?w=244&#038;h=154" width="244" border="0" /></a> </p>
<ul>
<ul>
<li>Service der Kategorie <a href="http://andrejusb.blogspot.com/2009/08/service-enabled-entity-objects-in.html" target="_blank">Data-Service werden in ADF</a> ebenfalls angeboten. Hier werden jedoch die genannten ViewObjects (<a href="http://en.wikipedia.org/wiki/Data_transfer_object" target="_blank">DataTransferObject DTO</a>) als <a href="http://www.osoa.org/display/Main/SCA+and+SDO+Introduction+and+Overview" target="_blank">SDO (Service Data Object)</a> WebService exponiert. Diese enthalten die üblich <a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/bcextservices.htm#CJABABJE" target="_blank">CRUD Methoden</a>&#160; (Create, Read, Update, Delete), sowie die Custom-Operationen der ViewObjects. Zudem können alle Find-Methoden mit den SuchCriterien als WebService Methoden dem Consumer zur Verfügung gestellt werden. U.a. wird <a href="http://www.eclipse.org/eclipselink/sdo.php" target="_blank">SDO in ADF mit dem EclipseLink Framework</a> Implementiert. </li>
</ul>
</ul>
<p>&#160;</p>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image2.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="171" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb2.png?w=244&#038;h=171" width="244" border="0" /></a>&#160;&#160;&#160;&#160; </p>
<ul>
<ul>
<li>Die dritte Art der SOA-Verwendung besteht in der Verwendung der <a href="http://andrejusb.blogspot.com/2009/08/service-enabled-entity-objects-in.html" target="_blank">SDO Remoting</a> Option. Hier werden die ADF-EntityObjects&#160; (EO) auf Basis der SDO ViewObject Webservice&#160; eines unabhängigen Projekts erstellt. Damit kann ein ADF-Datenbank Model Projekt SDO WebService anbieten und diese wiederum als SOA-Datenmodell wie oben erläutert bereitstellen. Das zweite konsumierende Projekt kann somit das identische Programmiermodell anwenden und sehr einfach sogenannte “Service Based Business Applications (SOBA)“ auch mit <a href="http://biemond.blogspot.com/2009/08/crud-operations-with-bind-entity.html" target="_blank">SCA und BPEL</a> ohne große Programmierung realisieren. Wichtig zu wissen ist, dass derzeit (11.1.1.2) die SDO ViewObjects basierende EntityObjects noch einige Einschränkungen gegenüber den üblichen EO’s auf Basis der DB-Tabellen haben. </li>
</ul>
</ul>
<p><a href="http://bmaier.files.wordpress.com/2010/04/image3.png"><img title="image" style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" height="154" alt="image" src="http://bmaier.files.wordpress.com/2010/04/image_thumb3.png?w=244&#038;h=154" width="244" border="0" /></a></p>
<p>&#160;</p>
</p>
<ul>
<ul>
<li><a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_manipdoc.htm#CIHEGEBE" target="_blank">EntityVariablen</a> stellen spezielle SDO Variablen innerhalb der Oracle BPEL Orchstrierungsengine dar. Diese können direkt auf den oben genannten SDO ViewObjects basieren und somit eine schnelle Datenkommunikation zwischen BPEL und ADF-BC über Standard WebService herstellen. Mit dieser Lösung lässt sich ohne viel <a href="http://biemond.blogspot.com/2009/08/crud-operations-with-bind-entity.html" target="_blank">Overhead das SOA Programmiermodelle</a> noch einfacher umsetzen. </li>
</ul>
</ul>
<p>&#160; </p>
<p>Die Zusammenfassung listet lediglich die SOA ADF Möglichkeiten auf, ohne auf die BestPractices einzugehen. In folgenden Blogs werde ich unsere BestPractices und die konkrete Umsetzung einer SOA mit ADF diskutieren.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bmaier.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bmaier.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bmaier.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bmaier.wordpress.com&amp;blog=1931596&amp;post=82&amp;subd=bmaier&amp;ref=&amp;feed=1" width="1" height="1" /><div class="sharedaddy sharedaddy-dark"></div>]]></content:encoded>
			<wfw:commentRss>http://bmaier.wordpress.com/2010/04/26/zusammenfassung-oracle-adf-und-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de822858f9b6bb99e254d33aa8d63149?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bmaier</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://bmaier.files.wordpress.com/2010/04/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
	</channel>
</rss>
