hongsoft

构客网首页  博客  论坛

 
  SOA我有话说
  用户信息
 
帐号:  新手必读
密码: 保存密码
 
  分类列表
全部类别(204 篇)
我的文章(204 篇)
  按月归档
2004年-09月(62 篇)
2004年-11月(16 篇)
2005年-03月(53 篇)
2005年-11月(6 篇)
2006年-08月(33 篇)
2006年-11月(2 篇)
2007年-07月(10 篇)
2007年-12月(8 篇)
2008年-01月(7 篇)
2009年-05月(7 篇)
  SOA2007 - SOA实践
我们何时迈向SOA
——SOA在中国的整体发展现状究竟如何?
我们如何迈向SOA
——中国企业如何迈出实施SOA的第一步?
我们应采用何种技术
——SOA国际标准SCA/SDO的具体内涵?
我们还需要何种技能
——SOA将如何改变系统架构设计以及项目管理过程?

显示第 1-10 条记录,共 204 条记录 首页 前页 后页 尾页  到第 页,共 21

《模型设计》活动听后感

发布时间:2009年05月31日 作者:hongsoft

阅读次数:417次 类别:我的文章 永久链接 Trackback 
《模型设计》活动听后感

昨天去了趟上海BEA UG的活动,主 题:性能优化中的模型设计。
比较麻烦的路途:地铁2号转1号,再坐43路到枫林路站,不要坐反了,呵呵。
到的时候,会已经开始了;BEA的崔飞飞在讲“BEA Guardian”,感觉是我们的PSO需要使用的一个工具,主要是做“weblogic配置上的调优工具”,和模型设计没有关系,和性能优化也没有关系。学会了两个名词:CR是change request;performance pack性能包大家都知道了。
然后Yanger带我们做了个游戏,还是领会到了其中的一些含义。不过感觉Yanger有点为了说管理而做管理的味道,我对这个不太认同;就如同陈卫俊说的那样:管理主要就是学会怎么样和人打交道。那么怎么样做软件行业技术管理呢?我一直的看法是就是“学会怎么样和程序员打交道”;和程序员打交道是比较难的,方法是“和程序员的代码打交道”,看程序员的代码可以看出他最近在想些什么,感情上有没有问题,甚至可以看出他今天吃了早餐没有,呵呵。
最后就是陈卫俊讲“大规模应用的性能测试模型设计”了。感觉有点偏题,PPT主要给出了部分已经有的结果,却没有讲“怎么样来做模型设计”,可能和他长时间没有奋斗在第一线有关系。讲的内容是比较简单的,当然有些内容说的还可以;包括怎么样在公司做事情,怎么样做管理,应该都是说的他自己的独特感受。
 
本准备去学习一趟的,结果应该说学到的东西有一些,但是不是本来想学的。有几个同事也去了。活动中的蛋糕比较好吃,呵呵。


最近碰到的人和事

发布时间:2009年05月31日 作者:hongsoft

阅读次数:975次 类别:我的文章 永久链接 Trackback 
最近碰到的人和事

5号去参加CSDN英雄大会,回来写了篇后记:
http://blog.csdn.net/hongbo781202/archive/2007/04/09/1557526.aspx。被人评了个“呵呵,这个大会参后感太过专业了”。的确是的,本准备写下我认识的部分人的,怕写了A漏了B,要被B批评,呵呵,就没有写人。昨天又参加了BEA的UG活动,还是有点想法,就记一下最近碰到的人和事吧。

在北京我没有主动和人要过名片,我平常就比较的木,这样的事情我还没有学会,呵呵,需要努力改正一把。不过也收到了100张名片(回来数过,是102张,呵呵)。

葛涵涛是社区的编辑,我到北京碰到的第一个人。他开始一直称我“老师”,让我很不好意思,呵呵。还找了好大一台摄像机要做“实时采访”,弄得机场好多人朝我们这边看,我又不好意思了。用了手去挡,呵呵,这个以后要改正。人虽然不帅也不高,但是以后还是很可能要被采访的,自己应该学习怎么样做好“被采访”的事情。

然后认识了纯月,是个大学老师,长的很帅的。问了好多问题,现在有点后悔毕业的时候没有留校了,不过再一想,没有后悔药的,继续自己的梦想吧。用昨天学习到的51job的总裁的话:”梦想是最大的财富“(可能他也是用的别人的话,呵呵)。

良少也是从上海去的,和我说了不少心里话,非常厚道的一个上海人,呵呵。我喜欢。

到了住的地方就有CSDN的记者来采访,竟然是我同一个市的老乡,不容易啊。老乡介绍了他同事马沛过来,马沛写下了:http://news.csdn.net/n/20070406/102564.html。这个文章当天就被公司同事看到了,后来还被一个老大问我什么“眼神”,呵呵。
阿敏总司令我以前就认识,也见了面。江南白衣我以前也认识,也见了面。呵呵,多谢CSDN了。参观了CSDN的办公环境,挺不错的,我认为比“MS”的环境舒服多了,呵呵。陈瑞江在CSDN有点级别了,也非常的平易,经常见到我就打招呼,可惜我开始不太明白陈瑞江就是他,呵呵。王玉磊小子挺帅的。彭俊挺俊的。
晚上吃饭认识了 楼上平台的孙向惠,学习了一下他们的东西。

6号学习的东西都在上个blog里面说了。周爱民送了本书给我,还签了名。加上CSDN的support org送的,我就收了好多东西了,呵呵。
得了MVB奖,奖杯现在还没有到手,呵呵。
江南白衣坐我旁边,这小子跑来跑去,到处认识人,不好好听课,不是好学生。讲的东西都和SOA有点关系,我还是认真的听了。
周鸿佚(那个字找不到了,呵呵,反正大家都知道我说的是谁)挺能说的,我凭男人的直觉,认为我以后也和他一样能说。张洪禹不错,性格和我有点象,当然比我那是强多了。tangram我大概知道是个什么东西了,也明白他做的东西应该是给技术人员用的。鲍岳桥也去了,呵呵。
下午林锐坐我旁边,这小子动来动去的,碰到机会就上去问问题。问完那个问题,听完周鸿佚那场,就走了。东阮也有人讲课,中间我也收了好多东软的名片,然后我现在老大也是东软出来的,还有昨天BEA UG的speaker也是从东阮出来的,发现东软还挺锻炼人的。
开会中间见了james999;见了王鹤扬。王鹤扬算是美女吧,她的msn的那个什么是这样写的:“真正有气质的淑女,从不炫耀她所拥有的一切,她不告诉人她读过什么书,去过什么地方,有多少件衣服,买过什么珠宝,因为她没有自卑感。”。发现美女一般看见我这样的都没有什么好感觉了,和CSDN的刘洪洁(注意:不是张
洪洁,是美女刘洪洁)看到我的表情差不多,都怪自己长的不帅,哈哈;就直接聊完了会前联系的事情(中间我还接了个电话)。

老乡中间来找了我几次,我太忙了。中午吃饭和纯月一起吃的,SNDA的HR经理来挖人了,呵呵。
broadview的周钧过来给帅锅纯月递了名片,问了好多问题,包括在那个地方做什么都问了
参观MS,发现工作环境也就一般;我一直不太喜欢那样的环境,因为给参观的人感觉好,其实什么都一样的。我现在工作的座位我更喜欢,也每天都有免费的东西吃,但是网上对我们现在公司的环境评价不太好,我真是搞不清楚为什么。看来我真是不希望去非常大的公司发展,呵呵;如果是这样,那最好能够伴随公司长大啦。

中间见到了InfoQ的阿赖和霍泰稳,霍泰稳原来已经被挖啦;不过这么小做总编到底是好事还是坏事呢?
去了“红色经典”吃晚饭,感觉还可以。
7号去长城了,第一次去。中间用了良少的相机,人太多了,把良少在长城上搞丢了;后来我返回碰到他,又陪他去了一次“好汉坡”。合影的时候大家都和蒋涛合影,我没有和他合;然后发现有做sales性质的人都挺能认识名人和高层的,我还不太会,一直都不是“追星族”。我这个方面是不是也应该改改呢?现在还没有想清楚。

回来坐的空客XXX,挺不错的,有些以前没有体验的东西,呵呵,老土了。
下了飞机拦TAXI,发现张洪禹也在拦,与他一起的有个高个。张洪禹先和我打招呼了;进了taxi还欠身和我招手。好歹人家也是老板了,做到这点不容易,我说内心话,这个也许就是他能够拿到VC别人却拿不到的最主要的原因。张洪禹,我要向你这点学习。


模型策略与模拟

发布时间:2009年03月20日 作者:hongsoft

阅读次数:1030次 类别:我的文章 永久链接 Trackback 
大部分BPM系统都提供了某种形式的模拟能力。模拟能力可能是非常简单地模拟一遍流程、也可能是比较复杂的按百分比来模拟流程模型、还可能是想达到支持优化业务的目标。人们经常讨论模拟是否有用,我一般把他们分为两个阵营:模拟乐观派和模拟悲观派。
模拟乐观派期望从模拟从获取很多的细节信息。乐观派希望从模拟中得到流程执行过程中每个人的精确的数量级度量。模拟可以提供这些信息,但是为了达到这个目标,模拟器必须提供精确信息,包括模拟的数量、处理每个活动花的时间、人员处理的准确模型等等。要达到这个目标,我们必须有基本相同的案例、流程参与的每个人也要有基本相同的经验、知识和工作背景。即使满足了这些条件,准确记录这些信息所花的成本,也比模拟所带来的价值多。虽然乐观派期望值过高,但是模拟的确可以提供如下场景的信息:“如果我的负载增加20%,我必须在什么方面增加资源?”;“如果我可以去掉一个活动,我可以减少多少时间的消耗?”。
悲观派不期望任何“不合实际”的东西。形式化的图形模式并不是完全自然的,但是可以帮助我们理解模型。模拟类似调试,它帮助业务分析人员在开始下一步的工作前,发现一些基本的问题。
模型转换策略
对于悲观派,模拟应该被重视。因为它容许业务人员在业务级别之外进行工作,而不需要将模型转换到系统域。在某一级别犯下的错误,在转换后将被放大,所以在进行下一步工作前利用技术手段来判断基本错误是很重要的。
对于乐观派也存在一些问题,业务域模型的模拟与系统域或者运行域也许并无关系。如果模型是转换执行的,那么花费大量时间建立一个精确的工作模型可能并无意义。在业务域很有意义的优化到了技术域可能毫无帮助。在系统域或者运行域的优化可能更有意义,但是这些工作对业务分析人员没有什么帮助。在采用模型转换策略时,模拟将会非常的复杂。
模型保留策略
很明显,采用模型保留策略时,业务分析人员设计的模型与运行期的模型是一致的,模拟需要的优化将更实际。
对于悲观派,采用什么策略好像区别不大。有人可能会说:模型没有被转换,所以在下一步工作前并不需要急于完成模拟工作;但是,模拟可以帮助理解动态场景。因为业务分析和系统集成采用同样的模型,所以他们可以更准确的在模拟模型上进行协作。
结论
总结而言,悲观派不考虑模型是否被转换,只看到了模拟的最基本的好处;乐观派期望从模拟得到非常丰富的数量化信息,但是这实际上只在采用模型保留策略时才有可能。
 
作者:kswenson
翻译:杨洪波

模型策略与性能

发布时间:2009年03月20日 作者:hongsoft

阅读次数:944次 类别:我的文章 永久链接 Trackback 
把模型从一个形式转换为另外一个形式的主要原因是想实现性能改进。
为运行而转换
流程和程序由人编写,但是由机器执行。这些机器在不同的方面有不同的性能表现。模型转换模型可以容许你充分利用这些能力、或者绕开限制,从而让程序运行更快。这就好比有些优化编译器,它们利用代码产生语言转换机器代码,充分利用机器能力而使程序运行更快。
如果不采用编译方式,也可以采用解释方式。这就可以考虑LISPPERLPHPRUBYJavaScript等语言。有时JIT编译器只是在程序运行前才编译代码,但是环境是对技术人员透明的,所以任何人都看不到转换的版本。Java先被编译成中间形式,然后解释执行。编译型语言和解释型语言间的优劣各人都有不同的意见,这主要取决于对性能的要求。数据库服务器的核心对性能的要求非常高,所以需要一个性能高度优化的语言。一些web开发的环境采用解释型语言,因为对这些应用来说,CPU的性能并不关键。
模型转换策略也采用这样的方案,它对业务分析人员用图形表示,然后在运行环境中转换为性能优化的模型来运行。
为开发人员而转换
采用模型转换策略的另外一个原因,是为系统集成人员提供一个方便的界面。如果开发组中有java程序员,那么把BPMN模型转换为java可以让技术人员更有效工作,因为他们不需要去了解BPMN的约束。
这个转换不一定是从BPMN到编程语言的转换,也可能是BPMNBPMN的转换。它们的区别是:BPMN图形代表了责任的流转过程,而系统域模型代表了数据的流转过程。
模型转换是把一个合适业务分析人员使用的模型转换为合适系统集成人员使用的模型。如果你的业务流程需要大量的系统集成人员参与,那么为开发人员所作的模型转换将是非常有意义的。
模型保留策略
保留模型的重要原因,是在流程的生命周期中保持各步骤的一致性。系统集成工程师与业务人员在同一个模型下工作,运行期的模型也是与业务人员用的模型相同的。
如何决策
如果你有一个BPM项目,涉及到很多的编程工作用来和系统集成,而相对而言业务域的工作比较少,那么模型转换策略将使你能够更优的使用系统工程师。他们将可以用他们以前用的工具和经验来工作。
如果你的项目是个大型的事务交易处理系统,你可能会因为性能的原因而采用模型转换策略。多大算大型呢?你可以看看每月有多少笔流程,乘上每笔流程平均包括的活动数,然后除上每月包含的小时数,那么你就可以知道每小时的活动执行次数。如果每小时的活动次数大于100万,那么你可能需要采用模型转换策略。如果每小时的活动次数在1万左右,那么采用解释的方式是没有什么问题的,即使你的服务器很一般。在两个数字的灰色地带,你需要根据特定的实现和调用的事务的类型来判断。需要注意的是,一些关键业务系统每小时的活动执行数不到1万,这样的项目对性能是不太关心的。
性能方面的基础知识是:程序运行的时间只与5%的代码有关系。如果可以优化这5%的代码,你很可能得到99%的性能提升。这也说明了为什么有时解释型BPM在部分函数被优化过后,运行性能比较高的原因。由此,流程的性能与代码是否编译并没有直接关系,而是更多的与支撑模块是否直接符合需求有关。
web应用中解释型语言广泛流行,这也说明了对web开发来说,CPU的性能并不是关键因素。经验表明,服务器性能更多的与IO带宽又关,而不是与CPU的利用率有关;所以,解释型语言可以改善CPU的运行时间,反过来还能减少数据转换的需求。
结论
大多数项目中,系统工程师的工作比较多,或者活动执行的次数比较多,这样的情况下模型转换策略可以带来更多的灵活性。
 
作者:kswenson
翻译:杨洪波

模型策略,双向互通与敏捷开发

发布时间:2009年03月20日 作者:hongsoft

阅读次数:942次 类别:我的文章 永久链接 Trackback 
在我前面的博客中,我介绍了业务流程生命周期中BPMS可以采用的两个模型策略:模型保留策略和模型转换策略。
我们经常讨论到流程的“双向互通”。流程生命周期是不同的人从不同的角度推进业务执行的结果。一个场景是:业务分析师首先画出流程的高层模型,系统集成人员添加具体信息、从而与其他系统互联。另外一个场景是我们判断流程是否有效时采用的业务流程改进:从业务角度对流程进行改变,然后从生命周期整体进行判断。
在我们只是对流程进行小的调整的情况下,程序员并不希望从零开始执行集成工作。双向互通的理念是:程序员在集成时做的小的改动,可以在业务模型中得到反映。如果做到了这一点,那么业务分析师做了小的调整后,程序员只需要对相应的地方进行小的修改。
模型转换策略下的双向互通
模型转换策略在实现有效的双向互通方面面临巨大挑战。在从业务域转到系统域时,模型的与集成无关的特性被抛之脑外,在这个情况下,系统工程师开始修改模型;修改完成时,所做的修改很难与原始的业务领域模型匹配。
我们也可以管理这些特性。一些平台对业务域的这些特性进行封装,然后传给系统域模型。如果两个模型只有轻微的不同,这样做是有效的;但是,大部分情况下,两个模型有巨大的不同。如果在两个领域中的对象没有一对一个关联关系,那么这些信息将无处存放。
实现双向互通的第二个办法,是在产生的元素中存放标识符,它用来说明该元素从业务域模型的什么部分产生。业务域模型由业务分析师保存,然后修改过的集成域模型可以被导入到相关的业务域模型。如果导入时标识符匹配,那么集成模型就被关联起来,以后可以再次被导出。
即使把模型转换为其他形式,模型转换策略要支持双向互通也是个极大的挑战。
模型保留策略的双向互通
在实现双向互通方面,在生命周期的各阶段保存相同的模型具有极大的优势。我们基本不需要做任何额外的工作。因为模型采用相同的形式保存,只需要保证业务分析师使用集成后的最新版本即可。
业务分析师和系统集成人员可以在相同的模型上同步工作。但是我说的同步不是你做一个调整我做一个调整的同步,而是你打开、修改、保存,然后我打开、修改、保存。编辑流程时,大部分的资源管理系统要求提供锁的方式来取出文件,由此防止偶然的并发冲突。因为我们可以同时进行业务协作,所以工作时不需要长时间的等待,由此实现了更快的生命周期时间。
基于双向互通的敏捷开发
敏捷BPM开发不只是表示快速实现,还表示迭代的实现。敏捷的方法是:实现系统的一部分,实验一下,检查是否能工作;再实现一部分,实验一下,等等。我们每次做小的改变,每次只需要很短的时间。每次迭代都从上次迭代的结果开始。通过这个方式,我们可以避免一个周期中的大工作量的返工。
支持双向互通就可以直接支持敏捷开发。每个迭代中,对业务域进行的技术修改越少,就越能提高效率,因为这些集成的工作将需要重新完成。执行一个迭代需要的工作越多,我们从业务调整得到的价值越少。为了避免浪费,企业应该把技术工作尽量延后执行。
模型保留策略对敏捷开发有明显的优势。因为模型按同样的形式存在,所以在生命周期的不同阶段我们可以在同一个模型上工作。比如业务人员对模型做了5%的变更、技术人员也可以对该模型做5%的变更,变更过的流程可以在没有明显返工的情况下安装到引擎中运行。模型转换策略也可能达到这个目标,但是模型的转换可能防碍这样的并发的工作。
总结
如果你看重双向互通能力和敏捷开发,那么模型保留策略模型是非常合适的。因为没有模型的转换,所以业务分析师和系统工程师在工作中可以把流程前后转换使用。模型转换策略不能提供双向互通能力。
 
作者:kswenson
翻译:杨洪波
原文链接:http://kswenson.wordpress.com/2009/02/12/model-strategy-round-trip-agile-development/

模型策略:保留与转换

发布时间:2009年03月20日 作者:hongsoft

阅读次数:790次 类别:我的文章 永久链接 Trackback 
200810月,在华盛顿召开了BPM技术大会。演讲和介绍结束后的下午,我们边喝边聊:为什么不同的BPM系统区别如此之大?
这个问题到第二天的早餐会上演变成了这样的主题:在BPM技术中,模型保留和模型转换策略分布有什么优缺点?
我们发现大部分已经面市的BPM系统可以分为两类:模型保留策略BPM和模型转换策略BPM
人们强烈表达自己的观点,反对其他不同的看法。一些人认为模型保留策略对流程开发生命周期非常关键,是流程敏捷性的驱动因素;另外一些人认为模型转换策略才是正确和有效的。
这之后,我们举办了一些讨论会来分析两者的区别,并且讨论什么情况下采用什么策略。我会写系列文章来说明我们讨论的结果,本文是第一篇。
基础知识
两个策略对创建一个流程的过程都给予了相似的假设。在BPM的概念里,所有的工作都是变化的。至少有下面三种不同类型的动态:
业务流程使能:在处理一个业务流程的过程中,从最开始到流程最后结束,流程本身有一个动态的结构。流程定义本身并无变化,但是流程实例和上下文记录了流程变化的状态。
流程生命周期:业务流程从最初的概念模型,到流程建模、集成、到最后部署到流程引擎中运行,整个过程是动态的。
业务流程改进:流程运行后,如果要重复应用到下个业务流程应用中,需要有一些变化。这是TQM(全面质量管理)或者业务流程改进。
流程定义本身,会涉及到流程生命周期的不同方面,与不同的人交互。业务流程分析人员需要深入了解流程,并能对流程进行建模。系统工程师需要将流程和组织中其他的系统集程。系统管理员和用户协议与流程进行交互。可能还有人把流程的生命周期分解为四个或者更多的阶段,但是为了我们讨论的简单性,我们认为只有上面的三个阶段。
流程保留策略和转换策略的区别,只与流程开发生命周期有关。他们都支持流程运行与改进,但是他们处理流程生命周期的方法完全不同。
模型转换策略
模型转换策略认为,流程生命周期的不同阶段中,模型应该有不同的存在形式。模型的每个存在形式,都应该与特定的领域相关。
业务流程分析师在业务域中设计高层的模型。他们并不是程序员。高层模型将被转换为合适的模型并提供给程序员。这将提供下面的方法来实现:转换业务域模型到系统域模型;添加新的节点来处理集成活动;或者把流程图形转换为完全新的代表系统交互的模型图。然后,系统工程师在这个模型上工作,并实现与其他系统的集成。最后,再转换成运行模型。
模型转换策略来源于传统的程序和系统开发。在软件工程领域,高层模型经常通过UML等可视化语言表达出来,然后被转换为程序语言比如C++等。有些人认为UML被认为无效,从而被其他的语言代替。高层模型的部分含义用新的形式和新的方法来表达。通常而言,这个转换是松耦合的,也就是部分含义在新的模型中不复存在。比如C++被转换为机器码后,变量名称不存在了,因为机器码不需要变量名称。在软件开发领域,这样的转换是正常的。
回到BPM的例子,业务分析师可能在业务视图中用一个活动来代表文档审核。这个可能被转换为如下的情况:一个发送邮件来通知相关人员的活动;一个从文件库中检查文档的活动;一个在回复延迟的情况下发送提醒通知的活动;一个等待回复的活动。程序员可能扩展这些活动,来处理异常情况和超时等业务人员表达不了的内容。然后这些可能被再次转换,变成可执行的代码。
模型保留策略
另外一个可选的方法在流程生命周期的各阶段保留相同的形式。这个策略在人工BPM产品中非常常见。
生命周期与其他方法相同:业务人员画出业务视图代表了高层模型,这个模型包括了组织中的人员认为有用的主要活动。
然后程序员用这个流程模型来实现与其他信息系统的集成。不同的是,集成过程不改变原来的流程模型。我们不转换模型,不用系统节点代替人工节点,而是将原来的节点继续保留,并在已经存在的节点上做附加设置,来完成集成工作。
然后,流程模型被部署到流程执行引擎,并且不附带任何的转换。引擎中的活动数与业务人员画的活动数完全相同。这个符合基本的原则“你画的就是你执行的”。
模型在整个系统中,不存在任何形式的改变。最起码没有生命周期中的改变。有可能开发人员想要改变原来的模型,但是这样的改变是与业务人员联合完成的,因为他们都在同样的模型上工作,都看见同样的流程形式。
分析
不同的BPMS产品可以被分成两类:支持模型保留策略或者支持模型转换策略。哪个更好了?读过我的博客的朋友可能已经知道答案,这个取决于你想做什么,取决于你想实现什么样的业务流程。
我们可以做的,是从下面的七个维度,来比较两个策略的不同的能力:
1.    支持Round-Trip
2.    处理运行时的问题
3.    分析数据的有效性
4.    模拟与优化流程的能力
5.    程序员使用的简单性
6.    敏捷与迭代开发
7.    运行状态的可见性
从这个比较,我们可以发现什么情况下合适用这个策略、什么情况下用那个策略。我将在后面的博客中对两个策略进行比较分析。
 

BPM之大局势(2008版)

发布时间:2009年02月13日 作者:hongsoft

阅读次数:8138次 类别:我的文章 永久链接 Trackback 
到今天,jBPM已经成为开源工作流领域最受欢迎的开源产品(这个好像不需要给证据了);而BPTrends报告告诉我们,当今的BPM市场中,BPMN、BPEL占有的市场份额分别为41%、26%,远远超过日渐式微的XPDL(6%的市场份额)。
《大局势》发表后的2006年,我以个人名义为深圳国税局信息中心等多家企事业单位提供BPM技术/产品咨询与培训,赚钱的同时一直在思考工作流、BPM相关技术、产品的最终目标。在技术开发、项目实施、BPM咨询、技术培训的过程中,我发现工作流技术还是存在这样那样的问题。在查找了很多的资料以后,我带着这些问题进入了现在的公司做SOA、BPM方面的架构设计工作。
         2008版的《BPM之大局势》就是这两年的架构设计工作经验的总结。
1 BPM总体局势
1.1      我的观点
我的观点,有这些来源:这两年的技术架构经验;这两年与外面的客户和朋友的技术交流;这段时间与同事的交流(很多同事的好的PPT总结);这两年看的>20本的BPM与SOA方面的书。这些观点大都与公司的看法相同,但是本文并不能代表公司观点。
         观点一:在2009年到2010年底,BPEL将发展成为BPM(工作流)的流程执行语言标准。这个观点更多是从开源领域来做的判断,我预测开源BPEL引擎将在这两年出现井喷。大概估计项目实施中会有一半是基于BPEL的,基于开源的项目实施中会有70%是基于BPEL引擎的。(不了解BPEL与XPDL区别的请看我写的BPEL本质论
         观点二:在2009年到2010年底,BPMN将发展成为业务流程建模的标准。但是只有它的图形化notation会被大量利用,BPMN语法和语义不会有太大的发展。
         观点三:软件工程领域,业务与技术的一致性将首先在BPM领域得到实现。BPM领域建模、设计、开发、部署的一体化将在2012年左右得到技术支撑与实现。(这个观点隐含的意思是:需要的软件技术人员的素质将越来越高,刚毕业的学生将没有办法实施项目,因为他的综合能力还不够、也没有任何的业务经验)。
         观点四:BPM将会和SOA有越来越多的联系。(我知道很多人对SOA有其他看法,现在也是SOA发展的平原期。但是我还是这个观点。SOA方面的内容我将另外写文章讨论,或者如果我没有时间写文章,大家找我讨论也可以,当然有限于有一定的理解的朋友)。
1.2      Gartner的观点
BPM(业务流程管理)的概念由Gartner在2000年提出,在后来的2005年,Gartner为BPMS(业务流程管理套件)下了明确的定义,并在2007年对这个定义按市场情况做了扩展。
2006年,BPM的市场规模是17亿美元,Gartner预计2011年将达到51亿美元,年增长率为24%,是软件领域的第二块增长市场。
Gartner对BPM领域的技术生命周期分析结果图如下:
 
图一: BPM技术生命周期  (来自Gartner)
技术生命周期可以从两个方面来分析:“技术可见性”和“技术采纳速度”。
技术可见性
Gartner认为每个技术的发展趋势,都符合同一个曲线图:首先是技术产生;被媒体宣传后,用户对技术产生过高的期望,认为可以解决自己的所有问题;当用户发现这个新技术的缺点后,技术发展进入萧条期;部分用户试用新技术,这个技术慢慢被更多的人接受;发展一段时间后,进入平原期。
在BPM领域,Gartner认为BPP(业务流程平台)处于产生期,BPMS(业务流程管理套件)处于顶峰期,Pure-Play(单一类型工作流)处于萧条期,BPA(业务流程分析)和BRE(业务规则引擎)处于平原期。
本篇将把BPM按业务流程的类型分解为系统密集型、人工密集型、文档密集型和规则密集型分别进行讨论,以此讨论BPMS的技术发展特点。
技术采纳速度
Gartner认为技术被主流采纳的速度,与技术的生命周期并无关系。有可能一个新技术的生命周期很长,但是一直没有被主流采纳;有可能一个新技术发展到了萧条期,但是主流采纳率还是很高。
技术采纳速度表示某个技术过多长时间会被主流认同。在BPM领域,Gartner认为,BPMS、BPA(业务流程分析)和BRE(业务规则引擎)会在两年内被主流采纳;SOA(面向服务架构)会在2-5年内被主流采纳;BPP(业务流程平台)会在5-10年内被主流采纳。
2 BPM产品发展局势
Gartner有个Magic Quadrant的图表,对全球最牛的BPM产品做过分析,一般是把它和上节的Hype Cycle联合起来使用的。不过我这里不用它的观点了(需要这个图的可以留下联系方式,我把PDF发给大家看看),我用bruce silver的观点。
Bruce silver是个独立的BPM评论家(和古时的言官一样,专门写批评文章的人),也做BPM的培训。他对BPMN还是蛮懂的,是我的BPMN启蒙老师;但是他对BPEL其实并不真正懂(当然了,我是从技术角度做的要求,好像有点过份了)。
按我以前的习惯,本文把BPM产品分为三大类:豪门、中产、寒门。
2.1 BPM豪门产品
豪门指的是这几家:IBM、Oracle、SAP(来还有BEA的,不过已经不存在的公司,就不说了。)
豪有一个共同的特点:就是他们不只是做BPM,一般来说他们同时也是SOA厂商。豪门的产品多,历史负担重;所以他们的产品使用过程都很复杂(请参考Oracle的产品包袱)。他们的市场主导能力一般都比较强,所以他们一般要把产品卖得很贵,而且不太考虑技术人员的方便性。
豪门BPM产品是这样的情况:支持BPMN建模,导出BPEL文件;另外支持BPEL编辑,但是不可以导回到BPMN中去;流程引擎基于BPEL。Bruce silver用Roundtripping Revisited骂了这个做法。
2.2 BPM中产阶级产品
BPM领域的中产从Gartner的Magic Quadrant图表而来,并且只取其中的“领导者象限”的公司的产品。在Magic Quadrant图表中,这些产品比豪门的产品要更具有技术前瞻性。
这些中产包括:Appian、savvion、pegasystem。
Appian 基于 BPMN 建模,业务与 it 共用一种模型。 Appian 设计和管理工具都是基于 BS 结构。在设计过程中分析人员可以定制模型,具体代码可以在 Appian 的 studio 中实现。 Appian 的表单是基于 Web 方式的定制。 Appian anywhere 是第一款基于 BPM 技术的 SaaS 产品。
Savvion Business Manager是一款非常成熟的BPM产品, 人工流程功能较为强大,其策略是提供免费的建模分析工具,基于 BPMN 建模。并建立相关流程分析社区。
SmartBPM 包括 PegaRULES Process Commander, Process Analyzer, and Process Simulator, 和一些其他的模块。其中 PegaRULES Process Commander 提供了一种以规则图元的方式统计建模。可以向 BPEL , COM 等各种技术暴露接口,也可以调用 BPEL , MQ 等格式的接口。目前提供了 BPM as a service 平台。其中以人工活动最为著名。
说明一下,上面的内容来自于我们公司的特务机关:竞争情报分析小组。感谢这些特工们!
中产BPM的产品特性是:在BPMN上添加属性,用BPMN作为业务建模与设计建模的唯一标准,这种解决方案是不存在Roundtripping的问题的。Bruce silver比较同意这个做法。
2.3 BPM寒门产品
我主要还是做技术的,从2004年用Shark和jBPM开始,我就在学习使用BPEL;后来在项目实施中也使用了jBPM_BPEL。最近两年在工作之内和工作之外主要使用、改造了下面的BPEL引擎实现:jBPM_bpel;ODE;ActiveBPEL。所以本节是本文的重点,这三个开源的BPEL引擎实现也是我推荐的重点。
jBPM是基于jPDL实现的工作流引擎,相信很多读者已经有所了解。jBPM_BPEL与jBPM_jpdl共用了同一个内核,实现的方式和理念基本完全相同。jBoss正在把他们的共同点抽取出来,取名PVM(流程虚拟机)。PVM上面可以运行jPDL、BPEL、页面流等流程语言。jBPM_BPEL是API驱动的BPEL实现,没有实现Bpel4People,默认运行在jBoss上,提供jms方式的对外API。但是我以前用的时候,是改造为tomcat上运行的。这个改造有一定的工作量,如果想在tomcat等servlet容器上运行,而又不是非常了解BPEL的基础,且没有外界咨询人员的培训或者帮助,推荐用ODE或者ActiveBPEL
ODE在apache下面,是Intalio捐的开源项目。ODE是基于axis2实现的BPEL消息接收器,比较合我们开源人的胃口。ODE只实现了BPEL规范,没有实现Bpel4People;Intalio另外有个开源项目叫 Tempo,实现了Bpel4People,但是这个项目没有被Apache接收。Tempo对B4P的实现不纯,有很多自己的特有的技术点,被Apache否决掉了。
ActiveBPEL相信大家都知道了,我在04年就写过关于他的文章,不过那时版本比较低,也只是简单的用用。最近在扩展它的最新的开源版本。ActiveBPEL支持B4P,是目前最完善的BPEL引擎。
欢迎同大家交流上面三个产品的架构、使用场景、扩展支持等内容。
3     BPM技术发展局势
这里的技术发展局势还是会结合前面的Gartner 的Hype Cycle图来进行分析。
3.1 系统密集型BPM
系统密集型BPM的特点,是在应用系统之间,通过实时消息的方式或者定期执行逻辑代码的方式,来实现松耦合的逻辑或者数据集成。它对应了图1中的BPM for C&SI(系统集成的BPM)和Integration Suites(集成套件)。
Integration Suites通过高效的实时消息,在异构系统之间转换和传递数据信息,它为各应用系统提供了统一的集成方式(这个方式是企业内部标准),也提供了可伸缩的技术平台,为消除信息孤岛起了很大作用。Integration Suites的缺点是人工操作支持不足、业务建模与流程建模脱节,所以它的发展处于平原期。
BPM for C&SI有Integration Suites所拥有的一些优点,并在功能特性上做了一些扩展。BPM for C&SI在流程运作中不支持人的参与,但是在业务异常时,可以有灵活的机制通知责任人进行处理;可以通过技术适配器或者定制适配器把应用系统的逻辑和数据封装成Web服务;可以利用应用系统本身的Web服务;还可以利用第三方ESB提供的Web服务。
从图中知道,BPM for C&SI发展处在高峰期,Integration Suites处在平原期,他们都要过2-5年才能被主流所采纳。
3.2人工密集型BPM
人工密集型BPM的特点,是流程的参与者以人为主,关键的流程流转由人的处理结果决定。它对应了图1中的BPM Pure-Play Tools。
人工密集型BPM是一个以工作流引擎为核心、由流程管理系统与个人消息桌面两部分组成,通过在计算机上定义流程与表单,使电子表单按予先定义好的流程在各成员之间传递,最终归档于数据库。。主要功能包括工作流、文档管理、公文处理、行政办公、协同工作、ERP及应用集成等。
从图中知道,人工密集型BPM的发展处在萧条期,但是基本已经被主流所认同和采纳。
3.3文档密集型BPM
文档密集型BPM的特点,是流程围绕一个文档的制作、审批、发布、归档进行。一般来说,业务信息存放在文档中,而流程控制信息、关键业务状态由流程来控制。它对应了图中的ECM(企业内容管理)和ECMS(企业内容管理套件),当然,ECM本身不仅仅是文档密集流程,它包括了对企业的知识管理的整套方法论、工具和平台,但是文档密集型BPM是ECM的核心与支柱。
文档密集型BPM一般会提供文档管理系统的接口,可以处理Office、PDF、SVG等通用文档格式,并能够通过Adapter来处理企业内部私有的文档格式,然后在展现层对各种格式的文档进行显示和再加工。
从图1中知道,文档密集型BPM的发展处于平原期,在5年内会被主流所认同和采纳。
3.4 规则密集型BPM
规则密集型BPM的特点是流程涉及到大量的路径与分支判断,而且这些判断的标准经常会发生变化。它对应了图1中的BRE(业务规则引擎)。
规则密集型BPM一般内置规则引擎,它充分利用规则引擎的规则建模、动态配置能力,具备较强的灵活性。如果用一般的流程来实现规则,则流程图会比较复杂,业务人员也不易看懂,规则变动时技术人员的工作量也比较大。规则密集型BPM中的流程引擎与规则引擎密切结合,支持动态的行为变更,并能利用规则引擎高性能能力,实现了真正的业务与IT的协调。
从图1中知道,规则密集型BPM的发展处于平原期,但是基本已经被主流所认同和采纳。
4 总结
Gartner对我们学习与掌握BPM相关技术的建议图如下:
 
图二: BPM技术学习优先级  (来自Gartner)
在实际应用中,用户一般需要前面讨论的各种类型BPM的综合能力。而充分利用流程管理的思想,灵活、稳定、高效地支撑企业业务需求,是BPM的最终目标。
 
 
作者:杨洪波,笔名HongSoft。SOA与BPM方向架构师。作为OASIS SDO技术委员会专家,参与EOS6.0的架构设计工作;作为OASIS BPEL4People技术委员会专家,参与BPS6.x的架构改进工作。在《程序员》《软件世界》《银弹》等杂志发表BPM/SOA文章十余篇。以个人名义为深圳国税局信息中心等多家企事业单位提供BPM技术/产品咨询与培训。

SDO性能优化

发布时间:2008年06月12日 作者:hongsoft

阅读次数:5085次 类别:我的文章 永久链接 Trackback 
SDO性能优化
1       性能分析
1.1   环境
测试机器:192.168.1.181 windows IG内存
数据库机器:192.168.1.61 oracle 10g
公司内网环境。
1.2   分析方法
首先,为了方便春龙的后续工作,采用了CVS的已经有的代码(eos-data-xpath-perftest项目的DASTestCase.java测试类)
其次,为了屏蔽测试机器的CPU波动和网络环境变动所带来的影响,建立了DAS和JDBC两套测试,JDBC方式主要用来作为 选取 有效 测试数据的标准值。
最后,单次测试的值都不可靠,所以每次测试都循环100遍,取100遍的和来进行分析。
1.3   优化前的数据
先看总体情况的数据:(下面的数据都是100次的总和,单位都是纳秒)
测试方法
数据库连接
Criteria转换
执行时间(ps,rs,数据转换)
DAS
273xxx
1xx
xxxx
JDBC
7523 307
 
上表中,从这里我们看到,DAS执行时间比数据库连接多一个数量级,比Criteria转换也多一个数量级。是优化的重点。
 
DAS的执行时间是 100次的总和,包括了 准备PrepareStatement,取ResultSet和 转换成SDO的时间。我们把它分解到每次,在单次中,执行时间的具体分配如下:
准备Criteria
PrepareStatement
取ResultSet
rs->SDO
3xxxx
xxx
368xxxx
314xxxxx
从表中我们可以看到,rs->SDO比 “准备Criteria”多两个数量级,比PrepareStatement多两个数量级,比ResultSet多一个数量级。是优化的重点。
 
 
2       性能优化思路
2.1   优化DataObject.set
RsàSDO调用最多的是 DataObject.set方法,所以首先需要优化它。
我们大部分的情况都是 非openContent的SDO,也都是非Many的属性;但是我们现在的处理方式中,统一考虑了这样的两个特殊情况。
我们的优化思路是:首先考虑 80%的情况,直接处理;不满足再去考虑20%的情况。
所以在set方法中增加如下代码:
int index = ((ExtendedType)type).getPropertyIndex(path);
       if (index >= 0) {//open
           ExtendedProperty property = (ExtendedProperty) getType()
                  .getProperties().get(index);
           if (!property.isMany() && !property.isReadOnly()
                  && property.getType()!=null && property.getType().isDataType()) {//many
              propertyValues[index] = value;
              return;
           }
           setManyNotOpen(index,property, value);
           return;
       }
 
2.2   减少对DataObject的set 和get的调用
调试程序,主要定位对DataObject的set和get的调用,发现如下这些地方比较影响性能,从功能上也只是记录Hibernate的log,可以去掉:
1)  的loadFromResultSet方法是把 某一行ResultSet转成SDO对象的一部分,它会记录当前对象的信息,可以去掉。Loader.java
2)  的getRow方法是把 某一行ResultSet转成SDO对象的另外一部分,可以去掉。Loader.java
2.3   查看其他部分
其他部分都与功能直接相关,不能去掉。
3       性能优化后的数据
用与前面同样的环境,选与前面的JDBC接近的基准数据,优化后的值如下:
先看总体情况的数据:(下面的数据都是100次的总和,单位都是纳秒)
测试方法
数据库连接
Criteria转换
执行时间(ps,rs,数据转换)
DAS
2xxx
122xxx
4xxxxx
JDBC
8517 281
3393 5402 0 (得到rs)
1903 4732 01 (rs->javaBean)
 
在单次中,执行时间的具体分配如下:
准备Criteria
PrepareStatement
取ResultSet
rs->SDO
35xxxx
1xxxx
3xxxxx
22xxxxx
4       总结
Rs->SDO的优化率xxxxx
这个优化率只对 最普通的DAS操作有效,对 openContent和isMany属性没有什么优化。
在最普通的DAS操作情况下,我们基本是做到了 直接 放值和直接取值,可优化的空间已经非常小。
 
执行时间的优化率为 xxxxxxxx
 
这样的优化程度还不够,需要再进行其他方法的优化。

BPEL与XPDL的定位区别

发布时间:2008年06月03日 作者:hongsoft

阅读次数:6334次 类别:我的文章 永久链接 Trackback 1条评论
根据最近对几个BPEL产品的研究,根据以前对XPDL的了解,分析了BPELXPDL在业务目标方面的主要区别。
定义、缩略语:
XPDLThe XML Process Definition Language。
BPELBusiness Process Execution Language
背景描述:
公司最近交给我的任务之一,是通过分析BPEL的业务目标定位,来帮助我们分析在EOS产品中怎么利用BPELBPEL4People,HumanTask),实现产品的“帮助用户快速构建稳定,易用,灵活,易管控的SOA应用”的目标。
最近两周研究的产品主要有下面几个:
1)ActiveBPEL(包括Designer和ActiveVOS和ActiveBPEL Server)
2)Apache ODE
前期的工作学习中,已经学习过或者使用过的产品有:
1) IBM Websphere Process Server
2) JBoss jBPM-BPEL
3) BEA Aqualogic BPM Suite
研究的技术和规范内容主要是:
1)BPEL2.0
2)BPEL4People 和HumanTask
3)下载了最新的XPDL2.1规范,重新看了一遍
4)重新看了一遍BPMN(没有作为重点)
下面主要讨论的是BPEL和XPDL的业务目标方面的区别,对于技术方面的区别,会根据工作情况,在后面再另外写文档说明。
1       业务分析人员的视角
1.1   业务分析人员从用户的视角来做过程建模
业务分析人员没有能力从系统的视角来对过程做建模,他们建模的结果可以告诉我们的是:用户执行什么样的操作来完成整个过程;他们建模的结果不可以告诉我们的是:系统怎么样对用户的操作做出反应。[请参见jBPM的leader的博客:http://blogs.jboss.com/blog/tbaeyens/2006/07/05/About_BPM_miracles_and_what_you_can_expect_in_real_life.txt]
我们举个例子来说明上面这段话的意思:对于普元今年做的招聘活动,会有一个流程来对应。对于HR的xiaofang(严格说来,她是一个用户,不是一个业务分析人员;但是业务分析人员的需求也是从她这里获取的)来说,下面这个图她是能够看明白的:
上面是招聘活动的状态图,业务人员基本可以看懂;但是xiaofang肯定不能告诉我们技术人员说:是的,这个就是我们的流程。因为这个图其实还没有描述“用户执行什么样的操作来完成整个过程”,我们在状态图上加上部分“用户活动”,对xiaofang可能更容易明白一点:
在图上加的几个注解,可以帮助用户和业务人员和技术人员更好的理解整个流程。上面这个图是状态图和活动图的结合。
要特别说明的是:业务人员不会去根据系统边界,消息发送,业务对象等内容来思考问题;上面的图中,不会出现“invoke”一个服务的活动(BPEL),也不会出现“自动活动”(xpdl)。
1.2   业务人员的工具
业务人员的工具当然首先是vendor提供的产品,但是他们还应该有另外一个工具:简化的BPMN。
简化的BPMN的第一层含义:首先应该是BPMN。
比如对于“招聘流程”,其实可以画出多个 上面的那个“状态活动图”:内部推荐的和普通应聘 的“招聘流程”并不相同,初级人员招聘和高级人员招聘也不相同。
Xiaofang不可能在图中用if…else来表达不同的情况,她只能对内部推荐的情况,画一个图给我们;对普通应聘的情况,画一个图给我们……
我们不可能对每个情况定义一个流程的,那样就是硬编码而不是BPM了。所以,业务分析人员需要把xiaofang给的几个情况结合考虑,最后用BPMN画的图大概如下:
是不是比较复杂?有点看不懂?是的,所以我们需要的是“简化的BPMN”。BPMN是一份超过300页的规范。即使业务分析人员决心去掌握所有这些概念,它也是难以思考的。( Michael)这个调查的结论是日常只使用了大约25个BPMN结构。
不过我从BPEL4People的TC的member那里问到的情况是:BPEL4People定稿后,还将去调整BPMN,应对BPEL领域的新的变化。
1.3   分析模型与实现模型的鸿沟
根据上面的图,我们已经得到了分析模型,但是还没有实现模型。
Alast这些以前专攻XPDL领域的学院派,现在也在做BPMN-BPEL的转换等方面的工作;但是需要说明的是,我们不能要求业务分析人员根据BPMN图,直接得到实现模型。这个已经是业界的共识(请参考bpmn-xpdl-and-bpel  和  BPEL implement等等很多文章)。
实现模型还是要靠BPEL
2       的业务定位BPEL
前面的招聘流程的例子中,BPEL的图可能是如下:(请参考BPEL
我们为图取的名称是“Application Service”,它本质上只实现了一个服务,而不是一个流程。流程在哪里呢?流程已经被业务分析人员用BPMN给画出来了,流程图涉及到多个人多个系统多个活动多个状态;而我们的BPEL服务实现,只是实现了一个或者多个服务,它只管理这些服务的生命周期。
3       的业务定位XPDL
实际上,WFMC也认为XPDL与BPEL是不同业务定位的两个标准,它的说明如下:
How Does XPDL Compare to BPEL?
BPEL and XPDL are entirely different yet complimentary standards.  BPEL is an "execution language" designed to provide a definition of web services orchestration, specifically the underlying sequence of interactions, the flow of data from point-to-point. For this reason, it is best suited for straight-through processing or data-flows vis-a-vis application integration. 
The goal of XPDL is to store and exchange the process diagram, to allow one tool to model a process diagram, and another to read the diagram and edit, another to "run" the process model on an XPDL-compliant BPM engine, and so on. For this reason, XPDL is not an executable programming language like BPEL, but rather a process design format that literally represents the "drawing" of the process definition. Specifically, it has ‘XY" or vector coordinates, including lines and points that define process flows. This allows an XPDL to store a one-to-one representation of a BPMN process diagram. For this reason, XPDL is effectively the file format or "serialization" of BPMN, as well as any non-BPMN design method or process model which use in their underlying definition the XPDL meta-model (there are presently about 70 tools which use XPDL for storing process models.)
WFMC用了些什么名词来形容XPDL呢?design format,process diagram,BPMN,DRAWING….等等。
WFMC认为BPEL才是“执行语言”,而认为XPDL主要用来“建模”。实际上通过前面的分析我们也很容易就明白:XPDL领域主要还是利用了活动图,状态图和FSM等元素;这些元素的结合很容易用来表达一个流程的建模模型;但是--------我们的平常的做法,就是直接拿这个建模模型来作为了执行语言。
我们这样做有什么缺点呢?
首先,我们用XPDL表达了流程的建模模型,但是我们为了让它可执行,加入了太多的业务人员不能理解的元素,导致业务人员不能直接使用它;
其次,我们用XPDL表达了可执行的元素,为了容易“建模”,加入了很多“活动”等“建模”元素,这些元素一般会需要去配置很多的属性,而这些属性是干扰和影响“执行”的。
XPDL就是一个建模和执行的混合体,是一个分析和实现的混合体。
4       总结
就算我们前面的分析是正确的,但是我们已经用XPDL很久了,我们是否要用BPEL呢?
这个还是需要我们另外花很多的时间去研究和证明的,下面是目前的看法,具体怎么做需要大家一起来判断分析:
1)  个人认为XPDL其实不算是个标准(支持它的vendor都非常小,而且支持得到底怎么样,说不清楚)
2)  BPEL当然也是“遵徇了WFMC模型”的 (就如很多国内厂商的宣传一样)
3)  的支持vendor就比较多,而且都是比较大的公司和组织BPEL
4)  其实IBM以前也支持XPDL的(教材里面的FileNet,非常的XPDL);但是,现在基本很少听到有人提到它了;从IBM的态度我们也应该能够找到我们的方向(从另外说明了一点:IBM大力做BPEL不是因为纯商业原因,因为它做XPDL也比我们强)
5)  集成应该是BPM的一大主力方向,集成是BPEL的最大优势。(具体为什么,需要再做具体的分析比较)

build the eclipse project of tucany sdo

发布时间:2008年04月10日 作者:hongsoft

阅读次数:3752次 类别:我的文章 永久链接 Trackback 
tuscany的项目结构比较麻烦,我们用eclipse的不太适应,不过其实还是是比较简单的,方法如下:

 

1)Download the following:

    * JDK 5.0+ (J2SE 1.5.0+)
    * Apache Maven (2.0.4+)
    * Subversion (1.2+)

2)用svn取到 https://svn.apache.org/repos/asf/incubator/tuscany/java/sdo 的代码

3)在环境变量 path中加入 maven,设置JAVA_HOME

4)在cmd中,转到 <sdo-source-root>/sdo目录,执行 mvn
  ( attention:保证网络是连通的)

5)在cmd中,转到 <sdo-source-root>/sdo/sdo-api目录,执行 mvn -Peclipse eclipse:eclipse

6)在cmd中,转到 <sdo-source-root>/sdo/impl目录,执行 mvn -Peclipse eclipse:eclipse

7)在cmd中,转到 <sdo-source-root>/sdo/tools目录,执行 mvn -Peclipse eclipse:eclipse

后面的工作就需要按E文的来了,基本上是比较简单常用的eclipse操作,比较的不好说,就copy了:

    * Start up eclipse
    * Switch to the Java perspective
    * Execute "File => Import ... => General => Existing project into workspace
    * Click "Browse ..." Navigate to the spec/sdo-api directory and click OK
    * Select the sdo-api project and click OK
    * After Eclipse has built the project you will see that there are compile errors. This is because Maven has created build dependencies for the project on the contents of your maven repository, but Eclipse doesn"t yet know where that repository is. You must create and assign a value to the M2_REPO variable within eclipse to resolve these dependencies
          o Right click in the Package Explorer frame on the root of the newly created project and select Properties => Java Build Path
          o Click on the "Libraries" tab and select "Add Variable...", "Configure Variables ...", "New ..."
          o Set Name to M2_REPO and Click on "Folder..."
          o Navigate to the "repository" folder/directory (on Windows this is \Documents and Settings\<user>\.m2\repository, on Linux it is ~/.m2/repository) and click OK
          o Accept the request for doing a full rebuild
          o Cancel away from the "Configure Variables" dialog
          o Click "OK" on the Project Properties Window
          o When building is complete the project should now have no errors

Now repeat the same instructions for importing the sdo-impl and sdo-tools projects into the eclipse environment. You aklready have the M2_REPO variable defined now, so these projects should build OK.

At this point you have three separate projects each dependent on binary artifacts in your maven repository. Don"t be tricked into thinking that
if you modify the sdo-impl project, that those changes will be picked up by the sdo-tools project. If you want this behaviour then follow these steps

    * In the package exlporer pane of the Java perspective, Right Click on Properties and select the libraries tab
    * Select the M2_REPO/commonj/sdo-api* library entry and click "remove"
    * Select the Projects tab and click "Add..."
    * Select the SDO API project and click OK
    * If you plan to work in the tools project
          o Select the "Order and Export" tab and select the sdo-api project and click OK (this means that the sdo-impl project will expose the interfaces of the sdo-api project, so that you don"t have to import them into projects which depend on the sdo-impl project)
          o Repeat the above instructions, removing the sdo-api and sdo-impl library dependencies from the tools project, and adding a project dependency for the sdo-tools project on the sdo-impl project



显示第 1-10 条记录,共 204 条记录 首页 前页 后页 尾页  到第 页,共 21