<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments for Avrom's Java EE and Oracle ADF Blog</title>
	<atom:link href="http://www.avromroyfaderman.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.avromroyfaderman.com</link>
	<description>Tricks, Tips, Thoughts, and Rants About Java EE, Oracle ADF, and Web Application Development</description>
	<pubDate>Wed, 07 Jan 2009 17:35:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on ADF BC Tuning III: View Objects, Part 1 by Simon Haslam</title>
		<link>http://www.avromroyfaderman.com/2008/11/adf-bc-tuning-iii-view-objects-part-1/comment-page-1/#comment-3919</link>
		<dc:creator>Simon Haslam</dc:creator>
		<pubDate>Thu, 11 Dec 2008 09:03:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=228#comment-3919</guid>
		<description>When read-only SQL-based View Objects were first introduced they struck me as being a bit of a workaround  - especially since they can't access the nice hints, renames etc that you create in an EO. Ideally for simplicity I'd prefer VOs to always be based on EOs, however as you say there is still a performance trade-off. The main exception is populating, say, an informational field on a form, where you typically have a single SQL statement (as per your MAX example above) - in that case I reckon it's definitely better to have a read-only VO than to have a chunk of SQL buried somewhere in the java. Likewise LOVs are probably easier as separate RO VOs as they don't usually have many columns. Anyway, I've been really enjoying these tuning posts Avrom - keep up the great work!</description>
		<content:encoded><![CDATA[<p>When read-only SQL-based View Objects were first introduced they struck me as being a bit of a workaround  - especially since they can&#8217;t access the nice hints, renames etc that you create in an EO. Ideally for simplicity I&#8217;d prefer VOs to always be based on EOs, however as you say there is still a performance trade-off. The main exception is populating, say, an informational field on a form, where you typically have a single SQL statement (as per your MAX example above) - in that case I reckon it&#8217;s definitely better to have a read-only VO than to have a chunk of SQL buried somewhere in the java. Likewise LOVs are probably easier as separate RO VOs as they don&#8217;t usually have many columns. Anyway, I&#8217;ve been really enjoying these tuning posts Avrom - keep up the great work!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Suggest a Topic by radhakrishna</title>
		<link>http://www.avromroyfaderman.com/suggest-a-topic/comment-page-1/#comment-3767</link>
		<dc:creator>radhakrishna</dc:creator>
		<pubDate>Tue, 02 Dec 2008 18:58:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?page_id=78#comment-3767</guid>
		<description>ADF Performance Blog is very useful..

 
 Suggested Topic : Tree Bindings  

 It has lot of scope to explore. Constructing Tree Models,  Using Binding APIs to perform CURD, Behaviour in Self Referential View Link VOs..</description>
		<content:encoded><![CDATA[<p>ADF Performance Blog is very useful..</p>
<p> Suggested Topic : Tree Bindings  </p>
<p> It has lot of scope to explore. Constructing Tree Models,  Using Binding APIs to perform CURD, Behaviour in Self Referential View Link VOs..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on ADF BC Tuning III: View Objects, Part 1 by Mücahid Uslu</title>
		<link>http://www.avromroyfaderman.com/2008/11/adf-bc-tuning-iii-view-objects-part-1/comment-page-1/#comment-3440</link>
		<dc:creator>Mücahid Uslu</dc:creator>
		<pubDate>Fri, 14 Nov 2008 13:26:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=228#comment-3440</guid>
		<description>Thank you.</description>
		<content:encoded><![CDATA[<p>Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on ADF BC Tuning I: Entity Objects by Chris Muir</title>
		<link>http://www.avromroyfaderman.com/2008/10/adf-bc-tuning-i-entity-objects/comment-page-1/#comment-3370</link>
		<dc:creator>Chris Muir</dc:creator>
		<pubDate>Tue, 11 Nov 2008 08:04:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=191#comment-3370</guid>
		<description>Great post Avrom.

I've linked this post and the next few tunings posts to the Oracle Wiki page:

http://wiki.oracle.com/page/ADF+Business+Components+Examples

Cheers,

CM.</description>
		<content:encoded><![CDATA[<p>Great post Avrom.</p>
<p>I&#8217;ve linked this post and the next few tunings posts to the Oracle Wiki page:</p>
<p><a href="http://wiki.oracle.com/page/ADF+Business+Components+Examples" rel="nofollow">http://wiki.oracle.com/page/ADF+Business+Components+Examples</a></p>
<p>Cheers,</p>
<p>CM.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Power of Properties II: The View Object by AMIS Technology blog &#187; Blog Archive &#187; The rise of the ViewObject - or: isn&#8217;t the ViewObject the real Data Control?</title>
		<link>http://www.avromroyfaderman.com/2008/10/the-power-of-properties-ii-the-view-object/comment-page-1/#comment-2663</link>
		<dc:creator>AMIS Technology blog &#187; Blog Archive &#187; The rise of the ViewObject - or: isn&#8217;t the ViewObject the real Data Control?</dc:creator>
		<pubDate>Wed, 15 Oct 2008 07:55:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=169#comment-2663</guid>
		<description>[...] the programmatic ViewObject based on a PL/SQL&#160;API, for example in Avrom&#8217;s The Power of Properties II: The View Object [...]</description>
		<content:encoded><![CDATA[<p>[...] the programmatic ViewObject based on a PL/SQL&nbsp;API, for example in Avrom&#8217;s The Power of Properties II: The View Object [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Business Logic Wars by Avrom</title>
		<link>http://www.avromroyfaderman.com/2008/06/the-business-logic-wars/comment-page-1/#comment-2528</link>
		<dc:creator>Avrom</dc:creator>
		<pubDate>Wed, 08 Oct 2008 22:37:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=69#comment-2528</guid>
		<description>Hi Nathalie,

I agree, the BRE is a fine alternative and one I didn't discuss.

Fundamentally, it falls under the "Middle Tier" solution, since BRE does run in the middle tier. But there are a few differences from the middle-tier solutions I mentioned above.

The biggest ones are the ones you mentioned, and these are definitely advantages over other middle-tier options: You can change rules without an application redeployment, and the interface is simple enough that you don't need to be a DB developer, or any kind of developer for that matter, to implement new ones, allowing the analysts who design the rules to implement them too.

The downsides:

1) To actually use the business rules, you have to assert "facts" (either a particular sort of JavaBean or a particular XML message) and recover results, including the error messages (if any). ADF won't let you do that declaratively, so, like the database case, you're going to be writing some Java code to invoke the business rules. I think that in most cases, it's substantially less code, and less nasty code, than getting ADF to play well with DB trigger errors, but it's not trivial.

2) The BRE does not come as part of ADF; it comes as part of the SOA suite. That means you're going to have to pay for it. If you have highly volatile business rules and/or really need your business users to be able to change them (or need the SOA suite for some other reason, like wanting to develop SOA applications), it's worth it. If not... well, you need to consult your budget.</description>
		<content:encoded><![CDATA[<p>Hi Nathalie,</p>
<p>I agree, the BRE is a fine alternative and one I didn&#8217;t discuss.</p>
<p>Fundamentally, it falls under the &#8220;Middle Tier&#8221; solution, since BRE does run in the middle tier. But there are a few differences from the middle-tier solutions I mentioned above.</p>
<p>The biggest ones are the ones you mentioned, and these are definitely advantages over other middle-tier options: You can change rules without an application redeployment, and the interface is simple enough that you don&#8217;t need to be a DB developer, or any kind of developer for that matter, to implement new ones, allowing the analysts who design the rules to implement them too.</p>
<p>The downsides:</p>
<p>1) To actually use the business rules, you have to assert &#8220;facts&#8221; (either a particular sort of JavaBean or a particular XML message) and recover results, including the error messages (if any). ADF won&#8217;t let you do that declaratively, so, like the database case, you&#8217;re going to be writing some Java code to invoke the business rules. I think that in most cases, it&#8217;s substantially less code, and less nasty code, than getting ADF to play well with DB trigger errors, but it&#8217;s not trivial.</p>
<p>2) The BRE does not come as part of ADF; it comes as part of the SOA suite. That means you&#8217;re going to have to pay for it. If you have highly volatile business rules and/or really need your business users to be able to change them (or need the SOA suite for some other reason, like wanting to develop SOA applications), it&#8217;s worth it. If not&#8230; well, you need to consult your budget.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Business Logic Wars by nathalie roman</title>
		<link>http://www.avromroyfaderman.com/2008/06/the-business-logic-wars/comment-page-1/#comment-2518</link>
		<dc:creator>nathalie roman</dc:creator>
		<pubDate>Wed, 08 Oct 2008 11:44:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=69#comment-2518</guid>
		<description>Avrom,

I was wondering why you're not mentioning the Oracle Business Rules Engine to enable business rule integration in a java application without being a DB developer.

Isn't this a good alternative as well?
It's still a little bit fuzzy regarding the ability to change rules at run time with a fancy look &#38; feel which is business friendly.

Kind regards,
Nathalie</description>
		<content:encoded><![CDATA[<p>Avrom,</p>
<p>I was wondering why you&#8217;re not mentioning the Oracle Business Rules Engine to enable business rule integration in a java application without being a DB developer.</p>
<p>Isn&#8217;t this a good alternative as well?<br />
It&#8217;s still a little bit fuzzy regarding the ability to change rules at run time with a fancy look &amp; feel which is business friendly.</p>
<p>Kind regards,<br />
Nathalie</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Extreme Reusability, Part II by Avrom</title>
		<link>http://www.avromroyfaderman.com/2008/10/extreme-reusability-part-ii/comment-page-1/#comment-2479</link>
		<dc:creator>Avrom</dc:creator>
		<pubDate>Mon, 06 Oct 2008 17:22:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=148#comment-2479</guid>
		<description>Hi Jan -

So, I want to distinguish two sorts of inputs/outputs. Both are important to document, but they should be documented in different ways.

One sense of inputs/outputs (which applies only to "full" services) is user inputs/browser outputs, business rules governing them, etc. Obviously, developers using the services need to know about these, but so do the users. I think user documentation of these inputs and outputs should suffice for most purposes.

The other sense of inputs/outputs that needs to be documented is really only of interest to developer consumers of the service, but it's rather more limited. It's just the inputs that the consuming application needs to pass to the service, the outputs it can expect in return, and the changes to the entity caches that the behavior translates into. The inputs and outputs that the application needs to pass/can expect can be documented just as you would write Javadoc (though obviously you can't take direct advantage of the Javadoc engine to do so).

JAR files...I agree that versioning is the current weakest point of the methodology. But I don't think it's a deal-killer. For one thing, I think that, if you think of the deployed libraries as internal *releases* (in a very fast-cycle, Agile sense), and really use the centralized network instance of the JAR (which will always be the latest release, definitionally) as much as possible, then this sort of versioning won't be a huge issue.

But I'm still not 100% sure that this is the best way to manage it. Here's another possibility:

Each application, or service that relies on other services, has, in its build script (and I *strongly* recommend using build scripts, at least for deployment for a variety of independent reasons--though that's a topic for a different post) which actually checks the latest version of the needed applications out of the source control system into a temporary area, compiles and JARs them, and copies them into the WEB-INF/lib area of the app, so that the built project will always have the latest version of all relevant libraries.

Since the deploy script will call the build script first, this version will also get into the deployed application. (This, obviously, is *not* treating the libraries as having fast production cycles, but rather requires a synch between libraries and apps at each phase: development/testing/production, which is less than perfect; that's why I prefer the original methodology for this).

One impact of any of these systems is that, to take advantage of a new release of the service, the applications that use the service will need to be redeployed. I'm looking into the possibility that BC and Task Flow libraries don't actually need to be deployed with the service but can just be added to the J2EE container's shared classpath (I don't yet know whether this is true); in that case a simultaneous deployment (via build script) to both the container shared classpath and the shared network location will assure that the latest release version is being used at both design-time and run-time (requiring only a JDev/container bounce to take effect, respectively).

Wow. That was a long reply. It was a very good pair of questions.</description>
		<content:encoded><![CDATA[<p>Hi Jan -</p>
<p>So, I want to distinguish two sorts of inputs/outputs. Both are important to document, but they should be documented in different ways.</p>
<p>One sense of inputs/outputs (which applies only to &#8220;full&#8221; services) is user inputs/browser outputs, business rules governing them, etc. Obviously, developers using the services need to know about these, but so do the users. I think user documentation of these inputs and outputs should suffice for most purposes.</p>
<p>The other sense of inputs/outputs that needs to be documented is really only of interest to developer consumers of the service, but it&#8217;s rather more limited. It&#8217;s just the inputs that the consuming application needs to pass to the service, the outputs it can expect in return, and the changes to the entity caches that the behavior translates into. The inputs and outputs that the application needs to pass/can expect can be documented just as you would write Javadoc (though obviously you can&#8217;t take direct advantage of the Javadoc engine to do so).</p>
<p>JAR files&#8230;I agree that versioning is the current weakest point of the methodology. But I don&#8217;t think it&#8217;s a deal-killer. For one thing, I think that, if you think of the deployed libraries as internal *releases* (in a very fast-cycle, Agile sense), and really use the centralized network instance of the JAR (which will always be the latest release, definitionally) as much as possible, then this sort of versioning won&#8217;t be a huge issue.</p>
<p>But I&#8217;m still not 100% sure that this is the best way to manage it. Here&#8217;s another possibility:</p>
<p>Each application, or service that relies on other services, has, in its build script (and I *strongly* recommend using build scripts, at least for deployment for a variety of independent reasons&#8211;though that&#8217;s a topic for a different post) which actually checks the latest version of the needed applications out of the source control system into a temporary area, compiles and JARs them, and copies them into the WEB-INF/lib area of the app, so that the built project will always have the latest version of all relevant libraries.</p>
<p>Since the deploy script will call the build script first, this version will also get into the deployed application. (This, obviously, is *not* treating the libraries as having fast production cycles, but rather requires a synch between libraries and apps at each phase: development/testing/production, which is less than perfect; that&#8217;s why I prefer the original methodology for this).</p>
<p>One impact of any of these systems is that, to take advantage of a new release of the service, the applications that use the service will need to be redeployed. I&#8217;m looking into the possibility that BC and Task Flow libraries don&#8217;t actually need to be deployed with the service but can just be added to the J2EE container&#8217;s shared classpath (I don&#8217;t yet know whether this is true); in that case a simultaneous deployment (via build script) to both the container shared classpath and the shared network location will assure that the latest release version is being used at both design-time and run-time (requiring only a JDev/container bounce to take effect, respectively).</p>
<p>Wow. That was a long reply. It was a very good pair of questions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Extreme Reusability, Part II by blogs.oracle.com</title>
		<link>http://www.avromroyfaderman.com/2008/10/extreme-reusability-part-ii/comment-page-1/#comment-2477</link>
		<dc:creator>blogs.oracle.com</dc:creator>
		<pubDate>Mon, 06 Oct 2008 15:26:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=148#comment-2477</guid>
		<description>&lt;strong&gt;Extreme Reusability refuses to die...&lt;/strong&gt;

You can&#39;t keep a good idea down... Time and technical issues may have conspired to prevent Avrom...</description>
		<content:encoded><![CDATA[<p><strong>Extreme Reusability refuses to die&#8230;</strong></p>
<p>You can&#39;t keep a good idea down&#8230; Time and technical issues may have conspired to prevent Avrom&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Extreme Reusability, Part I by ArchBeat</title>
		<link>http://www.avromroyfaderman.com/2008/09/extreme-reusability-part-i/comment-page-1/#comment-2475</link>
		<dc:creator>ArchBeat</dc:creator>
		<pubDate>Mon, 06 Oct 2008 14:25:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.avromroyfaderman.com/?p=135#comment-2475</guid>
		<description>&lt;strong&gt;Extreme Reusability refuses to die...&lt;/strong&gt;

Time and technical issues may have conspired to prevent Avrom Roy-Faderman from doing his "Extreme Reusability" presentation at the OpenWorld Unconference Methodoloy Symposium, but that material has been repurposed and is now available on Avrom's bl...</description>
		<content:encoded><![CDATA[<p><strong>Extreme Reusability refuses to die&#8230;</strong></p>
<p>Time and technical issues may have conspired to prevent Avrom Roy-Faderman from doing his &#8220;Extreme Reusability&#8221; presentation at the OpenWorld Unconference Methodoloy Symposium, but that material has been repurposed and is now available on Avrom&#8217;s bl&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
