﻿<?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-无花无酒锄作田</title><link>http://www.blogjava.net/ldz112/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:10:44 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:10:44 GMT</pubDate><ttl>60</ttl><item><title>成功helloworld</title><link>http://www.blogjava.net/ldz112/archive/2014/02/26/410337.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Wed, 26 Feb 2014 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2014/02/26/410337.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/410337.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2014/02/26/410337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/410337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/410337.html</trackback:ping><description><![CDATA[1、下载并安装hadoop(需安装好jdk)<br />2、创建文件夹<br /><div>~/dfs/name</div><div>~/dfs/data</div><div>~/temp</div>3、修改配置文件<br /><div>~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh</div><div>~/hadoop-2.2.0/etc/hadoop/yarn-env.sh</div><div>~/hadoop-2.2.0/etc/hadoop/slaves</div><div>~/hadoop-2.2.0/etc/hadoop/core-site.xml</div><div>~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml</div><div>~/hadoop-2.2.0/etc/hadoop/mapred-site.xml</div><div>~/hadoop-2.2.0/etc/hadoop/yarn-site.xml</div><div>以上个别文件默认不存在的，可以复制相应的template文件获得。<br />--hadoop-env.sh<br />修改javahome<br /><div>export JAVA_HOME=/home/hduser/jdk1.6.0_45<br />--yarn-env.sh<br />同上<br />--slaves<br />增加处理节点机器名即可<br /></div><div>--core-site.xml</div><div>&lt;configuration&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div><span style="white-space:pre">		</span>&lt;name&gt;fs.defaultFS&lt;/name&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;hdfs://cloudn:9000&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div><span style="white-space:pre">		</span>&lt;name&gt;io.file.buffer.size&lt;/name&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;131072&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div><span style="white-space:pre">		</span>&lt;name&gt;hadoop.tmp.dir&lt;/name&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;file:/home/hduser/temp&lt;/value&gt;</div><div><span style="white-space:pre">		</span>&lt;description&gt;Abase for other temporary directories.&lt;/description&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;hadoop.proxyuser.hduser.hosts&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;*&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;hadoop.proxyuser.hduser.groups&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;*&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&lt;/configuration&gt;</div><div></div><div>--hdfs-site.xml</div><div>&lt;configuration&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;dfs.namenode.secondary.http-address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:9001&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;dfs.namenode.name.dir&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;file:/home/hduser/dfs/name&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;dfs.datanode.data.dir&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;file:/home/hduser/dfs/data&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;dfs.replication&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;2&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;dfs.webhdfs.enabled&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;true&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&lt;/configuration&gt;</div><div></div><div>--mapred-site.xml</div><div>&lt;configuration&gt;</div><div><span style="white-space:pre">	</span>&lt;property&gt;</div><div><span style="white-space:pre">		</span>&lt;name&gt;mapreduce.framework.name&lt;/name&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;yarn&lt;/value&gt;</div><div><span style="white-space:pre">	</span>&lt;/property&gt;</div><div><span style="white-space:pre">	</span>&lt;property&gt;</div><div><span style="white-space:pre">		</span>&lt;name&gt;mapreduce.jobhistory.address&lt;/name&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;cloudn:10020&lt;/value&gt;</div><div><span style="white-space:pre">	</span>&lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;mapreduce.jobhistory.webapp.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:19888&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&lt;/configuration&gt;</div><div></div><div>--yarn-site.xml</div><div></div><div>&lt;configuration&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.nodemanager.aux-services&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;mapreduce_shuffle&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.nodemanager.aux-services.mapreduce.shuffle.class&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;org.apache.hadoop.mapred.ShuffleHandler&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.resourcemanager.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:8032&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.resourcemanager.scheduler.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:8030&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.resourcemanager.resource-tracker.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:8031&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.resourcemanager.admin.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:8033&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;name&gt;yarn.resourcemanager.webapp.address&lt;/name&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;value&gt;cloudn:8088&lt;/value&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&lt;/property&gt;</div><div>&lt;/configuration&gt;</div></div><div>4、复制到其他节点，如有64位，32位，不能复制</div>5、启动准备<br /><div>格式化namenode: bin/hdfs namenode -format<br />6、启动hadoop:sbin/start-all.sh<br />7、hellocount<br /><br /><div>先在hdfs上创建一个文件夹</div><div>./bin/hdfs dfs -mkdir /input</div><div>&nbsp;./bin/hdfs dfs -ls /</div><div>在namenode上创建个文件夹</div><div>files,创建2个文件 echo "Hello World" &gt; file1.txt</div><div>more file1.txt file2.txt</div><div>hadoop fs -mkdir &nbsp;input</div><div>创建输入文件夹</div><div>./bin/hdfs dfs -mkdir /input</div><div>./bin/hdfs dfs -mkdir input</div><div>./bin/hdfs dfs -ls /</div><div>上传本地文件到集群的input目录</div><div>./bin/hdfs dfs -put ~/files/*.txt /input</div><div>./bin/hdfs dfs -ls /input</div><div>执行</div><div>./bin/hadoop jar /home/hduser/hadoop-2.2.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.2.0-sources.jar org.apache.hadoop.examples.WordCount /input /output</div><div>结果</div><div>./bin/hadoop dfs -cat /output/part-r-00000</div></div><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/ldz112/aggbug/410337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2014-02-26 16:40 <a href="http://www.blogjava.net/ldz112/archive/2014/02/26/410337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hadoop准备2</title><link>http://www.blogjava.net/ldz112/archive/2014/02/13/409796.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Thu, 13 Feb 2014 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2014/02/13/409796.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/409796.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2014/02/13/409796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/409796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/409796.html</trackback:ping><description><![CDATA[<div>机器名，及ip解析修改</div><div>分别修改etc下hostname、hosts</div><div></div><div>安装完成后会在~目录（当前用户主目录，即这里的/home/hduser）下产生一个隐藏文件夹.ssh（ls &nbsp;-a 可以查看隐藏文件）。如果没有这个文件，自己新建即可（mkdir .ssh）。</div><div>1、 进入.ssh文件夹</div><div>2、 ssh-keygen -t &nbsp;rsa 之后一路回车</div><div>3、ssh localhost</div><div></div><div>cat id_rsa.pub &gt;&gt; authorized_keys</div><div>scp authorized_keys @ authorized_key_1</div><div>cat authorized_key_1 &gt;&gt; &nbsp;authorized_keys &nbsp;这里感觉蛮奇怪的，从第一台拷过去再cat到第二台信息里，反而第二台能自动登录到第一台，反正目标是互通</div><div></div><div>jdk 安装</div><div>JAVA_HOME=/home/lmode/jdk1.6.0_45</div><div>CLASSPATH=.:$JAVA_HOME/lib.tools.jar</div><div>PATH=$JAVA_HOME/bin:$PATH</div><div>export JAVA_HOME CLASSPATH PATH</div><div></div><div>export LANG="zh_CN.GB18030"</div><div>export LC_ALL="zh_CN.GB18030"</div><div>export NLS_LANG=american_america.ZHS16GBK</div><img src ="http://www.blogjava.net/ldz112/aggbug/409796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2014-02-13 10:36 <a href="http://www.blogjava.net/ldz112/archive/2014/02/13/409796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hadoop准备</title><link>http://www.blogjava.net/ldz112/archive/2014/02/11/409713.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Tue, 11 Feb 2014 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2014/02/11/409713.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/409713.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2014/02/11/409713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/409713.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/409713.html</trackback:ping><description><![CDATA[1、虚拟机 vmware10 os ubuntu12<br />2、安装完以上软件进行次<br />&nbsp; &nbsp; &nbsp;&nbsp;<span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 20px;">sudo apt-get update 更新源</span><span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 20px;">　</span><br style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 20px;" /><span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 20px;">　　sudo apt-get upgrade 更新已安装的包</span><br />3、共享文件夹<br />&nbsp; &nbsp; sudo mount /dev/cdrom /mnt/cdrom<br />&nbsp; &nbsp; 安装vmware tools ，解压,执行pl文件<br />&nbsp; &nbsp; 安装sudo apt-get install open-vm-dkms<br />&nbsp; &nbsp;&nbsp;关机，设置共享<br />&nbsp; &nbsp; sudo mount -t vmhgfs .host:/ /mnt/hgfs<br />4、openssh<br />&nbsp; &nbsp; sudo apt-get &nbsp;install openssh-server<br /><img src ="http://www.blogjava.net/ldz112/aggbug/409713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2014-02-11 11:21 <a href="http://www.blogjava.net/ldz112/archive/2014/02/11/409713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优秀工作流引擎标准</title><link>http://www.blogjava.net/ldz112/archive/2009/12/10/305444.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Thu, 10 Dec 2009 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2009/12/10/305444.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/305444.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2009/12/10/305444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/305444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/305444.html</trackback:ping><description><![CDATA[一般性功能 (General Functions) <br />
1. 免程序开发(No Programming or Scripting) <br />
2. 可处理大量流程工作 (Volume Transaction Processing) <br />
3. 三层式弹性化架构(Three Tier, Scaleable Architecture) <br />
4. 稳定的信息传递架构(Robust Message Transports) <br />
5. 流程反向回传/抽单(Process Rollback) <br />
6. 支持LDAP 目录服务 <br />
7. 支持企业级数据库 (Support for Enterprise Databases) <br />
8. 动态用户授权(Active User Licensing) <br />
9. 统一的登入ID 与密码(Unified ID/Password) <br />
10. 使用者网域安全性(User Domain Security) <br />
流程与窗体设计功能 (Designer) <br />
11. 图形化工作流程图(Graphical Workflow Maps) <br />
12. 基于角色的路由(Role Based Routing) <br />
13. 平行会签(Parallel Routing) <br />
14. 基于关系的路由(Relationship Based Routings) <br />
15. 工作队列(Queues) <br />
16. 图形化数据路由(Graphical Data Routing) <br />
17. 动态会签(Dynamic Routing) <br />
18. 条件化步骤(Conditional Steps) <br />
19. 条件化步骤跳跃(Conditional Jumps) <br />
20. 条件化取消流程(Conditional Aborts) <br />
21. 条件化退回(Conditional Returns) <br />
22. 条件化收件人(Conditional Recipients) <br />
23. 条件定义清单(Event Condition Tables) <br />
24. 条件定义清单与其它步骤互动(Status Variables in Event Condition Tables) <br />
25. 退件(Return Step) <br />
26. 动态定义群组(Dynamic Groups) <br />
27. 整合智能型窗体设计工具(Integrated Intelligent Forms Designer) <br />
28. 表格透过服务器端连接数据库(Server-Side Database Connectivity for Forms) <br />
29. 表格通用变量(Global Variables in Forms) <br />
30. 电子签章(Signatures) <br />
31. 备注留言板(Memos) <br />
32. 表格支持电子扩展表 (Spreadsheet Grid in Forms) <br />
33. 多页表格(Multiple Pages per Form) <br />
34. 子表(Sub-Forms) <br />
35. 必备与必读文档(Required and Must-Read Attachments) <br />
36. 附件功能(Attachment) <br />
37. 资料验证与格式化输入(Data Validation and Masking) <br />
38. 支持URL 连结(URL Links) <br />
39. 支持HTML/Java (Support DHTML/Java) <br />
40. 支持第三方对象开发(Third-Party Objects (Controls)) <br />
41. 自订传递路径(Ad hoc Routing) <br />
42. 连接点(Junction Steps) <br />
43. 重复激活流程(Iteration) <br />
44. 转折点(Anchors) <br />
45. 编辑业务规则(Editing Business Rules) <br />
46. 自动暂停或恢复继续流程(Hold Conditions) <br />
47. 发起子流程(Sub Processes) <br />
48. 同步/异步子流程(Synchronous/Asynchronous Sub Processes) <br />
49. 定时激活(Periodic Launches) <br />
50. 第三方软件接口（Agent API/SDK ） <br />
51. Excel 接口（Excel Agent ） <br />
52. Word 接口(Word Agent) <br />
53. ODBC 接口(ODBC Agent) <br />
54. ASCII 接口(ASCII Agent) <br />
55. 文件接口 (File Agent) <br />
56. 电子邮件接口(E-mail Agent) <br />
57. 呼叫DLL 接口(Invoke DLL Agent) <br />
58. 接口中心（Agent Station ） <br />
59. 流程仿真测试(Simulation) <br />
60. 流程仿真除错工具(Debugging Tools during Simulation) <br />
61. 连续激活案件(Repeating Steps) <br />
62. 取消案件或步骤(Abort Step or Incident) <br />
63. 可重复送件的步骤(Perpetual Steps) <br />
64. 保密步骤(Private User Steps) <br />
65. 禁止代理的工作(Non-assignable User Tasks) <br />
66. 复制流程步骤(Replicating Tasks) <br />
67. 动态更改工作优先级(Dynamic Task Prioritization) <br />
68. 可定义工作流程拥有人(Process Owners) <br />
69. 工时成本计算(Task Rates) <br />
70. 工作完成时间(Task Completion Times) <br />
71. 群体开发流程(Collaborative Design via Maplets TM) <br />
72. 数据可传递至子流程(Data Transfer to Sub-Processes) <br />
73. 可同时监控主/子流程(View Sub-Process Status in Monitor View) <br />
74. 数据捆绑通用变量 (Databound global variables) <br />
75. 流程设计文件制作(Process Documentation) <br />
76. 以邮件通知工作逾时(E-mail Notification of Late Condition) <br />
77. 可自订通知邮件(Customizable Notification Messages) <br />
78. 群体响应(Group Response/Vote) <br />
79. 指定代号启始值(Seeded Incident Number) <br />
80. 指定工作暂停(Delayed Assignment) <br />
81. 启始新流程权限(Process Initiation Rights) <br />
工作流程服务器功能 (Workflow Server Features) <br />
82. 支持多个流程服务器(Multiple Workflow Servers) <br />
83. 集中式的服务器端数据库连结(Centralized, Server-side Database Connectivity) <br />
84. 以文字文件激活流程(Process Launch via Text Files) <br />
85. 通过E-Mail 激活流程(Process Launch via E-mail) <br />
86. 符合业务逻辑的服务器端动态连接库(Server-Side DLLs for Custom Workflow Logic) <br />
87. 工作处理记录文件(Transaction Log Files) <br />
88. 服务器定时清仓维护(Periodic Server Housekeeping) <br />
89. 清仓窗口(Housekeeping Window) <br />
90. 处理停顿流程(Handling of Stalled Processes) <br />
91. 服务器自动复原(Automatic Server Recovery) <br />
客户端程序功能 (Client Features) <br />
92. B/S 结构的客户端界面(Browser-based Client Interface) <br />
93. 依重要程度优先级排列工作清单(Prioritized Client Task List) <br />
94. 主动式电子邮件通知(Proactive E-mail Notifications) <br />
95. 进度落后工作调整(Late Task Escalation) <br />
96. 用户监看流程状况(Status Monitoring at Client) <br />
97. 分布式用户管理(Distributed User Administration) <br />
98. 用户指定代理人(Client Assign Functions) <br />
99. 由工作队列中选择工作(Select Task from Queue) <br />
100.用户自订工作窗口画面(Custom Client Views) <br />
101.显示已被代理的工作(View Assigned Tasks) <br />
102.表格快取功能(Forms Caching) <br />
103.表格样板(Form Templates) <br />
104.表格自动归档(Automatic Archiving) <br />
105.自动更新程序与组件(Automatic Software Update for Browser Clients) <br />
106.浏览器端的数字认证功能(Digital Certificate for Browser Software) <br />
107.公众用户(Public Client ) <br />
108.游移用户(Roving User) <br />
109.自动定时更新画面(Automatic Periodic Refresh) <br />
110.异常状况通知(Notification of Abnormal Situations) <br />
111.数据库安全(Database Security) <br />
112.开放的客户端软件(Open Client) <br />
企业组织图功能 (Organization Chart Features) <br />
113.企业组织图(Organization Charts) <br />
114.子组织图(Sub-Charts) <br />
115.组织图拥有人(Chart Owners) <br />
116.群组(Groups) <br />
117.循序群组(Sequential Groups) <br />
118.权重群组(Weighted Groups) <br />
119.工作职务群组(Job Function Groups) <br />
120.多重角色管理(Multiple Roles Per User) <br />
121.相对职务关系(Relative Job Functions) <br />
122.职务搜寻(Search) <br />
123.组织调整(Reorganize) <br />
系统与流程管理功能 (Administrator Features) <br />
124.图形化工作流程监控(Graphical Workflow Monitoring) <br />
125.版本控制(Version Control) <br />
126.工作负荷量显示(Workload View) <br />
127.任务成本统计(Task Cost Statistics) <br />
128.工作流程成本统计(Process Cost Statistics) <br />
129.单一步骤超时统计(Step Lag Time) <br />
130.工作流程超时统计(Process Lag Time) <br />
131.流程暂时停用(Disable Processes ) <br />
132.由队列中临时调派工作(Pull Tasks from Queue) <br />
133.工作重送(Resend Steps) <br />
134.非工作日设定(Exclusion Days) <br />
135.代理未来工作(Assign Future Tasks) <br />
136.工作流程信息输出(Workflow Metrics Export) <br />
137.能临时更改收件人(Ability to Change Recipient ) <br />
138.可显示进行中流程的内容(Ability to View Workflow Data) <br />
139.自订案件过滤清单(User-Defined Queries for Reports / Monitor View) <br />
140.自动安装流程给新的部门成员(Automatic Install to New Group Members) <br />
141.可自行定义统计报表(Configurable Reports) <br />
142.可指定代理期限(Assign Until) <br />
143.可传回子流程统计数据(Roll-up Sub-Process Statistics) <br />
144.强迫第三方应用软件结束(Ability to Complete Third-Party Application Steps)
<img src ="http://www.blogjava.net/ldz112/aggbug/305444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2009-12-10 16:34 <a href="http://www.blogjava.net/ldz112/archive/2009/12/10/305444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>也谈需求变更</title><link>http://www.blogjava.net/ldz112/archive/2009/12/08/305129.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Tue, 08 Dec 2009 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2009/12/08/305129.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/305129.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2009/12/08/305129.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/305129.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/305129.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 与传统行业相比，软件的需求具有不确定性，这种情况贯穿与软件工程的每个阶段，为了解决这种不确定性，软件工程采取了一系列的措施进行应对，不管是从软件工程方面、设计方面,还是从引导方面都需进行，唯一的目的就是减少该项目的风险。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 下面讨论下需求变更中比较常见的2种情况<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 一、需求镀金<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; 二、需求蔓延<br />
<br />
<br />
<img src ="http://www.blogjava.net/ldz112/aggbug/305129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2009-12-08 11:29 <a href="http://www.blogjava.net/ldz112/archive/2009/12/08/305129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle培训记</title><link>http://www.blogjava.net/ldz112/archive/2008/08/09/221081.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Sat, 09 Aug 2008 15:44:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2008/08/09/221081.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/221081.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2008/08/09/221081.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/221081.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/221081.html</trackback:ping><description><![CDATA[<p>没有了周末，没有了奥运，只剩下甲骨了</p>
<p>投入了这么多时间也该有所回报，故写下此文</p>
<p>开始，不用想也知道是有关Oracle的基本结构，这东东但凡有跟Oracle的相关书籍都有介绍，再加上由于本人看书有那种两天打鱼三条晒网的习惯，所以比较的熟悉，基本上稍微的听了下</p>
<p>体系结构包括：物理结构的几个文件，SGA和进程（window为多线程）<br />
物理结构包括：ADMIN、ORACLE HOME及ORADATA等<br />
admin目录下主要保存参数及其相应的日志，其中主要的日志是alert.log，一般的Oracle出现的问题这里都可以发现<br />
oracle home 主要提供二进制文件，可执行程序，网络文件，nls文件等<br />
oradata 提供数据 日志 控制 参数文件<br />
其中如果数据库奔溃，只要有数据 日志 控制文件即可马上恢复<br />
日志文件 记录每次操作修改，采用循环使用分区机制<br />
控制文件协调两者同步<br />
数据文件scn号&lt;日志文件scn号<br />
逻辑结构<br />
一个数据库服务可以有多个数据库实例<br />
实例=一组进程+内存</p>
<p>进程<br />
共享数据库与专用数据库<br />
专用数据库用于一对一系统，事务性要求比较高，主要应用于实时系统<br />
共享数据库通过调度器为每个用户进程分配服务进程</p>
<p>还有一堆的后台进程就没怎么记了</p>
<p>然后介绍了些处理sql语句的阶段，分析执行返回</p>
<p>到这里基本上把oracle的基础结构介绍了下</p>
<p>下面部分介绍了系统开发过程的通用开发周期<br />
主要考虑以下几个方面：大数据量（分区 一般一个分区300M），层次（数据仓库维度的概念），索引，表冗余</p>
<p>主要通过业务分析和聚类分析<br />
我这次第一次听说聚类分析呵～～～<br />
即根据业务的特性把相似功能的维度分析出来，好像还挺拗口的，其实很简单，比如，电信计费业务，可以通过月份，不过今天培训上提出了，2.7亿条数据，按用户号码/1000这样每个区就约等于300M提高处理效率<br />
处理分区语句示例：<br />
Create Table t(owner, object_name, subobject_name, object_id, data_object_id, object_type, created,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last_ddl_time, timestamp, status, temporary, generated, secondary)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition By Range(object_id)<br />
&nbsp;&nbsp;&nbsp;&nbsp; (Partition p_3000 Values Less Than(3000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_6000 Values Less than(6000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_9000 Values Less Than(9000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_12000 Values Less Than(12000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_15000 Values Less Than(15000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_18000 Values Less Than(18000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_21000 Values Less Than(21000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_24000 Values Less Than(24000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_27000 Values Less Than(27000) Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_others Values Less Than(Maxvalue) Tablespace users<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp; As<br />
&nbsp;&nbsp; Select owner, object_name, subobject_name, object_id, data_object_id, object_type, created,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last_ddl_time, timestamp, status, temporary, generated, secondary<br />
&nbsp;From dba_objects;</p>
<p>Create Table t(owner, object_name, subobject_name, object_id, data_object_id, object_type, created,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last_ddl_time, timestamp, status, temporary, generated, secondary)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition By list(OWNER)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Partition p_1&nbsp; Values ('HR','SCOTT') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_2 Values ('MDSYS') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_3 Values ('SH','SYS') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_4 Values ('OE','OLAPSYS','SYSTEM') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_5 Values ('ODM','ODM_MTR') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_6 Values ('QS','QS_CS','QS_ES','QS_OS','QS_WS','WKSYS','WMSYS') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_7 Values ('PM','PUBLIC') Tablespace users,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Partition p_8 Values (DEFAULT) Tablespace users<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp; As<br />
&nbsp;&nbsp; Select owner, object_name, subobject_name, object_id, data_object_id, object_type, created,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last_ddl_time, timestamp, status, temporary, generated, secondary<br />
&nbsp;From dba_objects;</p>
<p>&nbsp;<br />
</p>
<p>累了，今天就写到这!&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/ldz112/aggbug/221081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2008-08-09 23:44 <a href="http://www.blogjava.net/ldz112/archive/2008/08/09/221081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myeclipse中hibernate的配置问题</title><link>http://www.blogjava.net/ldz112/archive/2008/05/23/202334.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Fri, 23 May 2008 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2008/05/23/202334.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/202334.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2008/05/23/202334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/202334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/202334.html</trackback:ping><description><![CDATA[在搭建系统过程中，俺想把配置文件放到一个配置文件下统一进行管理，所以把applicationContext.xml文件从默认生成的src目录下拷贝到我配置的config的目录下，此时系统表面上没有什么异常现象，但还是忽略了一点造成了一点小问题。<br />
<br />
下一步进行hibernate搭建过程中选用spring DAO却不能选择了，明明已经导入了spring的框架，为什么还是不能选择，看来我刚才的操作有可能引起这个配置问题，打开系统生成的.springBeans文件发现没有任何spring的配置文件消息，发现可能问题就在这当中。<br />
<br />
重新生成个项目，导入spring，打开.springBeans如下<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beansProjectDescription&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;configExtensions&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;configExtension&gt;xml&lt;/configExtension&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/configExtensions&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;configs&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;config&gt;config/applicationContext.xml&lt;/config&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/configs&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;configSets&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/configSets&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;springVersion&gt;2.0&lt;/springVersion&gt;<br />
&lt;/beansProjectDescription&gt;<br />
<br />
果然由于我修改了applicationContext.xml的路径导致configs中的配置丢失了，加上&lt;config&gt;config/applicationContext.xml&lt;/config&gt;后，系统果然正常的顺利的配置了。<br />
<br />
小结<br />
学习过程中，不要一味的按照demo的操作步骤去配置，尽量按自己的思路去做，能发现不少的问题，提高自己对该内容的认识。<br />
<br />
<br />
<img src ="http://www.blogjava.net/ldz112/aggbug/202334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2008-05-23 10:41 <a href="http://www.blogjava.net/ldz112/archive/2008/05/23/202334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>与java无关</title><link>http://www.blogjava.net/ldz112/archive/2008/03/21/187705.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Fri, 21 Mar 2008 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2008/03/21/187705.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/187705.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2008/03/21/187705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/187705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/187705.html</trackback:ping><description><![CDATA[呵～～～<br />
<br />
不知道怎么会想起这个标题，毕业了将近8年，没有什么突破，也没什么目标<br />
<br />
好像，好好活着就是我的生活，但是都没做什么有意义的事<br />
<br />
02年，我转行了，从电视工作者转变为当时比较时髦的IT工作者，我那时觉得自己有点能耐<br />
<br />
去年，我跳槽了，总想做些突破的事，但是好像到那都一样，我还是我，生活一样在继续<br />
<br />
今年，08年，发生了很多事，然我感到茫然，突然很想知道，自己适合做什么，喜欢做什么，目标是什么<br />
<br />
曾经一位合作过的同事给我了一个评价，我记忆犹新：对成功的渴望没那么强烈，阻碍了我的发展<br />
<br />
我想我对自己的认知，是，我都没有什么目标，哪有什么成功的状态<br />
<br />
也许环境真的对我来说真的很重要，但我需要什么环境，能在这个环境中扮演的角色，对我来说还是未知数<br />
<br />
近期目标真的是想把目标明确，其实也有点朦胧的轮廓，但不清晰。<br />
<br />
总之，要明确自己，自己的环境， 
<img src ="http://www.blogjava.net/ldz112/aggbug/187705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2008-03-21 14:30 <a href="http://www.blogjava.net/ldz112/archive/2008/03/21/187705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KM参与记</title><link>http://www.blogjava.net/ldz112/archive/2007/09/12/144556.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Wed, 12 Sep 2007 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2007/09/12/144556.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/144556.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2007/09/12/144556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/144556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/144556.html</trackback:ping><description><![CDATA[今天参与跟IBM有关的KM的项目会议，由于某些原因比较迟的收到通知，不过还好中途赶上了<br />
<br />
下午的会议主要有俩个方面的内容进行讨论，一个是KM的接口流程处理，第二是针对KM的权限管理进行讨论<br />
<br />
经过讨论，基本上对人员上的安排有一定的认识<br />
<br />
主要感受就是，他们的项目会议的讨论比较有激情，根据每个人的分工情况，根据针对该方面不同的认识互相进行解决答疑<br />
<br />
<img src ="http://www.blogjava.net/ldz112/aggbug/144556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2007-09-12 17:31 <a href="http://www.blogjava.net/ldz112/archive/2007/09/12/144556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Drools</title><link>http://www.blogjava.net/ldz112/archive/2007/08/20/138069.html</link><dc:creator>李大嘴</dc:creator><author>李大嘴</author><pubDate>Mon, 20 Aug 2007 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/ldz112/archive/2007/08/20/138069.html</guid><wfw:comment>http://www.blogjava.net/ldz112/comments/138069.html</wfw:comment><comments>http://www.blogjava.net/ldz112/archive/2007/08/20/138069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldz112/comments/commentRss/138069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldz112/services/trackbacks/138069.html</trackback:ping><description><![CDATA[<p>一、什么是Drools<br>&nbsp;&nbsp;&nbsp; Drools是一个Bob McWhirter开发的开源项目，基于Charles Forgy's的Rete算法的，专为Java语言所设计的规则引擎。<br>&nbsp;&nbsp;&nbsp; Rete算法应用于面向对象的接口将使基于商业对象的商业规则的表达更为自然。<br><br>二、为什么要引入规则引擎<br>&nbsp;&nbsp;&nbsp; 对于大多数项目的应用，一般通过选择些比较经典的、生命力强的框架，能使我们的开发更专注于商业逻辑的开发，提高我们的开发效率。<br>这些框架包括表现层框架（Struts, JSF）,持久化框架（JDO, Hibernate,ibatis）以及结构框架(EJB, Spring), 还有其它很多。每种框架都各有所长，给开发者提供子许多&#8220;即开即用&#8221;的功能。使用框架来部署应用意味着你避免了许多让人厌烦的细节，让你集中注意力到关键之处。然而这些框架没有商业逻辑方面的，但对于项目来说，需求变更又是不可避免的，如何更大限度的分离商业逻辑，避免混淆于一般的流程控制中。</p>
<br>
<p><img src="http://www.blogjava.net/images/blogjava_net/ldz112/javaKJ.jpg" border="0"></p>
<p>根据上图，可以清晰的看出如果有个商业逻辑框架存在，可以提高项目的灵活性、可维护性，从而达到敏捷开发。<br><br></p>
<p>三、什么时候适合用规则引擎<br>1、项目的复杂性</p>
<p>如果一个项目是一个轻量级的应用，跟大多数框架一样需要进行框架上复杂度的评估，以适应整个项目的管理。</p>
<p>下面讨论下EJB。</p>
<p>为什么现在大多数J2EE应用摒弃EJB?</p>
<p>EJB为了提供企业级应用集成了持久化、隔离性、安全性与事务完整性等系统服务，使开发者专注于业务本身要解决的实际问题，表明上看上去这样的系统简化了我们应用的开发，但这些业务功能实现的bean为了能在EJB容器管理下顺利运行，需要提供一系列的模版接口，而且在业务逻辑中需要加入管理bean生命方法的功能。这些代码的入侵性、紧耦合性、重复性使开发的风险及不确定因素急剧上升，而且对于各个EJB容器厂商的相关标准都不一致，导致系统的不可移植性都大大增加了整个项目的风险。</p>
<p>四、怎么用Drools</p>
<br><br>五、HelloWorld<br><br>该示例由两部分组成， 一个是调用规则的test.jsp ： <br><br>//设置一个测试用的VO <br>Vo vo = new Vo(); <br>vo.setPoStatus("A:draft"); <br><br>//读入规则 <br>RuleBase ruleBase = RuleBaseBuilder.buildFromURL("rule.drl"); <br><br>//把vo放入WorkingMemory中并执行 <br>WorkingMemory workingMemory = ruleBase.newWorkingMemory( ); <br>workingMemory.assertObject( vo ); <br>workingMemory.fireAllRules( ); <br><br>//显示结果 <br>out.print(po.getPoStatus()); <br><br>一个是规则文件rule.drl： <br><br>&lt;rule-set name="test rules" <br>&lt;rule name="Bob Likes Cheese"&gt; <br>&lt;parameter identifier="vo"&gt; <br>&lt;java:class&gt;com.ito.vo&lt;/java:class&gt; <br>&lt;/parameter&gt; <br><br>&lt;java:condition&gt;vo.getStatus().equals("A:draft")&lt;/java:condition&gt; <br><br>&lt;java:consequence&gt; <br>vo.setStatus("B:order"); <br>&lt;/java:consequence&gt; <br>&lt;/rule&gt; <br>&lt;/rule-set&gt; <br><br>整个规则分成三段， 第一段定义刚刚放入的对象； 第二段用Java语法判断条件； 第三段为条件符合时的执行语句 <br><br>经过小范围的试用，发现没有这么简单，因为Drools主要提供了一个RETE的规则匹配算法和一个Script Engine，具体怎么用，还要靠自己。如果drl文件的定义方式和RETE算法能够使条件的表达大大简化，那么它就是有用的。否则，一段重构后的代码能够达到和drl文件相仿的功能。所以，还是要多看点基础，把Business Rules用在正确的地方。 <br> <img src ="http://www.blogjava.net/ldz112/aggbug/138069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldz112/" target="_blank">李大嘴</a> 2007-08-20 11:20 <a href="http://www.blogjava.net/ldz112/archive/2007/08/20/138069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>