﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-迷途书童-随笔分类-SOA</title><link>http://www.blogjava.net/landy/category/36045.html</link><description>敏感、勤学、多思</description><language>zh-cn</language><lastBuildDate>Wed, 18 Jul 2012 14:53:15 GMT</lastBuildDate><pubDate>Wed, 18 Jul 2012 14:53:15 GMT</pubDate><ttl>60</ttl><item><title>构建SOA风格的应用</title><link>http://www.blogjava.net/landy/archive/2012/07/18/383436.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Wed, 18 Jul 2012 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2012/07/18/383436.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/383436.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2012/07/18/383436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/383436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/383436.html</trackback:ping><description><![CDATA[<p>当下，SOA这个词已经深入人心，几乎没有人不说自己设计的应用是遵从SOA的。</p> <p>很多人对SOA的理解就是分层、模块化、面向对象。。。这种理解对不对后面再说。先看一些问题：</p> <p>我今天看了一个开发团队的开发工程包结构，部分类的命名及组织产生了如下印象：</p> <ul> <li>每个usecase是一根根烟囱</li> <li>烟囱与烟囱之间连模型都没有共享。其实业务模型是有设计的，主要是实现模型没有保持业务模型的结构特征，全部成了&#8220;值对象&#8221;，开发人员天天把这些值对象叫做领域对象。</li> <li>有三层，是Struts帮忙定义的，三层分别根据usecase分包</li></ul> <p>这也是我们宣称的SOA系统！！！！连最基本的模型设计、模块设计、分层设计都没做好，难怪年年重构、年年完成不可能完成的任务！！！我确信这种重构、这种不可能完成的任务还会年年持续下去！！！</p> <p>究竟什么是符合SOA风格的系统？先看看SOA宗师IBM的一篇文章：</p> <p><a href="http://www.ibm.com/developerworks/cn/architecture/ar-soastyle/">http://www.ibm.com/developerworks/cn/architecture/ar-soastyle/</a></p> <p>我来总结一下。</p> <p>SOA能达到什么目的：</p> <p>1.实现业务与IT的一致性；</p> <p>2. 创建更灵活的反应更敏捷的IT基础设施；</p> <p>3. 简化集成实现；</p> <p>SOA要怎么做？</p> <ol> <li>从应用程序到流程和服务。消除应用程序，将软件系统创建为一组由业务流程进行协调的交互服务。每个服务实现企业上下文中定义的特定业务目标或功能，业务流程表示必须实现的业务解决方案。这个讲的比较抽象，我的解读就是服务表示一个最细粒度的业务目标或功能，由业务流程来编排这些服务，实现更大粒度的业务目标或功能，业务流程也是服务。注意，这里隐式的定义了服务的概念，服务是自治的，可替换的，可被多个流程编排的，不耦合流程上下文的，是直接面向业务目标或功能的，不是一个公共函数库，服务不是封装了数据和方法的类。</li> <li>SOA的服务基于业务资源（对象）定义，不支持操作者的执行上下文，而是支持业务资源（对象）。这里的业务资源是指业务实体。业务实体也是来自业务的。所以，SOA能保证IT与业务的一致性。</li></ol> <p>&nbsp;</p> <p>别再说你的应用程序或烟囱遵循SOA的架构风格！</p><img src ="http://www.blogjava.net/landy/aggbug/383436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2012-07-18 21:19 <a href="http://www.blogjava.net/landy/archive/2012/07/18/383436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向领域的业务平台设计（二）</title><link>http://www.blogjava.net/landy/archive/2012/02/26/370794.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Sun, 26 Feb 2012 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2012/02/26/370794.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/370794.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2012/02/26/370794.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/370794.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/370794.html</trackback:ping><description><![CDATA[<p></p> <p>如何解决上文提到的鉴定标准中的问题呢？我认为答案就是MDD。</p> <p>用一个实际的例子来表述一下思路：</p> <p>在CRM系统有个订单处理模块，其提供了订单管理、订单流程执行、工单管理等功能，营业员通过界面提交一个订单请求，如果订单请求通过业务规则的校验，则会创建一个订单对象，订单对象的创建会触发订单流程的创建，订单流程流转的过程中，会在各个节点创建工单，也会调用其它子系统开通服务，比如调用物流发货。订单流程完成后，订单对象的状态也完成。实际的系统比这个要复杂，这里仅仅为了阐述思路，做适当的简化。</p> <p>从上面的例子，我们可以识别出几个模型:订单、工单、订单流程，订单、工单、订单流程都是stateful的、其state的变更会导致其它对象的状态变更或者服务的执行。</p> <p>在展现层，展现各个模型是有章法的，比如创建订单的界面总是一样的，处理工单的界面也总是一样的，展现订单的界面也总是一样的。因此，我们可针对指定的对象的某种需要展现的状态，提供合适的展示构件（WEB TAG）来展示它。</p> <p>在持久层，因为对象总是持久化到一张表当中的，因此，可用一些ORM的框架来持久化对象，而不是开发人员针对每个场景去写SQL，复杂的关联查询可以使用类HQL。</p> <p>各对象之间的关联操作通过事件驱动。</p> <p>举一个订单创建的例子：</p> <p>1、开发做的工作：</p> <p>&nbsp;&nbsp;&nbsp; 1）使用元数据定义订单的数据结构，包含持久化元数据、基本属性元数据、字典元数据；</p> <p>&nbsp;&nbsp;&nbsp; 2）定义订单状态机，以及状态变迁的规则；</p> <p>&nbsp;&nbsp;&nbsp; 3）建模订单处理流程；</p> <p>&nbsp;&nbsp;&nbsp; 4）定义订单请求处理规则流，并发布为一个受理订单请求的服务；</p> <p>&nbsp;&nbsp;&nbsp; 5）开发订单创建界面，使用订单WEB构件来展示订单对象；</p> <p>&nbsp;&nbsp;&nbsp; 6）定义事件，以及事件的监听服务；</p> <p>2、系统执行流程：</p> <p>&nbsp;&nbsp;&nbsp; 1）营业员打开订单创建界面，系统获取订单对象的元数据，生成订单创建页面；</p> <p>&nbsp;&nbsp;&nbsp; 2）营业员点击订单创建界面的提交按钮，调用受理订单请求的服务；规则流执行，如果规则校验错误，则返回错误，如果成功，则创建订单，返回成功；</p> <p>&nbsp;&nbsp;&nbsp; 3）因创建订单，导致订单的状态变为创建状态，触发订单创建事件；</p> <p>&nbsp;&nbsp;&nbsp; 4）订单创建的监听服务流程服务接收到事件，触发订单处理流程的创建；</p> <p>&nbsp;&nbsp;&nbsp; 5）流程执行的过程中编排第三方系统服务；流程执行结束后，触发订单流程结束事件，流程结束事件的监听服务订单管理接收到事件，触发状态机变迁，订单状态变为完成。</p> <p>上述开发做的工作全部可通过配置完成。后续如果增删字段，修改元数据即可，要增删改业务规则，调整业务规则即可，要调整实体状态，修改实体状态机即可。</p> <p>业务平台要致力于对状态机、业务流程、SEP、元数据、领域化的WEB构件的实现，并将其有机整合。</p> <p>&nbsp;</p> <p>写的比较乱，过几天再整理一下。。。</p><img src ="http://www.blogjava.net/landy/aggbug/370794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2012-02-26 17:12 <a href="http://www.blogjava.net/landy/archive/2012/02/26/370794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向领域的业务平台设计（一）</title><link>http://www.blogjava.net/landy/archive/2012/02/26/370791.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Sun, 26 Feb 2012 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2012/02/26/370791.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/370791.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2012/02/26/370791.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/370791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/370791.html</trackback:ping><description><![CDATA[<p>毕业后，做了很多年的中间件，有工作流，有数据持久层框架，还有个类似tomcat的server等，一直在思考，一个最适合业务的平台应该是什么样子的。因一直没有业务经验，因此，尽管有一些想法，但是也不知道这些想法靠不靠谱，最近一年参与了一个CRM项目的设计，积攒了一些业务经验，心中的想法逐渐清晰了起来，也有了一些底气，写下来跟大家交流探讨。</p> <p>就如同变化多端的八卦卦象是由乾、兑、离等8个基本卦象组成，万事万物是由数种原子构成，形态各异的高楼大厦是由砖头和砂浆砌成，应用也有构成其的“元”，即构件。</p> <p>业务应用是分层的，典型的分层是展现层、流程层、服务层、数据持久层，每一层次的关注点都不同，构件也不相同，比如一个业务逻辑层的构件输出的数据，会通过展现层的构件来展现在界面上。且各层之间的贯通黏合（如MVC中的Controller层就是黏合逻辑），通常要耗费比较多的开发精力，一个好的业务平台，除了在各层次分别提供可复用的构件，需要能够减少各层黏合的工作量。</p> <p>面向特定领域的业务平台的易用度与其适用面是鱼和熊掌的关系，针对特定领域，要越易用，则平台能力就要越面向特定领域，则越不通用，导致适用面越窄。因此，一个好的平台，要注意分层，比如分成通用的构件和领域化的构件。业务用户可按需使用。同时，还需要在各层次开放定制能力，供业务用户在各层提供领域构件。</p> <p>现在的产品交付都是解决方案级的交付，解决方案由多个系统或子系统构成，一个部门，一个项目组通常只是提供解决方案中的一个部件，负责端到端的业务功能中的一个环境，因此，需要支持构件的组装，以形成更大粒度的构件，支撑软件复用与集成。</p> <p>开发一个子系统粒度的构件通常是一件很复杂的事情，如CRM，需求琐碎、变化频繁、不同客户要求不尽相同，如果缺乏一个好的支撑平台，人力成本会很高，TTM也会很长，因此，一个好的业务平台，也需要能够支撑快速的构件开发、定制。</p> <p>解决构件的组装和集成，已经有比较成熟的技术了，如ESB、SCA等，IBM、Oracle等大厂商都有提供集成化的开发环境和执行环境。但如何支撑构件的开发这块，各大厂商也有支撑，比如在展现层，Oracle有ADF，在流程层，IBM和Oracle都提供了BPM，在service层，IBM和Oracle提供了规则引擎，VMWare的Spring，在持久层，Oracle提供了Toplink，还有就JBOSS大名鼎鼎的Hibernate。所有前面提到的这些都是业务无关的技术部件，且各层之间的靠业务开发人员自己来黏合，还是不够领域化。因此，一个业务平台，仅仅去重复制造IBM、Oracle造过的轮子，是完全没有竞争力的（这里不算成本）。面向特定领域，评判一个业务平台是否优秀的标准是：</p> <p>1、是否提供了丰富的领域构件？</p> <p>2、是否能够节省业务开发人员黏合各层的工作量？</p> <p>3、提供了什么样的机制来应对需求变化？比如有的客户要求多加个字段、加个校验，有的客户要求少个字段、少个校验等等。</p> <p>待续。。。</p><img src ="http://www.blogjava.net/landy/aggbug/370791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2012-02-26 15:04 <a href="http://www.blogjava.net/landy/archive/2012/02/26/370791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CXF使用JMS作为传输协议的配置</title><link>http://www.blogjava.net/landy/archive/2009/08/30/293230.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Sun, 30 Aug 2009 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2009/08/30/293230.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/293230.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2009/08/30/293230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/293230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/293230.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/landy/archive/2009/08/30/293230.html'>阅读全文</a><img src ="http://www.blogjava.net/landy/aggbug/293230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2009-08-30 21:50 <a href="http://www.blogjava.net/landy/archive/2009/08/30/293230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速构建面向服务的应用-2</title><link>http://www.blogjava.net/landy/archive/2008/11/19/241510.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Wed, 19 Nov 2008 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2008/11/19/241510.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/241510.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2008/11/19/241510.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/241510.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/241510.html</trackback:ping><description><![CDATA[<p style="text-indent:21.0pt"><span style="font-family:宋体;">总结一下，个人认为企业应用的核心组成要素是&#8220;数据</span> + <span style="font-family:宋体;">服务&#8221;，</span>
<span style="font-family:宋体;">而服务又分为原子服务，聚合服务，流程服务。权限也是一种数据，供&#8220;权限服务&#8221;消费。后面暂不考虑权限处理。信令流因为用得少，很多人可能都不知道是什么东西，这里也不考虑，如果遇到了记得使用流程技术把信号的处理也流程化就可以了，可参考</span>apache<span style="font-family:宋体;">的</span>SCXML<span style="font-family:宋体;">，虽然号称是个状态机引擎，但是请君用你的慧眼观察一下它的</span>schema<span style="font-family:宋体;">，显然是一个活动图。</span></p>
<p style="text-indent:21.0pt"><span style="font-family:宋体;">接下来的推导分为两个阶段，第一阶段先推导支撑技术，第二阶段再推导以什么样的开发方式将这些支撑技术串起来，达到快速开发的目的。</span></p>
<p style="text-indent:21.0pt"><span style="font-family:宋体;">下表中列出了对上面的核心组成要素（数据</span>+<span style="font-family:宋体;">服务）的一些支撑技术：</span></p>
<table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border-width: initial; border-color: initial; ">
    <tbody>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">要素</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">支撑技术</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">考虑</span></p>
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">数据实体</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><font  face="宋体"><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">Java</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">，</span><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">sdo</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">，</span><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">c++</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">等等</span></font></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><font  face="宋体"><br />
            </font></p>
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">原子服务</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;">Java<span style="font-family:宋体;">，</span>c++<span style="font-family:宋体;">，</span>c<span style="font-family:宋体;">，脚本等等</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">没什么可说的，码肯定是要编的</span></p>
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">聚合服务</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;">SCA</p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">用</span>sca<span style="font-family:宋体;">来将原子服务装配成聚合服务。如果想要使用什么数据转换啊，接口映射啊，安全控制啊之类的特性的话也可以引进</span>ESB<span style="font-family:宋体;">，作为</span>SCA<span style="font-family:宋体;">的一种</span>container<span style="font-family:宋体;">。</span></p>
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">操作流程</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">实现一个</span>SCA<span style="font-family:宋体;">中的</span>container<span style="font-family:宋体;">，接受操作流程的描述文件的作为执行文件</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span>View
            process</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">在</span>web<span style="font-family:宋体;">应用下，采用一种</span>webflow<span style="font-family:宋体;">的实现，</span>swing<span style="font-family:宋体;">下就自己写把。</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span>Business
            process</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;">WFA<span style="font-family:宋体;">类流程，</span>EOS or OBE<span style="font-family:宋体;">类似的工作流引擎，可直接将</span>EOS<span style="font-family:宋体;">或者</span>OBE<span style="font-family:宋体;">提供的</span>API<span style="font-family:宋体;">作为一个原子组件</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            </td>
        </tr>
        <tr>
            <td width="189" valign="top" style="width: 142pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p>Orchestration Process</p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;">EAI<span style="font-family:宋体;">类流程，用</span>ODE<span style="font-family:宋体;">，一个</span>bpel<span style="font-family:宋体;">引擎，也作为</span>SCA<span style="font-family:宋体;">的一个</span>container<span style="font-family:宋体;">，</span>BPEL<span style="font-family:宋体;">作为一种组件实现方式</span></p>
            </td>
            <td width="189" valign="top" style="width: 142.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            </td>
        </tr>
    </tbody>
</table>
<p style="text-indent:21.0pt"><span style="font-family:宋体;">下面在列一些辅助支撑技术，这些技术是为了让企业应用这些大厦能够构建的更快，毕竟盖房子，有了水泥和砖是不够的，还要有扁担，簸箕等等。</span></p>
<table border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border-width: initial; border-color: initial; ">
    <tbody>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">作用</span></p>
            </td>
        </tr>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">元数据技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">利用元数据描述数据实体，以及对数据实体、实体属性的约束、权限等信息，可以基于</span>RBAC<span style="font-family:宋体;">的权限系统设计思路，将用户组织机构与权限关联起来，实现自动生成页面时，对特定用户的权限控制，等等其它的东东。</span></p>
            </td>
        </tr>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">表单生成技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">根据元数据生成表单，支持可视化的定制表单布局等，支持生成</span>jsp<span style="font-family:宋体;">等，如果需要多种展现，可以生成多种特定的展现实现，如</span>swing<span style="font-family:宋体;">界面等</span></p>
            </td>
        </tr>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">图形化建模技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">可视化的建模</span>view process<span style="font-family:宋体;">，</span><span>Orchestration
            process</span><span style="font-family:宋体;">，</span>business process<span style="font-family:宋体;">，</span>operation process<span style="font-family:宋体;">等</span></p>
            </td>
        </tr>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">图形化组件装配技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">可视化的将组件装配成大粒度组件等</span></p>
            </td>
        </tr>
        <tr>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><span style="font-family:宋体;">代码生成技术</span></p>
            </td>
            <td width="284" valign="top" style="width: 213.05pt; padding-top: 0cm; padding-right: 5.4pt; padding-bottom: 0cm; padding-left: 5.4pt; ">
            <p style="text-indent:0cm;"><font  face="宋体"><span style="font-size:10.5pt;
            font-family:宋体;Times New Roman&quot;;">根据元数据生成数据实体、</span><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">DAO</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">代码等</span></font></p>
            </td>
        </tr>
    </tbody>
</table>
<span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">这里这个</span><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">SCE</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">大致包括一些什么东西就清楚了，下面用一个序列图来表示用户基于</span><span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">SCE</span><span style="font-size:10.5pt;font-family:宋体;Times New Roman&quot;;">的一种自顶向下的开发方式。当然也应该支持自下而上。</span>
<img src ="http://www.blogjava.net/landy/aggbug/241510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2008-11-19 22:55 <a href="http://www.blogjava.net/landy/archive/2008/11/19/241510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也谈JBI的未来</title><link>http://www.blogjava.net/landy/archive/2008/11/18/241194.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Tue, 18 Nov 2008 10:59:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2008/11/18/241194.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/241194.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2008/11/18/241194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/241194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/241194.html</trackback:ping><description><![CDATA[JBI号称java领域的ESB，也有了一个相应的JSR规范，那么JBI能一统ESB江湖吗？本人十分不看好它，纵观大厂商的ESB实现，鲜有原生支持JBI的，一般都是支持集成JBI。谁愿意在系统中跑两个ESB呢，除非金钱和精力双双过盛。JBI自身的定位是支持基于JAVA的应用们能够以SOA的方式构建起来。它的定位应该是与SCA+ESB的定位差不多，提供服务总线，服务聚合等功能，坏就坏在它局限于JAVA平台，当前异构系统集成的场景还是很普遍的，一个java服务依赖一个c++服务，而c++服务又依赖于另一个java服务，JBI就搞不定了。而ESB+SCA就能很好的解决这个问题，因此从技术上讲，JBI虽然是个规范，但在SOA不依赖于特定实现的大背景下，有着天生的缺陷，注定是个失败的规范。从业务策略上讲，SOA本来就是IBM等大厂商炒起来的，SCA是IBM，BEA，ORACLE等大厂商联合制定的，各大厂商早就有自己成熟的ESB，自然也不会鸟JBI这个残疾儿。
<img src ="http://www.blogjava.net/landy/aggbug/241194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2008-11-18 18:59 <a href="http://www.blogjava.net/landy/archive/2008/11/18/241194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速构建面向服务的应用-1</title><link>http://www.blogjava.net/landy/archive/2008/11/07/239348.html</link><dc:creator>迷途书童</dc:creator><author>迷途书童</author><pubDate>Fri, 07 Nov 2008 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/landy/archive/2008/11/07/239348.html</guid><wfw:comment>http://www.blogjava.net/landy/comments/239348.html</wfw:comment><comments>http://www.blogjava.net/landy/archive/2008/11/07/239348.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/landy/comments/commentRss/239348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/landy/services/trackbacks/239348.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 快速构建面向服务的应用&nbsp;&nbsp;<a href='http://www.blogjava.net/landy/archive/2008/11/07/239348.html'>阅读全文</a><img src ="http://www.blogjava.net/landy/aggbug/239348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/landy/" target="_blank">迷途书童</a> 2008-11-07 23:50 <a href="http://www.blogjava.net/landy/archive/2008/11/07/239348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>