<div>Looks very&nbsp;worth&nbsp;exploring&nbsp;thank you Keith,</div>
<div>paul<br><br>&nbsp;</div>
<div><span class="gmail_quote">On 07/06/06, <b class="gmail_sendername"><a href="mailto:kaller@ihug.co.nz">kaller@ihug.co.nz</a></b> &lt;<a href="mailto:kaller@ihug.co.nz">kaller@ihug.co.nz</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Here's an XML representation courtesy of IBM<br><a href="http://www.alphaworks.ibm.com/tech/commonrules">http://www.alphaworks.ibm.com/tech/commonrules
</a><br>alphaWorks : CommonRules : Overview<br>keith<br><br><br>&gt; Expert Engines - will do - thanks.<br>&gt;<br>&gt; On 07/06/06, Kyley Harris &lt;<a href="mailto:kyley@harrissoftware.com">kyley@harrissoftware.com</a>&gt;
<br>&gt; wrote: &gt;<br>&gt; &gt;&nbsp;&nbsp; Well. I think WC3 would point you towards a XML style<br>&gt; &gt; representation of SQL Querying and XML row sets, using<br>&gt; &gt; schema validation to assert the correctness of requests
<br>&gt; sent and data received. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Mediated through alterable rules is really the trick.<br>&gt; &gt; This can mean so many things. There must be constraints<br>&gt; &gt; on the alterable rules that all sides know about. Have
<br>&gt; you looked at Expert Engines? &gt;<br>&gt; &gt;<br>&gt; &gt;&nbsp;&nbsp;------------------------------<br>&gt; &gt;<br>&gt; &gt; *From:* <a href="mailto:delphi-bounces@ns3.123.co.nz">delphi-bounces@ns3.123.co.nz</a><br>&gt; &gt; [mailto:
<a href="mailto:delphi-bounces@ns3.123.co.nz">delphi-bounces@ns3.123.co.nz</a>] *On Behalf Of<br>&gt; &gt; *Paul A Norman *Sent:* Wednesday, 7 June 2006 1:36 p.m.<br>&gt; &gt;<br>&gt; &gt; *To:* NZ Borland Developers Group - Delphi List
<br>&gt; &gt; *Subject:* Re: [DUG] Stored procedures and business<br>&gt; logic &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; opps Sorry,<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; This will let me have any dataset within reason on the
<br>&gt; client side &gt;<br>&gt; &gt; should be . . .<br>&gt; &gt;<br>&gt; &gt; This will let me have any dataset within reason on the<br>&gt; server side &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; On 07/06/06, *Paul A Norman* &lt;
<a href="mailto:paul.a.norman@gmail.com">paul.a.norman@gmail.com</a>&gt;<br>&gt; wrote: &gt;<br>&gt; &gt;&nbsp;&nbsp;&quot;To me it is non sensical to put business<br>&gt; &gt; logic/rules/objects whatever the term you want to use,
<br>&gt; in the database. &quot; &gt;<br>&gt; &gt;&nbsp;&nbsp;I have come to completely agree with that. I believe<br>&gt; &gt; that may be true for the conceptual reasons I posted<br>&gt; before. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>
&gt; &gt; What needs to be stored is an abstraction of the rules<br>&gt; &gt; (XMLed?), and I suspect that needs to be designed to<br>&gt; &gt; check a central registry to see if there are any<br>&gt; *carefully *conceived revisions. &gt;
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; What I am thinking of is abstraction of the<br>&gt; &gt; application's data needs client side, and implementation<br>&gt; &gt; of a server side abstraction, and a common set of rules
<br>&gt; &gt; for the two abstraction *interfaces* for want of a<br>&gt; better word, to operate and do their stuff&nbsp;&nbsp;under. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Clinet interface &lt;-&gt; client side data abstraction &lt;-
<br>&gt; &gt; *mediated through alterable rules*&nbsp;&nbsp;- &gt; server side data<br>&gt; &gt; abstraction &lt;-&gt; server database storage<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; This will let me have any dataset within reason on the
<br>&gt; client side. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; It seems simillar to aspects of the VM concept.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Is there a recomendation (e.g. WC3) any where on the<br>
&gt; &gt; format for &quot;mediated through alterable rules&quot; nothing<br>&gt; &gt; has jumped oput at me yet. How is the Java one mentioned<br>&gt; earlier done&nbsp;&nbsp;- is that standards based? &gt;<br>&gt; &gt;<br>&gt; &gt;
<br>&gt; &gt; I am facing the begining of the development of a larger<br>&gt; &gt; application at the moment that has got me really<br>&gt; &gt; focussed to be very careful on all of this before I get<br>&gt; too deeply into it. &gt;
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Some of the folk who are using it may be on linux and on<br>&gt; &gt; flavours not conducive to Kylix.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Hence on the Windows environment I am looking at
<br>&gt; &gt; leveraging Delphi with the php(for)Delphi approach and<br>&gt; &gt; relying on straight PHP under linux. This may mean that<br>&gt; &gt; Windows users will end up with better interfaces<br>&gt; (possible more advanced features), but I can use common
<br>&gt; &gt; &quot;business logic&quot; etc&nbsp;&nbsp;through PHP *with Delphi able to<br>&gt; easily write new modules for PHP*. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Further the database will be distributed in that it is<br>
&gt; &gt; to enbale &quot;nodes&quot; of datasets (holding wider info) to<br>&gt; &gt; intersect when they are available on line.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; I've looked at many Open Source projects and learned a
<br>&gt; &gt; lot from them, but not quite found something that is<br>&gt; &gt; going to keep all my people happy (either as is or<br>&gt; readily alterable). &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; So I am left with ascertaining this befoire I leap off
<br>&gt; &gt; into it. I s there a recomendation (e.g. WC3) any where<br>&gt; &gt; on the format for &quot;mediated through alterable rules&quot;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Paul<br>&gt; &gt;<br>&gt; &gt;
<br>&gt; &gt;<br>&gt; &gt; On 07/06/06, *James Sugrue* &lt;<a href="mailto:jamessugrue@xtra.co.nz">jamessugrue@xtra.co.nz</a> &gt;<br>&gt; wrote: &gt;<br>&gt; &gt; Anyone struggling with the concepts of n-tier apps and<br>
&gt; &gt; how to put in to practice could do worse than watch the<br>&gt; following webcast series &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; <a href="http://www.microsoft.com/events/series/modernsoftdev.mspx">http://www.microsoft.com/events/series/modernsoftdev.mspx
</a><br>&gt; &gt; &gt;<br>&gt; &gt;<br>&gt; &gt; while it focuses on .NET the principals can be applied<br>&gt; &gt; to any language/platform.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; To me it is non sensical to put business
<br>&gt; &gt; logic/rules/objects whatever the term you want to use,<br>&gt; &gt; in the database. One of the major points of n-tier<br>&gt; design is to allow change of one component of an app<br>&gt; &gt; without effecting the rest. What happens to your
<br>&gt; &gt; business rules if your client decides to change to<br>&gt; another database vendor or decides that they want to run<br>&gt; &gt; disconnected so you need to use XML? Which is another<br>&gt; &gt; reason incidentally why a lot of people are using web
<br>&gt; services in there middle tier…. &gt;<br>&gt; &gt;<br>&gt; &gt;&nbsp;&nbsp;------------------------------<br>&gt; &gt;<br>&gt; &gt; *From:* <a href="mailto:delphi-bounces@ns3.123.co.nz">delphi-bounces@ns3.123.co.nz</a><br>&gt; &gt; [mailto:
<a href="mailto:delphi-bounces@ns3.123.co.nz">delphi-bounces@ns3.123.co.nz</a>] *On Behalf Of<br>&gt; &gt; *Paul A Norman *Sent:* Wednesday, 7 June 2006 10:48 a.m.<br>&gt; &gt; *To:* NZ Borland Developers Group - Delphi List
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; *Subject:* Re: [DUG] Stored procedures and business<br>&gt; logic &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; I'm coming in late on this thread having really valued<br>&gt; &gt; following the discussion.
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Much of the difficulty in this area focusses around the<br>&gt; &gt; simple thought that wrong things may be attempted on the<br>&gt; &gt; db. And that the DB should do some of the thinking for
<br>&gt; &gt; the application. So much of the logic applied server<br>&gt; side is designed to sort that out. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Is there any appeal to objective philosophical logic<br>&gt; &gt; that points to any overall approach that spares us the
<br>&gt; &gt; intellectual burden of having to trouble shoot problems<br>&gt; and&nbsp;&nbsp;that perhaps should not exist or matters that need to<br>&gt; &gt; be solved serverside?<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Knuth and other early logicticians propose what became
<br>&gt; &gt; simply termed the &quot;rubbish in rubbish out&quot; principle. It<br>&gt; &gt; seems that in flow dynamics it is better to sort rubbish<br>&gt; &gt; out before it goes &quot;down stream&quot;, so that you avoid
<br>&gt; having to send anything &quot;up stream&quot; calling for changes. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Many people of that era thinking through this stuff held<br>&gt; &gt; the thought that each isloatible unit should have its
<br>&gt; &gt; own integrity. Hance Knuth's TeX approach in page layout<br>&gt; &gt; which is in its own way, the storage and qualifying of<br>&gt; data. The format of TeX assumes though that the 'user' has<br>&gt; &gt; already pre-processed the actual data and it is
<br>&gt; warrantable for deployment. &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; So I have been thinking alot about this stuff from the<br>&gt; &gt; view that each level of the process should only be<br>&gt; &gt; passing 'data' on to the next that is in all senses pure
<br>&gt; &gt; and appropriate. Now people will immeadiatley say that<br>&gt; can not work for multi-development-client applications<br>&gt; &gt; utilising a common database.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; To that I would make the suggestion of a&nbsp;&nbsp;server
<br>&gt; &gt; abstraction layer which requires that an application<br>&gt; &gt; must send a verifying &quot;key&quot; that asserts that the post<br>&gt; has the integrity required by the standard set for the<br>&gt; &gt; process. Not just a password alone, the purpose being to
<br>&gt; &gt; focuss the developer to implement internally all<br>&gt; &gt; necessary requirements prior to posting. These<br>&gt; requirements can available&nbsp;&nbsp;following the Java strategy<br>&gt; pointed out earlier. &gt;<br>
&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Perhaps then logic and checks db side should only be as<br>&gt; &gt; minimal as possible - essential enough to ensure the<br>&gt; &gt; basic integrity of the db is actually maintained.
<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Would this perhaps effectively build applications which<br>&gt; &gt; were to a high degree abstractable from the underlying<br>&gt; database in use? &gt;<br>&gt; &gt;<br>
&gt; &gt;<br>&gt; &gt; Paul<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; On 07/06/06, *Neven MacEwan* &lt; <a href="mailto:neven@mwk.co.nz">neven@mwk.co.nz</a>&gt; wrote:<br>&gt; &gt;<br>&gt; &gt; Kurt
<br>&gt; &gt;<br>&gt; &gt; I have to agree with Kyley that clearly the definition<br>&gt; &gt; of a business rule is in dispute. This reminds me that a<br>&gt; &gt; few years ago I tried to find a definition of a<br>&gt; &gt; 'business object' and only suceeded in finding what it
<br>&gt; wasn't, namely a row of data in a RDB. Also by your<br>&gt; &gt; definition you could implement all business rules in the<br>&gt; &gt; RDB, which you can't! for example a business may have<br>&gt; &gt; well defined rules for resolving a many-to-many
<br>&gt; relationship (The most common implementation of this is an<br>&gt; &gt; open item transaction ledger) but the best the RDB can<br>&gt; you is enforce RI. &gt;<br>&gt; &gt; I call the rules that protected the data DI (Data
<br>&gt; &gt; Integrity) this covers RI, Constraints, Calculated<br>&gt; &gt; Columns (Intra Row and Aggregated) you can include State<br>&gt; &gt; Checking (ie we cannot edit this record as it is<br>&gt; locked). But in my experience as much as you put in the DB
<br>&gt; &gt; you cannot implement a business there IMHO<br>&gt; &gt;<br>&gt; &gt; Neven<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; kurt wrote:<br>&gt; &gt; &gt; Neven MacEwan wrote:<br>&gt; &gt; &gt;&gt; All the constraint/ri ui code can a) be extracted out
<br>&gt; &gt; of the DB or b) &gt;&gt; be autogenerated from metadata<br>&gt; &gt; &gt;&gt;<br>&gt; &gt; &gt;&gt;&nbsp;&nbsp;&gt; Where does referential integrity end and business<br>&gt; &gt; logic begin anyway?<br>&gt; &gt; &gt;<br>
&gt; &gt; &gt;&nbsp;&nbsp;- a database is a collection of constraints<br>&gt; &gt; &gt;&nbsp;&nbsp;- a business rule is a constraint<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;&gt; firstly I make the distinction in the respect that a<br>&gt; &gt; change in &gt;&gt; business rules should not alter your ri,
<br>&gt; &gt; the difference is breaking ri &gt;&gt; would result in &quot;what<br>&gt; &gt; the sh#t is this&quot;, breaking business rules &gt;&gt; results in<br>&gt; &gt; &quot;should we be allowing this sh#t&quot; &gt;
<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; I don't see the difference : referential integrity is<br>&gt; &gt; &gt; one (the most common) way of implementing business<br>&gt; &gt; rules. &gt;<br>&gt; &gt; &gt; &quot;unique index on client ID&quot; is a simple RI statement,
<br>&gt; &gt; &gt; that enforces the rule that client ID's are unique<br>&gt; &gt; &gt; within that set of data, no?<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;&gt; Its basically the same mismatch that exists between
<br>&gt; &gt; an OO system and a &gt;&gt; Relational Database, it all goes<br>&gt; &gt; away if you accept/assume that a row &gt;&gt; of a table is a<br>&gt; &gt; class instance persisted, the question is should you? &gt;
<br>&gt; &gt; &gt; Nope. Class = Type ;)<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Cheers, Kurt.<br>&gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; Delphi mailing list<br>&gt; &gt; &gt; 
<a href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</a><br>&gt; &gt; &gt; <a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>
&gt; &gt;<br>&gt; &gt; --<br>&gt; &gt; Neven MacEwan ( B.E. E&amp;E)<br>&gt; &gt; Ph. 09 620 1356 Mob. 027 4749 062<br>&gt; &gt;<br>&gt; &gt; New Address Details<br>&gt; &gt; ==================&gt;<br>MWK Computer Systems
<br>&gt; &gt; 1 Taumata Rd<br>&gt; &gt; Sandringham<br>&gt; &gt; Auckland<br>&gt; &gt;<br>&gt; &gt; Ph 620 1356<br>&gt; &gt; Fx 620 1336<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________
<br>&gt; &gt; Delphi mailing list<br>&gt; &gt; <a href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</a><br>&gt; &gt; <a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi
</a><br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>&gt; &gt; Delphi mailing list<br>&gt; &gt; <a href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz
</a><br>&gt; &gt; <a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________
<br>&gt; &gt; Delphi mailing list<br>&gt; &gt; <a href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</a><br>&gt; &gt; <a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi
</a><br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Delphi mailing list<br>&gt; <a href="mailto:Delphi@ns3.123.co.nz">Delphi@ns3.123.co.nz</a><br>&gt; 
<a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>&gt;<br><br>_______________________________________________<br>Delphi mailing list<br><a href="mailto:Delphi@ns3.123.co.nz">
Delphi@ns3.123.co.nz</a><br><a href="http://ns3.123.co.nz/mailman/listinfo/delphi">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br></blockquote></div><br>