blob: 4a96e5f8aa72811175c1278d77efd3a3068554cb [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:TaskDescription xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-1HWHN5iFc1KJiC7WdlvipA"
name="build_object_models,_ZffcIDmiEdy8N6BRpa8ByQ" guid="-1HWHN5iFc1KJiC7WdlvipA"
authors="Jerome Boyer" changeDate="2008-01-28T21:30:45.875-0800" version="1.0.0">
<mainDescription>&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>Depending of the technology used there is different approach to this task. The&#xD;
domain object model at the enterprise level will represent a complex data model a rule architect does not want to&#xD;
expose as-is to the rule engine and the rule authoring environment. Navigating a complex graph of objects will bring&#xD;
unnecessary complexity for the rule writer. So we recommend to always try to use a view of the enterprise domain object&#xD;
model. For example in Financial Industry the business domain&amp;nbsp;data model defined in MISMO (&lt;a&#xD;
href=&quot;http://www.mismo.org/&quot;>&lt;font color=&quot;#005DA0&quot;>www.mismo.org&lt;/font>&lt;/a>), brings a lot of value for an enterprise&#xD;
willing to define a common ontology for their data models. But exposing the MISMO model as it is within a BRMS rule&#xD;
authoring IDE will put too much complexity. As the Architect is responsible to design decision service reusable cross&#xD;
application, it may make sense to consider view of this object model in the context of the service.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>For the application the view can be defined in two entities:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>the Domain Object Model using java or xml schema as the underling&#xD;
technology&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>or out of the box object view, like ILOG-Business Object Model element. The BOM&#xD;
is mandatory to write rule on, but it&amp;nbsp;can be created from an existing java model or XSD or created&#xD;
top-down.&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>If the model does not exist in the application, or at the enterprise level we still&#xD;
recommend to develop the domain model, using an UML designer and code generation tools.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-weight: bold; mso-bidi-font-style: italic&quot;>It is also important to consider designing a java&#xD;
model or XSD schema which is closed to the business concepts used by the rule but built as a view of the domain object&#xD;
model (We called that the Rule Business Object Pattern or RBO): in the example of standard object model like MISMO or&#xD;
ACORD, it makes sense to do not expose all the class definition, attributes and enumerated to avoid exposing a complex&#xD;
rule language to the business user. This view will be instantiated by the application business logic in the context of&#xD;
preparing the data for the rule services&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
When designing a Domain Object model one of the challenges is to determine what should be an entity and what should be&#xD;
an attribute of the entity.&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> This is why knowledge engineers like the&#xD;
Enterprise Ontology as a start point for developing these concepts.&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> The&#xD;
Enterprise Ontology describes the major entities and concepts that apply to all enterprises and it provides a very good&#xD;
starting point for the establishment of static object models and data models.&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
The difference between a class and an entity type is that classes have both data and behaviors whereas entity types&#xD;
just have data. A normal entity depicts one concept.&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
Use multiple different UML class diagram to represent entities and their relations. Then enhance them to have a&#xD;
complete class diagram from which you should be able to generate java code or XSD.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
Capture Meta data about each entity: business name, business definition, super type or subtype, number of occurrences,&#xD;
primary key, and alternate keys.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>It is possible to consider designing a Domain Model using Interface, and then apply&#xD;
different type of implementation according to different execution pattern or platforms. For example we can design&#xD;
a;&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>&#xD;
&lt;a id=&quot;1030902&quot; name=&quot;1030902&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Staged deployment with different execution&#xD;
classes&lt;/span>&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>&#xD;
&lt;a id=&quot;1030906&quot; name=&quot;1030906&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Dynamic model (XML based or dynamic classes)&#xD;
versus static model&lt;/span>&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>&#xD;
&lt;a id=&quot;1030907&quot; name=&quot;1030907&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Production/test models (active objects versus&#xD;
mock objects)&lt;/span>&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;/ul>&lt;a id=&quot;XE_object_model__build&quot; name=&quot;XE_object_model__build&quot;>&lt;/a></mainDescription>
<purpose>This&amp;nbsp;task focuses on the creation of the domain object model used by the rule engine.</purpose>
</org.eclipse.epf.uma:TaskDescription>