﻿<?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-pengo-随笔分类-JBPM</title><link>http://www.blogjava.net/pengo/category/43025.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 03 Oct 2010 06:28:47 GMT</lastBuildDate><pubDate>Sun, 03 Oct 2010 06:28:47 GMT</pubDate><ttl>60</ttl><item><title>JBPM4.4发布zip流程包和流程图显示</title><link>http://www.blogjava.net/pengo/archive/2010/10/02/333645.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Sat, 02 Oct 2010 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/10/02/333645.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/333645.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/10/02/333645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/333645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/333645.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上一篇在spring mvc下发布jbpm流程只介绍了发布jpdl的流程定义文件，并没有把流程图也一起发布，本篇将把流程定义文件和流程图一起打包为zip格式发布。先介绍jbpm流程设计器开发（3）的代码修改com.workflow.designer.view.Menu.java代码，主要是增加生成图片和把jpdl和图片打包为zip文件。&nbsp;1saveItem.addActi...&nbsp;&nbsp;<a href='http://www.blogjava.net/pengo/archive/2010/10/02/333645.html'>阅读全文</a><img src ="http://www.blogjava.net/pengo/aggbug/333645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-10-02 11:15 <a href="http://www.blogjava.net/pengo/archive/2010/10/02/333645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在spring mvc下发布jbpm流程</title><link>http://www.blogjava.net/pengo/archive/2010/09/07/331264.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Mon, 06 Sep 2010 16:55:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/09/07/331264.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/331264.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/09/07/331264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/331264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/331264.html</trackback:ping><description><![CDATA[本篇使用到的相关技术内容：<br />
spring 3.0<br />
jbpm4.4<br />
hsqldb<br />
hibernate<br />
其中hsqldb和hibernate都是从jbpm4.4的lib文件夹里面拷过去的。<br />
本篇不再介绍jbpm与spring集成和spring mvc两方面的内容，有需要，请看之前的文章<br />
jbpm4.3与spring集成请看<a title="http://www.blogjava.net/pengo/archive/2010/01/04/308219.html" href="http://www.blogjava.net/pengo/archive/2010/01/04/308219.html">http://www.blogjava.net/pengo/archive/2010/01/04/308219.html</a><br />
spring3.0 mvc和rest小例子请看<a title="http://www.blogjava.net/pengo/archive/2010/07/03/325164.html" href="http://www.blogjava.net/pengo/archive/2010/07/03/325164.html">http://www.blogjava.net/pengo/archive/2010/07/03/325164.html</a><br />
<br />
本篇只实现两个功能，上传流程定义文件和发布该上传的流程定义文件。<br />
使用的流程定义文件是使用上一篇jbpm流程设计器生成的定义文件，<br />
有关jbpm流程设计器介绍，请看<a title="http://www.blogjava.net/pengo/archive/2010/08/31/330346.html&#13;&#10;" href="http://www.blogjava.net/pengo/archive/2010/08/31/330346.html">http://www.blogjava.net/pengo/archive/2010/08/31/330346.html </a><br />
<br />
流程图:<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/2010.09.06.1.jpg" width="500" height="400" /><br />
<br />
把流程图保存为test.jpdl.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">GBK</span><span style="color: #000000">"</span><span style="color: #000000">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">process&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">process</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;xmlns</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://jbpm.org/4.4/jpdl</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">start&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">开始</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">83,34,40,40</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">transition&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">to&nbsp;任务</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0,0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;to</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">任务</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">start</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">task&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">任务</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">231,78,80,40</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">transition&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">to&nbsp;结束</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0,0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;to</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">结束</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">task</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">end&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">结束</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;g</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">173,188,40,40</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">process</span><span style="color: #000000">&gt;</span></div>
<br />
<br />
<p>RestController.java的发布处理代码：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">@RequestMapping(value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/deployAction</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;method&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;RequestMethod.POST)<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ModelAndView&nbsp;deployAction(HttpServletRequest&nbsp;request,<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_184_1715_Open_Image" onclick="this.style.display='none'; Codehighlighter1_184_1715_Open_Text.style.display='none'; Codehighlighter1_184_1715_Closed_Image.style.display='inline'; Codehighlighter1_184_1715_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_184_1715_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_184_1715_Closed_Text.style.display='none'; Codehighlighter1_184_1715_Open_Image.style.display='inline'; Codehighlighter1_184_1715_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response,&nbsp;ModelMap&nbsp;modelMap)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_184_1715_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_184_1715_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;String&nbsp;realPath&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getSession().getServletContext().getRealPath(<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/WEB-INF/deploy/</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_301_1576_Open_Image" onclick="this.style.display='none'; Codehighlighter1_301_1576_Open_Text.style.display='none'; Codehighlighter1_301_1576_Closed_Image.style.display='inline'; Codehighlighter1_301_1576_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_301_1576_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_301_1576_Closed_Text.style.display='none'; Codehighlighter1_301_1576_Open_Image.style.display='inline'; Codehighlighter1_301_1576_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_301_1576_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_301_1576_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_357_1572_Open_Image" onclick="this.style.display='none'; Codehighlighter1_357_1572_Open_Text.style.display='none'; Codehighlighter1_357_1572_Closed_Image.style.display='inline'; Codehighlighter1_357_1572_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_357_1572_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_357_1572_Closed_Text.style.display='none'; Codehighlighter1_357_1572_Open_Image.style.display='inline'; Codehighlighter1_357_1572_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ServletFileUpload.isMultipartContent(request))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_357_1572_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_357_1572_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;MultipartHttpServletRequest&nbsp;multipartRequest&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(MultipartHttpServletRequest)&nbsp;request;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Iterator&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;multipartRequest.getFileNames();&nbsp;it<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_527_1567_Open_Image" onclick="this.style.display='none'; Codehighlighter1_527_1567_Open_Text.style.display='none'; Codehighlighter1_527_1567_Closed_Image.style.display='inline'; Codehighlighter1_527_1567_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_527_1567_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_527_1567_Closed_Text.style.display='none'; Codehighlighter1_527_1567_Open_Image.style.display='inline'; Codehighlighter1_527_1567_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.hasNext();)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_527_1567_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_527_1567_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;key&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)&nbsp;it.next();<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MultipartFile&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;multipartRequest.getFile(key);<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_674_1561_Open_Image" onclick="this.style.display='none'; Codehighlighter1_674_1561_Open_Text.style.display='none'; Codehighlighter1_674_1561_Closed_Image.style.display='inline'; Codehighlighter1_674_1561_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_674_1561_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_674_1561_Closed_Text.style.display='none'; Codehighlighter1_674_1561_Open_Image.style.display='inline'; Codehighlighter1_674_1561_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(file.getOriginalFilename().length()&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_674_1561_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_674_1561_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;file.getOriginalFilename();<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;saveFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(realPath&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;filename);<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;fos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(saveFile);<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">保存上传的流程定义文件</span><span style="color: #008000"><br />
</span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.write(file.getBytes());<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.flush();<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.close();<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext&nbsp;ctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ClassPathXmlApplicationContext(<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">applicationContext.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">调用已定义的Bean</span><span style="color: #008000"><br />
</span><span style="color: #008080">26</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(ProcessEngine)&nbsp;ctx<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">processEngine</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;deployFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(saveFile.getAbsolutePath());<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img id="Codehighlighter1_1241_1553_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1241_1553_Open_Text.style.display='none'; Codehighlighter1_1241_1553_Closed_Image.style.display='inline'; Codehighlighter1_1241_1553_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1241_1553_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1241_1553_Closed_Text.style.display='none'; Codehighlighter1_1241_1553_Open_Image.style.display='inline'; Codehighlighter1_1241_1553_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(deployFile.exists())&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1241_1553_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1241_1553_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;发布流程</span><span style="color: #008000"><br />
</span><span style="color: #008080">31</span><span style="color: #008000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;deploymentId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getRepositoryService().createDeployment()<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addResourceFromFile(deployFile).deploy();<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">========================ID:</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;deploymentId);<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modelMap.put(</span><span style="color: #000000">"</span><span style="color: #000000">deploy</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">发布成功，版本号为:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;deploymentId);<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img id="Codehighlighter1_1598_1663_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1598_1663_Open_Text.style.display='none'; Codehighlighter1_1598_1663_Closed_Image.style.display='inline'; Codehighlighter1_1598_1663_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1598_1663_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1598_1663_Closed_Text.style.display='none'; Codehighlighter1_1598_1663_Open_Image.style.display='inline'; Codehighlighter1_1598_1663_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1598_1663_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1598_1663_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;modelMap.put(</span><span style="color: #000000">"</span><span style="color: #000000">deploy</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">发布失败!</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ModelAndView(</span><span style="color: #000000">"</span><span style="color: #000000">/deploy</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;modelMap);<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<br />
deploy.jsp代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_2_83_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_83_Open_Text.style.display='none'; Codehighlighter1_2_83_Closed_Image.style.display='inline'; Codehighlighter1_2_83_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2_83_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2_83_Closed_Text.style.display='none'; Codehighlighter1_2_83_Open_Image.style.display='inline'; Codehighlighter1_2_83_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2_83_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2_83_Open_Text"><span style="background-color: #f5f5f5; color: #000000">@&nbsp;page&nbsp;language</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">java</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;contentType</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">text/html;&nbsp;charset=GBK</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="background-color: #f5f5f5; color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;pageEncoding</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">GBK</span><span style="background-color: #f5f5f5; color: #000000">"</span></span><span style="background-color: #ffff00; color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="text/html;&nbsp;charset=GBK"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">上传</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_305_366_Open_Image" onclick="this.style.display='none'; Codehighlighter1_305_366_Open_Text.style.display='none'; Codehighlighter1_305_366_Closed_Image.style.display='inline'; Codehighlighter1_305_366_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_305_366_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_305_366_Closed_Text.style.display='none'; Codehighlighter1_305_366_Open_Image.style.display='inline'; Codehighlighter1_305_366_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_305_366_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_305_366_Open_Text"><span style="background-color: #f5f5f5; color: #000000">&nbsp;<br />
</span><span style="color: #008080">11</span><span style="background-color: #f5f5f5; color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">String</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;deploy&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;request.getAttribute(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">deploy</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">).toString();<br />
</span><span style="color: #008080">12</span><span style="background-color: #f5f5f5; color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></span><span style="background-color: #ffff00; color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_378_400_Open_Image" onclick="this.style.display='none'; Codehighlighter1_378_400_Open_Text.style.display='none'; Codehighlighter1_378_400_Closed_Image.style.display='inline'; Codehighlighter1_378_400_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_378_400_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_378_400_Closed_Text.style.display='none'; Codehighlighter1_378_400_Open_Image.style.display='inline'; Codehighlighter1_378_400_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_378_400_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_378_400_Open_Text"><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="color: #008080">14</span><span style="background-color: #f5f5f5; color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />alert('</span><span style="background-color: #f5f5f5; color: #000000">&lt;%=</span><span style="background-color: #f5f5f5; color: #000000">deploy</span><span style="background-color: #f5f5f5; color: #000000">%&gt;</span><span style="background-color: #f5f5f5; color: #000000">');<br />
</span><span style="color: #008080">15</span><span style="background-color: #f5f5f5; color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="upform"</span><span style="color: #ff0000">&nbsp;action</span><span style="color: #0000ff">="deployAction"</span><span style="color: #ff0000">&nbsp;method</span><span style="color: #0000ff">="POST"</span><span style="color: #ff0000">&nbsp;enctype</span><span style="color: #0000ff">="multipart/form-data"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type&nbsp;</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="file1"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="file1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #ff0000">&amp;nbsp;&amp;nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;&nbsp;&lt;input&nbsp;type&nbsp;="file"&nbsp;name="file2"&nbsp;id="file2"/&gt;&amp;nbsp;&amp;nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="上传"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<br />
运行效果：<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/2010.09.06.2.jpg" width="549" height="146" /><br />
<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/2010.09.06.3.jpg" width="465" height="333" /><br />
<br />
本人测试环境：jdk6 + tomcat6.0.20<br />
源码: <a title="jbpm4.4_spring3" href="http://www.uushare.com/user/pengo/file/3485411">jbpm4.4_spring3</a> 
<img src ="http://www.blogjava.net/pengo/aggbug/331264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-09-07 00:55 <a href="http://www.blogjava.net/pengo/archive/2010/09/07/331264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm流程设计器开发（3）</title><link>http://www.blogjava.net/pengo/archive/2010/08/31/330346.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Mon, 30 Aug 2010 17:11:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/08/31/330346.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/330346.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/08/31/330346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/330346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/330346.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前两篇:jbpm流程设计器（1）jbpm流程设计器（2）在这一篇已经实现了流程的保存与打开，下面看代码首先写一个链表类来记录绘制流程图时的流程定义package&nbsp;com.workflow.designer.util;import&nbsp;java.io.Serializable;import&nbsp;java.util.ArrayList;im...&nbsp;&nbsp;<a href='http://www.blogjava.net/pengo/archive/2010/08/31/330346.html'>阅读全文</a><img src ="http://www.blogjava.net/pengo/aggbug/330346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-08-31 01:11 <a href="http://www.blogjava.net/pengo/archive/2010/08/31/330346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm流程设计器开发（2）</title><link>http://www.blogjava.net/pengo/archive/2010/08/25/329892.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Wed, 25 Aug 2010 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/08/25/329892.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/329892.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/08/25/329892.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/329892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/329892.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jbpm流程设计器开发（1）本篇主要实现了多个流程节点的绘制。部分功能代码FlowNode.xml主要配置流程节点的属性。&lt;?xml&nbsp;version="1.0"&nbsp;encoding="GBK"&nbsp;standalone="yes"?&gt;&lt;flowNode&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;node&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/pengo/archive/2010/08/25/329892.html'>阅读全文</a><img src ="http://www.blogjava.net/pengo/aggbug/329892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-08-25 15:24 <a href="http://www.blogjava.net/pengo/archive/2010/08/25/329892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm流程设计器开发（1）</title><link>http://www.blogjava.net/pengo/archive/2010/08/22/329599.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Sun, 22 Aug 2010 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/08/22/329599.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/329599.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/08/22/329599.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/329599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/329599.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 看了net博客介绍的不少wf流程设计器实现，也来介绍下java版的jbpm流程设计器来给大家看看。jbpm它本身也有基于eclipse插件和web版的流程设计器，不过一般我们使用jbpm开发时，都有很多自定义的东西，使用它自带的，会有一些不方便性，所以开发自定义的流程设计器，会有很多方便性。目前见过的用来开发流程设计器的组件有vml、svg、gef、jgraph，最近在javaeye上牛人介绍的Twave组件应该也适合用来开发。本篇将会介绍用jgraph来开发一个简单的jbpm4的流程设计器。jgraph官网：<a href="http://www.jgraph.com">www.jgraph.com</a>，目前有java版、javascript版、flash版，java版的jgraph是开源免费的，详细的介绍可以看官网。本文使用的JGraph版本是jgraphx 1.4.0.9（也叫jgraph6），它与jgraph5有很大的不同，实现类基本不同了。<br />
&nbsp;&nbsp;&nbsp; 本篇先实现流程节点的插入，目前只实现开始节点的插入，后续的文章将会陆续介绍其它功能的完成。</p>
<p>GUI直接使用swing，目前只实现在鼠标单击时，插入一个节点，主要实现代码类：</p>
<p>GraphImpl.java代码<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.workflow.designer.view;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Point;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.MouseEvent;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.MouseListener;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.mxgraph.swing.mxGraphComponent;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.mxgraph.view.mxGraph;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.workflow.designer.model.Node;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.workflow.designer.util.Logger;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_372_904_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_904_Open_Text.style.display='none'; Codehighlighter1_372_904_Closed_Image.style.display='inline'; Codehighlighter1_372_904_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_372_904_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_372_904_Closed_Text.style.display='none'; Codehighlighter1_372_904_Open_Image.style.display='inline'; Codehighlighter1_372_904_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;GraphImpl&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;mxGraphComponent&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;MouseListener</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_372_904_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_372_904_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">新建Jgraph面板，所有节点都绘制在该面板</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;mxGraph&nbsp;graph&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;mxGraph();<br />
<img id="Codehighlighter1_466_548_Open_Image" onclick="this.style.display='none'; Codehighlighter1_466_548_Open_Text.style.display='none'; Codehighlighter1_466_548_Closed_Image.style.display='inline'; Codehighlighter1_466_548_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_466_548_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_466_548_Closed_Text.style.display='none'; Codehighlighter1_466_548_Open_Image.style.display='inline'; Codehighlighter1_466_548_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;GraphImpl()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_466_548_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_466_548_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">(graph);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">给面板添加鼠标事件</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getGraphControl().addMouseListener(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;inser(Point&nbsp;p,&nbsp;Node&nbsp;n);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseClicked(MouseEvent&nbsp;e);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mousePressed(MouseEvent&nbsp;e);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseReleased(MouseEvent&nbsp;e);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseEntered(MouseEvent&nbsp;e);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseExited(MouseEvent&nbsp;e);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;<br />
<img id="Codehighlighter1_883_902_Open_Image" onclick="this.style.display='none'; Codehighlighter1_883_902_Open_Text.style.display='none'; Codehighlighter1_883_902_Closed_Image.style.display='inline'; Codehighlighter1_883_902_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_883_902_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_883_902_Closed_Text.style.display='none'; Codehighlighter1_883_902_Open_Image.style.display='inline'; Codehighlighter1_883_902_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;mxGraph&nbsp;getGraph()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_883_902_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_883_902_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;graph;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
GraphView.java代码<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.workflow.designer.view;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.Point;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.awt.event.MouseEvent;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.mxgraph.view.mxGraph;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.workflow.designer.model.Node;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.workflow.designer.util.Logger;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_251_1234_Open_Image" onclick="this.style.display='none'; Codehighlighter1_251_1234_Open_Text.style.display='none'; Codehighlighter1_251_1234_Closed_Image.style.display='inline'; Codehighlighter1_251_1234_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_251_1234_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_251_1234_Closed_Text.style.display='none'; Codehighlighter1_251_1234_Open_Image.style.display='inline'; Codehighlighter1_251_1234_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;GraphView&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;GraphImpl</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_251_1234_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_251_1234_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;mxGraph&nbsp;graph&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getGraph();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Object&nbsp;parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;graph.getDefaultParent();<br />
<img id="Codehighlighter1_366_374_Open_Image" onclick="this.style.display='none'; Codehighlighter1_366_374_Open_Text.style.display='none'; Codehighlighter1_366_374_Closed_Image.style.display='inline'; Codehighlighter1_366_374_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_366_374_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_366_374_Closed_Text.style.display='none'; Codehighlighter1_366_374_Open_Image.style.display='inline'; Codehighlighter1_366_374_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;GraphView()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_366_374_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_366_374_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_413_704_Open_Image" onclick="this.style.display='none'; Codehighlighter1_413_704_Open_Text.style.display='none'; Codehighlighter1_413_704_Closed_Image.style.display='inline'; Codehighlighter1_413_704_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_413_704_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_413_704_Closed_Text.style.display='none'; Codehighlighter1_413_704_Open_Image.style.display='inline'; Codehighlighter1_413_704_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;inser(Point&nbsp;p,&nbsp;Node&nbsp;n)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_413_704_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_413_704_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getGraph().getModel().beginUpdate();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_470_643_Open_Image" onclick="this.style.display='none'; Codehighlighter1_470_643_Open_Text.style.display='none'; Codehighlighter1_470_643_Closed_Image.style.display='inline'; Codehighlighter1_470_643_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_470_643_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_470_643_Closed_Text.style.display='none'; Codehighlighter1_470_643_Open_Image.style.display='inline'; Codehighlighter1_470_643_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_470_643_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_470_643_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">调用jgraph插入节点</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;v1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;graph.insertVertex(parent,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;n.getLabel(),&nbsp;p.getX()&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">,&nbsp;p.getY()&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">,&nbsp;n.getWidth(),<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n.getHeight(),&nbsp;n.getShape());<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000"><br />
<img id="Codehighlighter1_659_700_Open_Image" onclick="this.style.display='none'; Codehighlighter1_659_700_Open_Text.style.display='none'; Codehighlighter1_659_700_Closed_Image.style.display='inline'; Codehighlighter1_659_700_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_659_700_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_659_700_Closed_Text.style.display='none'; Codehighlighter1_659_700_Open_Image.style.display='inline'; Codehighlighter1_659_700_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_659_700_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_659_700_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph.getModel().endUpdate();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;<br />
<img id="Codehighlighter1_749_922_Open_Image" onclick="this.style.display='none'; Codehighlighter1_749_922_Open_Text.style.display='none'; Codehighlighter1_749_922_Closed_Image.style.display='inline'; Codehighlighter1_749_922_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_749_922_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_749_922_Closed_Text.style.display='none'; Codehighlighter1_749_922_Open_Image.style.display='inline'; Codehighlighter1_749_922_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseClicked(MouseEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_749_922_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_749_922_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;Point&nbsp;p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.getPoint();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">鼠标点击时，在jgraph面板上插入节点</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;inser(p,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Node(</span><span style="color: #000000">"</span><span style="color: #000000">开始</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">start</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">shape=ellipse;perimeter=ellipsePerimeter;</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mouseClicked</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_964_999_Open_Image" onclick="this.style.display='none'; Codehighlighter1_964_999_Open_Text.style.display='none'; Codehighlighter1_964_999_Closed_Image.style.display='inline'; Codehighlighter1_964_999_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_964_999_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_964_999_Closed_Text.style.display='none'; Codehighlighter1_964_999_Open_Image.style.display='inline'; Codehighlighter1_964_999_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mousePressed(MouseEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_964_999_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_964_999_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mousePressed</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_1042_1078_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1042_1078_Open_Text.style.display='none'; Codehighlighter1_1042_1078_Closed_Image.style.display='inline'; Codehighlighter1_1042_1078_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1042_1078_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1042_1078_Closed_Text.style.display='none'; Codehighlighter1_1042_1078_Open_Image.style.display='inline'; Codehighlighter1_1042_1078_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseReleased(MouseEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1042_1078_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1042_1078_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mouseReleased</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_1120_1155_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1120_1155_Open_Text.style.display='none'; Codehighlighter1_1120_1155_Closed_Image.style.display='inline'; Codehighlighter1_1120_1155_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1120_1155_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1120_1155_Closed_Text.style.display='none'; Codehighlighter1_1120_1155_Open_Image.style.display='inline'; Codehighlighter1_1120_1155_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseEntered(MouseEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1120_1155_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1120_1155_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mouseEntered</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_1196_1231_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1196_1231_Open_Text.style.display='none'; Codehighlighter1_1196_1231_Closed_Image.style.display='inline'; Codehighlighter1_1196_1231_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1196_1231_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1196_1231_Closed_Text.style.display='none'; Codehighlighter1_1196_1231_Open_Image.style.display='inline'; Codehighlighter1_1196_1231_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mouseExited(MouseEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1196_1231_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1196_1231_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mouseExited</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
<img border="0" alt="http://www.blogjava.net/pengo" src="http://www.blogjava.net/images/blogjava_net/pengo/2010.8.22.jpg" width="568" height="466" /><br />
<br />
待续。。。。。。。。。。。。</p>
<p>详细代码可以自己看附件的代码。</p>
<p><a title="源码" href="/Files/pengo/jgraphxflow.rar">源码jgraphxflow.rar</a><br />
<a title="运行程序" href="/Files/pengo/jgraphxflow.jar.rar">运行程序jgraphxflow.jar.rar</a><br />
&nbsp;</p> <img src ="http://www.blogjava.net/pengo/aggbug/329599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-08-22 23:22 <a href="http://www.blogjava.net/pengo/archive/2010/08/22/329599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm4.3与spring集成</title><link>http://www.blogjava.net/pengo/archive/2010/01/04/308219.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Mon, 04 Jan 2010 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2010/01/04/308219.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/308219.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2010/01/04/308219.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/308219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/308219.html</trackback:ping><description><![CDATA[jbpm4.2与spring集成有点问题，直接跟据它自己的&#8220;开发指南&#8221;提供的方法是不能集成的。在官网查到的信息是发布4.2时，忘记更新集成spring的文件。不过4.3已经把该bug改过来了。下面是集成方法。<br />
<br />
版本：<br />
jbpm4.3<br />
spring2.5.6<br />
mysql5.1.40<br />
<br />
直接从jbpm4.3自带的文件到src目录:<br />
从jbpm-4.3"install"src"cfg"hibernate"jdbc复制mysql.hibernate.cfg.xml到src目录，文件名改为hibernate.cfg.xml。<br />
从jbpm-4.3"install"src"cfg"spring复制applicationContext.xml到src目录。<br />
从jbpm-4.3"install"src"cfg"jbpm复制spring.jbpm.cfg.xml到src目录，文件名改为jbpm.cfg.xml。<br />
修改applicationContext.xml、hibernate.cfg.xml的数据库配置信息，jbpm4.3与spring的集成就完成了，可以自己写测试文件测试，集成非常容易。<br />
<br />
不过在applicationContext.xml和hibernate.cfg.xml两个文件都要改数据库信息有点麻烦，所以只复制applicationContext.xml、spring.jbpm.cfg.xml两个文件到src目录，把hibernate.cfg.xml的配置整进spring的配置文件applicationContext.xml中。<br />
applicationContext.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">beans&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.springframework.org/schema/beans"</span><span style="color: #ff0000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:aop</span><span style="color: #0000ff;">="http://www.springframework.org/schema/aop"</span><span style="color: #ff0000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:context</span><span style="color: #0000ff;">="http://www.springframework.org/schema/context"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:p</span><span style="color: #0000ff;">="http://www.springframework.org/schema/p"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:tx</span><span style="color: #0000ff;">="http://www.springframework.org/schema/tx"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff;">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff;">="<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/aop&nbsp;http://www.springframework.org/schema/aop/spring-aop-2.5.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/context&nbsp;http://www.springframework.org/schema/context/spring-context-2.5.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/tx&nbsp;http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;<br />
&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context:annotation-config&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean<br />
&nbsp;&nbsp;</span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;p:location</span><span style="color: #0000ff;">="hibernate.properties"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;p:ignoreUnresolvablePlaceholders</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="springHelper"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.jbpm.pvm.internal.processengine.SpringHelper"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="processEngine"</span><span style="color: #ff0000;">&nbsp;factory-bean</span><span style="color: #0000ff;">="springHelper"</span><span style="color: #ff0000;">&nbsp;factory-method</span><span style="color: #0000ff;">="createProcessEngine"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="mappingResources"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jbpm.repository.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jbpm.execution.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jbpm.history.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jbpm.task.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">jbpm.identity.hbm.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernateProperties"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">props</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.dialect"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${dataSource.dialect}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">prop&nbsp;</span><span style="color: #ff0000;">key</span><span style="color: #0000ff;">="hibernate.hbm2ddl.auto"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">${dataSource.hbm2ddl.auto}</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">prop</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">props</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="transactionManager"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;">&nbsp;ref</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;ref</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="dataSource"</span><span style="color: #ff0000;">&nbsp;class</span><span style="color: #0000ff;">="org.springframework.jdbc.datasource.DriverManagerDataSource"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="driverClassName"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="${dataSource.driverClassName}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="url"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="${dataSource.url}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="username"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="${dataSource.username}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="${dataSource.password}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">beans</span><span style="color: #0000ff;">&gt;</span></div>
<br />
新建文件hibernate.properties,主要用来配置连接数据库信息<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">dataSource.password=123<br />
dataSource.username=root<br />
dataSource.databaseName=jbpmdb<br />
dataSource.driverClassName=com.mysql.jdbc.Driver<br />
dataSource.dialect=org.hibernate.dialect.MySQLInnoDBDialect<br />
dataSource.serverName=localhost:3306<br />
dataSource.url=jdbc:mysql://${dataSource.serverName}/${dataSource.databaseName}<br />
dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}<br />
dataSource.hbm2ddl.auto=update</span></div>
以后要改数据库配置信息也只在这个文件修改就可以了。<br />
<br />
测试用的流程swing.jpdl.xml<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">process&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="swing"</span><span style="color: #ff0000;">&nbsp;xmlns</span><span style="color: #0000ff;">="http://jbpm.org/4.3/jpdl"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">start&nbsp;</span><span style="color: #ff0000;">g</span><span style="color: #0000ff;">="94,64,48,48"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="start1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">transition&nbsp;</span><span style="color: #ff0000;">g</span><span style="color: #0000ff;">="-52,-22"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="A"</span><span style="color: #ff0000;">&nbsp;to</span><span style="color: #0000ff;">="A"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">start</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">task&nbsp;</span><span style="color: #ff0000;">assignee</span><span style="color: #0000ff;">="A"</span><span style="color: #ff0000;">&nbsp;g</span><span style="color: #0000ff;">="73,195,92,52"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="A"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">transition&nbsp;</span><span style="color: #ff0000;">g</span><span style="color: #0000ff;">="-52,-22"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="B"</span><span style="color: #ff0000;">&nbsp;to</span><span style="color: #0000ff;">="B"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">task</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">task&nbsp;</span><span style="color: #ff0000;">assignee</span><span style="color: #0000ff;">="B"</span><span style="color: #ff0000;">&nbsp;g</span><span style="color: #0000ff;">="266,192,92,52"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="B"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">transition&nbsp;</span><span style="color: #ff0000;">g</span><span style="color: #0000ff;">="-40,-21"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="end"</span><span style="color: #ff0000;">&nbsp;to</span><span style="color: #0000ff;">="end1"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">task</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">end&nbsp;</span><span style="color: #ff0000;">g</span><span style="color: #0000ff;">="290,327,48,48"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="end1"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">process</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
测试代码<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Main&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClassPathXmlApplicationContext&nbsp;applicationContext&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ClassPathXmlApplicationContext(</span><span style="color: #000000;">"</span><span style="color: #000000;">applicationContext.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;applicationContext.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(ProcessEngine)applicationContext.getBean(</span><span style="color: #000000;">"</span><span style="color: #000000;">processEngine</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExecutionService&nbsp;executionService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getExecutionService();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TaskService&nbsp;taskService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getTaskService();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">发布流程</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;deploymentId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getRepositoryService().createDeployment()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addResourceFromClasspath(</span><span style="color: #000000;">"</span><span style="color: #000000;">resource/swing.jpdl.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">).deploy();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">流程发布ID:</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">deploymentId);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">启动一个流程实例</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessInstance&nbsp;processInstance&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;executionService.startProcessInstanceByKey(</span><span style="color: #000000;">"</span><span style="color: #000000;">swing</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">流程实例ID:</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;processInstance.getId());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">A处理任务</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Task</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;taskList_A&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;taskService.findPersonalTasks(</span><span style="color: #000000;">"</span><span style="color: #000000;">A</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">A待处理任务数:</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;taskList_A.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(taskList_A.size()&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Task&nbsp;task&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;taskList_A.get(</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskService.completeTask(task.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">B处理任务</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Task</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;taskList_B&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;taskService.findPersonalTasks(</span><span style="color: #000000;">"</span><span style="color: #000000;">B</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">B待处理任务数:</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;taskList_B.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(taskList_B.size()&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Task&nbsp;task&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;taskList_B.get(</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskService.completeTask(task.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span></div>
<br />
附件是完整的集成文件和测试代码,仅在spring2.5.6测试过,要运行该部分代码,需要添加jbpm4.3和spring的相关库文件。<br />
源代码:<a href="/Files/pengo/jbpm4.3-spring.2010.1.4.rar" title="jbpm4.3-spring">jbpm4.3-spring</a><br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/pengo/aggbug/308219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2010-01-04 23:54 <a href="http://www.blogjava.net/pengo/archive/2010/01/04/308219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBPM4.2 Services简介</title><link>http://www.blogjava.net/pengo/archive/2009/12/14/305977.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Mon, 14 Dec 2009 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2009/12/14/305977.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/305977.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2009/12/14/305977.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/305977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/305977.html</trackback:ping><description><![CDATA[JBPM4.2 Services简介<br />
先看一个简单的流程发布例子:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Configuration&nbsp;configuration&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Configuration();<br />
&nbsp;&nbsp;&nbsp;&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configuration.buildProcessEngine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;RepositoryService&nbsp;repositoryService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getRepositoryService();<br />
&nbsp;&nbsp;&nbsp;&nbsp;ExecutionService&nbsp;executionService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getExecutionService();<br />
&nbsp;&nbsp;&nbsp;&nbsp;TaskService&nbsp;taskService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getTaskService();<br />
&nbsp;&nbsp;&nbsp;&nbsp;HistoryService&nbsp;historyService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;processEngine.getHistoryService();<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;deploymentId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;repositoryService.createDeployment().addResourceFromClasspath(</span><span style="color: #000000;">"</span><span style="color: #000000;">org/jbpm/examples/services/Order.jpdl.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">).deploy();<br />
&nbsp;}</span></div>
<br />
<br />
1.ProcessEngine<br />
下边的服务接口都可以直接从ProcessEngine中获得,它是由Configuration构建的.<br />
Configuration configuration = new Configuration();<br />
ProcessEngine processEngine = configuration.buildProcessEngine();<br />
上边代码是直接构建一个流程引擎processEngine ,默认情况下new Configuration()读取的配置文件是src目录下的jbpm.cfg.xml。如果你要使用其它的流程服务配置，可以使用Configuration的setResource()指定。<br />
<br />
2.RepositoryService<br />
负责发布流程、删除流程、暂停/恢复流程、查询发布等。<br />
<br />
3.ExecutionService<br />
启动流程实例、执行等待状态的流程实例、终止流程实例、删除流程实例、查询实例等。<br />
<br />
4.TaskService<br />
提供对任务信息的处理（获取任务节点的任务人，以及完成任务，让流程跑到下一个节点等）。<br />
<br />
5.HistoryService<br />
流程的历史信息(已完成的流程实例、活动、任务)会被保存到历史数据库表中,HistoryService提供对这些历史信息的访问方法。<br />
<br />
参考资料:jbpm4.2安装包中附带的用户手册(jbpm-4.2/doc/userguide)
<img src ="http://www.blogjava.net/pengo/aggbug/305977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2009-12-14 23:34 <a href="http://www.blogjava.net/pengo/archive/2009/12/14/305977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBPM4.2小例子(swing实现)</title><link>http://www.blogjava.net/pengo/archive/2009/12/09/305226.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Tue, 08 Dec 2009 16:51:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2009/12/09/305226.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/305226.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2009/12/09/305226.html#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/305226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/305226.html</trackback:ping><description><![CDATA[<p>本次用的是一个特别流程,假设C提交一个表单,这个表单需要给A和B阅读,而A和B阅读过后,流程结束.<br />
流程定义文件swing.jpdl.xml<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">process&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="swing"</span><span style="color: #ff0000">&nbsp;xmlns</span><span style="color: #0000ff">="http://jbpm.org/4.0/jpdl"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">start&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="94,64,48,48"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="start1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">transition&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="-52,-22"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="A"</span><span style="color: #ff0000">&nbsp;to</span><span style="color: #0000ff">="A"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">start</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">task&nbsp;</span><span style="color: #ff0000">assignee</span><span style="color: #0000ff">="A"</span><span style="color: #ff0000">&nbsp;g</span><span style="color: #0000ff">="73,195,92,52"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="A"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">transition&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="-52,-22"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="B"</span><span style="color: #ff0000">&nbsp;to</span><span style="color: #0000ff">="B"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">task</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">task&nbsp;</span><span style="color: #ff0000">assignee</span><span style="color: #0000ff">="B"</span><span style="color: #ff0000">&nbsp;g</span><span style="color: #0000ff">="266,192,92,52"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="B"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">transition&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="-40,-21"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="end"</span><span style="color: #ff0000">&nbsp;to</span><span style="color: #0000ff">="end1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">task</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">end&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="290,327,48,48"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="end1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">process</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
流程图<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/swing.png" width="640" height="375" /><br />
</p>
<p>增加两个表:<br />
用户表p_user:<br />
USER_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用户登录ID<br />
PASSWORD_&nbsp; 用户登录密码</p>
<p>表单数据表p_form:<br />
ID_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表单编号<br />
TITLE_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表单标题<br />
CONTENT_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表单内容<br />
PROCESS_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 流程实例ID<br />
p_form除了记录表单数据,还记录启动流程实例的ID,这个表负责把表单和流程关联起来.</p>
<p><br />
提交表单时的操作,FormPanel.java部分代码:<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">okBtn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JButton(</span><span style="color: #000000">"</span><span style="color: #000000">提交表单</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_73_409_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_409_Open_Text.style.display='none'; Codehighlighter1_73_409_Closed_Image.style.display='inline'; Codehighlighter1_73_409_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_73_409_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_73_409_Closed_Text.style.display='none'; Codehighlighter1_73_409_Open_Image.style.display='inline'; Codehighlighter1_73_409_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" />okBtn.addActionListener(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_73_409_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_73_409_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_117_407_Open_Image" onclick="this.style.display='none'; Codehighlighter1_117_407_Open_Text.style.display='none'; Codehighlighter1_117_407_Closed_Image.style.display='inline'; Codehighlighter1_117_407_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_117_407_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_117_407_Closed_Text.style.display='none'; Codehighlighter1_117_407_Open_Image.style.display='inline'; Codehighlighter1_117_407_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(ActionEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_117_407_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_117_407_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;String&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;title.getText().trim();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;String&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;content.getText().trim();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;String&nbsp;processId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;startProcessInstance();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;DataBase&nbsp;db&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataBase();<br />
<img id="Codehighlighter1_306_405_Open_Image" onclick="this.style.display='none'; Codehighlighter1_306_405_Open_Text.style.display='none'; Codehighlighter1_306_405_Closed_Image.style.display='inline'; Codehighlighter1_306_405_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_306_405_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_306_405_Closed_Text.style.display='none'; Codehighlighter1_306_405_Open_Image.style.display='inline'; Codehighlighter1_306_405_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(db.saveForm(t,&nbsp;c,&nbsp;processId))</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_306_405_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_306_405_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;JOptionPane.showMessageDialog(</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">保存表单数据成功:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;title.setText(</span><span style="color: #000000">""</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;content.setText(</span><span style="color: #000000">""</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_462_967_Open_Image" onclick="this.style.display='none'; Codehighlighter1_462_967_Open_Text.style.display='none'; Codehighlighter1_462_967_Closed_Image.style.display='inline'; Codehighlighter1_462_967_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_462_967_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_462_967_Closed_Text.style.display='none'; Codehighlighter1_462_967_Open_Image.style.display='inline'; Codehighlighter1_462_967_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;startProcessInstance()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_462_967_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_462_967_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;Configuration&nbsp;configuration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Configuration();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;configuration.buildProcessEngine();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;RepositoryService&nbsp;repositoryService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getRepositoryService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;ExecutionService&nbsp;executionService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getExecutionService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;ProcessInstance&nbsp;processInstance&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;executionService.startProcessInstanceByKey(</span><span style="color: #000000">"</span><span style="color: #000000">swing</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_850_906_Open_Image" onclick="this.style.display='none'; Codehighlighter1_850_906_Open_Text.style.display='none'; Codehighlighter1_850_906_Closed_Image.style.display='inline'; Codehighlighter1_850_906_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_850_906_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_850_906_Closed_Text.style.display='none'; Codehighlighter1_850_906_Open_Image.style.display='inline'; Codehighlighter1_850_906_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(processInstance&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_850_906_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_850_906_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">请先发布流程.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_913_953_Open_Image" onclick="this.style.display='none'; Codehighlighter1_913_953_Open_Text.style.display='none'; Codehighlighter1_913_953_Closed_Image.style.display='inline'; Codehighlighter1_913_953_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_913_953_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_913_953_Closed_Text.style.display='none'; Codehighlighter1_913_953_Open_Image.style.display='inline'; Codehighlighter1_913_953_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">else</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_913_953_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_913_953_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;processInstance.getId();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
代码很简单,行获取表单的数据,再启动流程实例,并把表单数据和流程实例ID一起保存在数据库表p_form.</p>
<p><br />
在用户处理任务时,先根据用户的ID查找到该用户的待处理任务,并把它添加到任务列表中,<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">DefaultListModel&nbsp;v&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DefaultListModel();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getTaskList(Login.userName);<br />
<img id="Codehighlighter1_105_366_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_366_Open_Text.style.display='none'; Codehighlighter1_105_366_Closed_Image.style.display='inline'; Codehighlighter1_105_366_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_105_366_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_105_366_Closed_Text.style.display='none'; Codehighlighter1_105_366_Open_Image.style.display='inline'; Codehighlighter1_105_366_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(list.size()&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_105_366_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_105_366_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_144_364_Open_Image" onclick="this.style.display='none'; Codehighlighter1_144_364_Open_Text.style.display='none'; Codehighlighter1_144_364_Closed_Image.style.display='inline'; Codehighlighter1_144_364_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_144_364_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_144_364_Closed_Text.style.display='none'; Codehighlighter1_144_364_Open_Image.style.display='inline'; Codehighlighter1_144_364_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;s&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;list.size();&nbsp;s</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_144_364_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_144_364_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Task&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Task)list.get(s);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;String&nbsp;executionId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t.getExecutionId();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;DataBase&nbsp;db&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataBase();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;TaskPojo&nbsp;tp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;db.findForm(executionId);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;tp.setTaskId(t.getId());<br />
<img id="Codehighlighter1_336_361_Open_Image" onclick="this.style.display='none'; Codehighlighter1_336_361_Open_Text.style.display='none'; Codehighlighter1_336_361_Closed_Image.style.display='inline'; Codehighlighter1_336_361_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_336_361_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_336_361_Closed_Text.style.display='none'; Codehighlighter1_336_361_Open_Image.style.display='inline'; Codehighlighter1_336_361_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(tp&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_336_361_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_336_361_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;v.addElement(tp);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />jList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JList(v);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" />.<br />
<img id="Codehighlighter1_447_1057_Open_Image" onclick="this.style.display='none'; Codehighlighter1_447_1057_Open_Text.style.display='none'; Codehighlighter1_447_1057_Closed_Image.style.display='inline'; Codehighlighter1_447_1057_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_447_1057_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_447_1057_Closed_Text.style.display='none'; Codehighlighter1_447_1057_Open_Image.style.display='inline'; Codehighlighter1_447_1057_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" />&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;List&nbsp;getTaskList(String&nbsp;userId)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_447_1057_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_447_1057_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_476_520_Open_Image" onclick="this.style.display='none'; Codehighlighter1_476_520_Open_Text.style.display='none'; Codehighlighter1_476_520_Closed_Image.style.display='inline'; Codehighlighter1_476_520_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_476_520_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_476_520_Closed_Text.style.display='none'; Codehighlighter1_476_520_Open_Image.style.display='inline'; Codehighlighter1_476_520_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(configuration&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_476_520_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_476_520_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;configuration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Configuration();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;configuration.buildProcessEngine();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RepositoryService&nbsp;repositoryService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getRepositoryService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExecutionService&nbsp;executionService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getExecutionService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TaskService&nbsp;taskService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getTaskService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HistoryService&nbsp;historyService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getHistoryService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ManagementService&nbsp;managementService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getManagementService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">Task</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;taskList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;taskService.findPersonalTasks(userId);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;taskList;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />用户处理任务,根据列表中选中记录中的流程实例任务ID,调用taskService.completeTask(taskId)完成任务,<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />okBtn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JButton(</span><span style="color: #000000">"</span><span style="color: #000000">审阅通过</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_1202_1573_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1202_1573_Open_Text.style.display='none'; Codehighlighter1_1202_1573_Closed_Image.style.display='inline'; Codehighlighter1_1202_1573_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1202_1573_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1202_1573_Closed_Text.style.display='none'; Codehighlighter1_1202_1573_Open_Image.style.display='inline'; Codehighlighter1_1202_1573_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" />okBtn.addActionListener(&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionListener()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1202_1573_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1202_1573_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1247_1571_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1247_1571_Open_Text.style.display='none'; Codehighlighter1_1247_1571_Closed_Image.style.display='inline'; Codehighlighter1_1247_1571_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1247_1571_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1247_1571_Closed_Text.style.display='none'; Codehighlighter1_1247_1571_Open_Image.style.display='inline'; Codehighlighter1_1247_1571_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;actionPerformed(ActionEvent&nbsp;e)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1247_1571_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1247_1571_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Object&nbsp;o&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jList.getSelectedValue();<br />
<img id="Codehighlighter1_1315_1568_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1315_1568_Open_Text.style.display='none'; Codehighlighter1_1315_1568_Closed_Image.style.display='inline'; Codehighlighter1_1315_1568_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1315_1568_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1315_1568_Closed_Text.style.display='none'; Codehighlighter1_1315_1568_Open_Image.style.display='inline'; Codehighlighter1_1315_1568_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(o&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;TaskPojo)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1315_1568_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1315_1568_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;TaskPojo&nbsp;tp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(TaskPojo)o;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;completeTask(tp.getTaskId());<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(</span><span style="color: #0000ff">null</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">审核已经通过!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;DefaultListModel&nbsp;dl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DefaultListModel)jList.getModel();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;dl.remove(jList.getSelectedIndex());<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;buttomPanel.setVisible(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" />..<br />
<img id="Codehighlighter1_1638_1871_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1638_1871_Open_Text.style.display='none'; Codehighlighter1_1638_1871_Closed_Image.style.display='inline'; Codehighlighter1_1638_1871_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1638_1871_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1638_1871_Closed_Text.style.display='none'; Codehighlighter1_1638_1871_Open_Image.style.display='inline'; Codehighlighter1_1638_1871_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;completeTask(String&nbsp;taskId)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1638_1871_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1638_1871_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1666_1708_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1666_1708_Open_Text.style.display='none'; Codehighlighter1_1666_1708_Closed_Image.style.display='inline'; Codehighlighter1_1666_1708_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1666_1708_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1666_1708_Closed_Text.style.display='none'; Codehighlighter1_1666_1708_Open_Image.style.display='inline'; Codehighlighter1_1666_1708_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(configuration&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1666_1708_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1666_1708_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;configuration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Configuration();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;configuration.buildProcessEngine();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;TaskService&nbsp;taskService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getTaskService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;taskService.completeTask(taskId);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
数据库中登录用户:<br />
帐号:A&nbsp; 密码:123<br />
帐号:B&nbsp; 密码:123<br />
帐号:D&nbsp; 密码:123</p>
<p>用户D登录<br />
图1<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/1.GIF" width="200" height="200" /><br />
<br />
图2<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/2.GIF" width="500" height="400" /><br />
</p>
<p>用户A登录<br />
图3<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/3.GIF" width="200" height="200" /><br />
<br />
查看待办任务<br />
图4<br />
</p>
<p><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/4.GIF" width="500" height="400" /><br />
用户B登录<br />
图5<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/5.GIF" width="200" height="200" /><br />
查看B的待办任务<br />
图6<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/6.GIF" width="500" height="400" /><br />
</p>
<p>本人的开发环境<br />
eclipse3.5<br />
JBPM4.2<br />
mysql-essential-5.1.40-win32<br />
JDK1.6<br />
要运行这个例子,需要修改jbpm.hibernate.cfg.xml,DataBase.java数据库的连接信息</p>
<p>测试代码:<a title="jbpmTest" href="/Files/pengo/jbpmTest12.8.rar">jbpmTest</a><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/pengo/aggbug/305226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2009-12-09 00:51 <a href="http://www.blogjava.net/pengo/archive/2009/12/09/305226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBPM4.2安装(2)</title><link>http://www.blogjava.net/pengo/archive/2009/12/04/304718.html</link><dc:creator>pengo</dc:creator><author>pengo</author><pubDate>Thu, 03 Dec 2009 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/pengo/archive/2009/12/04/304718.html</guid><wfw:comment>http://www.blogjava.net/pengo/comments/304718.html</wfw:comment><comments>http://www.blogjava.net/pengo/archive/2009/12/04/304718.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pengo/comments/commentRss/304718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengo/services/trackbacks/304718.html</trackback:ping><description><![CDATA[上一篇:<a id="ctl03_TitleUrl" class="singleposttitle" href="http://www.cnblogs.com/pengo/archive/2009/12/02/1615408.html">JBPM4.2安装</a> <br />
继续完成上一篇的安装.<br />
<p><br />
4.在eclipse上安装流程设计器（GPD）,有两个安装方法。<br />
4.1.使用Eclipse软件升级（Software Update）机制安装设计器<br />
在gpd目录下有一个gpd/jbpm-gpd-site.zip文件， 这就是更新站点（archived update site）的 压缩包。</p>
<p>在Eclipse里添加更新站点的方法：</p>
<p>帮助 --&gt; 安装新软件...<br />
点击 添加... <br />
在 添加站点 对话框中，单击 压缩包...<br />
找到 gpd/jbpm-gpd-site.zip 并点击 '打开'<br />
点击 确定 在 添加站点 对话框中，会返回到 '安装'对话框<br />
选择出现的 jPDL 4 GPD 更新站点 <br />
点击 下一步.. 然后点击 完成<br />
接受协议<br />
当它询问的时候重启eclipse<br />
重新启动Eclipse,直接按Ctrl+N或File&#8594;New&#8594;other,你可以在对话框中看到有JBoss jBPM下有jBPM 4 Process Definition选项</p>
<p>4.2.自己去官网下载设计器<br />
地址：http://sourceforge.net/projects/jbpm/files/在里面选择jBPM Process Designer的最新版本下载（不同的jpd版本要与相应的Eclipse版本对应，不然会出现一些小问题）。<br />
下载回来后，解压出来后把里面features，plugins里的包放进Eclipse相应文件夹features，plugins里面。<br />
重新启动Eclipse,直接按Ctrl+N或File&#8594;New&#8594;other,你可以在对话框中看到有JBoss jBPM下有jBPM 4 Process Definition选项</p>
<p>不过截止今天2009年12月3日，用Eclipse Update得到的GPD版本为jpdl4_1.2.0,而网上下载的是jpdl4_0.0.0,GPD节点的属性与用户指南文档的介绍也不一致。</p>
<p>5.定义jBPM用户库<br />
5.1在工作空间定义一个用户库， 用来放置jBPM的库文件。<br />
&nbsp;&nbsp;&nbsp; 点击窗口 --&gt; 属性（Windows --&gt; Preferences）<br />
&nbsp;&nbsp;&nbsp; 选择Java --&gt; 创建路径 --&gt; 用户类库（Java --&gt; Build Path --&gt; User Libraries）<br />
&nbsp;&nbsp;&nbsp; 点击新建（New）<br />
&nbsp;&nbsp;&nbsp; 类型名字jBPM Libraries<br />
&nbsp;&nbsp;&nbsp; 点击添加JARs（Add JARs...）<br />
&nbsp;&nbsp;&nbsp; 找到jBPM安装程序下的lib目录<br />
&nbsp;&nbsp;&nbsp; 选择lib下的所有jar文件并点击打开（Open）<br />
&nbsp;&nbsp;&nbsp; 选择jBPM Libraries作为入口<br />
&nbsp;&nbsp;&nbsp; 重新点击添加JARs（Add JARs）<br />
&nbsp;&nbsp;&nbsp; 在jBPM的安装程序的根目录下选择jbpm.jar文件<br />
&nbsp;&nbsp;&nbsp; 点击打开（Open）<br />
&nbsp;&nbsp;&nbsp; 在jbpm.jar下选择源码附件（Source attachment）作为入口<br />
&nbsp;&nbsp;&nbsp; 点击编辑（Edit）<br />
&nbsp;&nbsp;&nbsp; 在源码附件的配置（Source Attachment Configuration）对话框中，点击目录（External Folder...）<br />
&nbsp;&nbsp;&nbsp; 到jBPM安装程序下的src目录<br />
&nbsp;&nbsp;&nbsp; 点击选择（Choose）<br />
&nbsp;&nbsp;&nbsp; 点击两次'确定'（Ok）会关闭所有对话框</p>
<p>6.测试<br />
6.1.现在开始新建一个例子测试下。<br />
新建一个java project,名test。<br />
右击test项目工程,选择Properties&#8594;Java Build Path&#8594;Libraries&#8594;Add Library&#8594;User Lirary&#8594;jBPM Libraries(引入用户库5.1建立的用户库jBPM Libraries)<br />
如果没有执行5.1步骤,在Java Build Path&#8594;Libraries中选择Add External JARs把JBPM4.2/lib的包和JBPM4.2目录下的JBPM.jar加入到库中。</p>
<p>新建流程定义文新建src/jbpm/Order.jpdl.xml,这个文件的内容来自jbpm4.2jbpm-4.2\examples\src\org\jbpm\examples\services目录下<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">process&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Order"</span><span style="color: #ff0000">&nbsp;xmlns</span><span style="color: #0000ff">="http://jbpm.org/4.2/jpdl"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">start&nbsp;</span><span style="color: #ff0000">g</span><span style="color: #0000ff">="16,19,48,48"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">transition&nbsp;</span><span style="color: #ff0000">to</span><span style="color: #0000ff">="receive&nbsp;confirmation"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">start</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">state&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="receive&nbsp;confirmation"</span><span style="color: #ff0000">&nbsp;g</span><span style="color: #0000ff">="96,16,136,52"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">transition&nbsp;</span><span style="color: #ff0000">to</span><span style="color: #0000ff">="end"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">state</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">end&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="end"</span><span style="color: #ff0000">&nbsp;g</span><span style="color: #0000ff">="269,20,48,48"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">process</span><span style="color: #0000ff">&gt;</span></div>
<p><br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/Order.png" width="530" height="369" /><br />
</p>
<p>新建类src/jbpm/JbpmTest.java<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;jbpm;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.Configuration;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.ExecutionService;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.HistoryService;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.ManagementService;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.ProcessEngine;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.RepositoryService;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.jbpm.api.TaskService;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img style="display: inline" id="Codehighlighter1_293_982_Open_Image" onclick="this.style.display='none'; Codehighlighter1_293_982_Open_Text.style.display='none'; Codehighlighter1_293_982_Closed_Image.style.display='inline'; Codehighlighter1_293_982_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_293_982_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_293_982_Closed_Text.style.display='none'; Codehighlighter1_293_982_Open_Image.style.display='inline'; Codehighlighter1_293_982_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;JbpmTest&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_293_982_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span style="display: inline" id="Codehighlighter1_293_982_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_336_980_Open_Image" onclick="this.style.display='none'; Codehighlighter1_336_980_Open_Text.style.display='none'; Codehighlighter1_336_980_Closed_Image.style.display='inline'; Codehighlighter1_336_980_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_336_980_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_336_980_Closed_Text.style.display='none'; Codehighlighter1_336_980_Open_Image.style.display='inline'; Codehighlighter1_336_980_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_336_980_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_336_980_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Configuration&nbsp;configuration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Configuration();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProcessEngine&nbsp;processEngine&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;configuration.buildProcessEngine();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RepositoryService&nbsp;repositoryService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getRepositoryService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExecutionService&nbsp;executionService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getExecutionService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TaskService&nbsp;taskService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getTaskService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HistoryService&nbsp;historyService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getHistoryService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ManagementService&nbsp;managementService&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;processEngine.getManagementService();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;deploymentId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;repositoryService.createDeployment()<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addResourceFromClasspath(</span><span style="color: #000000">"</span><span style="color: #000000">jbpm/Order.jpdl.xml</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.deploy();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><br />
从jbpm-4.2\src目录下找到jbpm.cfg.xml，jbpm.hibernate.cfg.xml，jbpm.mail.properties，jbpm.mail.templates.examples.xml复制到test/src目录下，<br />
修改jbpm.hibernate.cfg.xml文件中的数据库连接(使用Mysql)。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/jbpmdb&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.connection.password"&gt;123&lt;/property&gt;</p>
<p>运行JbpmTest代码。</p>
<p>如果出现[JDBCExceptionReporter] Cannot delete or update a parent row: a foreign key constraint fails (`jbpm`.`jbpm4_execution`, CONSTRAINT `FK_EXEC_INSTANCE` FOREIGN KEY (`INSTANCE_`) REFERENCES `jbpm4_execution` (`DBID_`))<br />
错误，把hibernate.dialect改为&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLInnoDBDialect&lt;/property&gt;</p>
<p>&nbsp;</p>
<p>运行成功后,按启动上一篇JBPM4.2安装的tomcat,访问<a href="http://localhost:8080/jbpm-console">http://localhost:8080/jbpm-console</a>，登录JBPM控制台，可以看到刚才发布的流程<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/pengo/jbpm.gif" width="700" height="337" /><br />
在数据库中也可看到jbpm4_deployment,jbpm4_deployprop,jbpm4_lob多了数据.<br />
如果访问http://localhost:8080/jbpm-console时出现登录失败，需要在发布后重新加载用户信息，进入jbpm-4.2\install,运行ant load.example.identities命令。出现这个问题的原因是因为在jbpm.hibernate.cfg.xml这个文件中配置问题，可以把 &lt;mapping resource="jbpm.identity.hbm.xml" /&gt; 这一句删除或注释掉，就不会出现发布时清空用户的问题。</p>
<p>&nbsp;测试代码:<a title="jbpmTest.rar" href="http://www.blogjava.net/Files/pengo/jbpmTest.rar">jbpmTest.rar</a></p>
 <img src ="http://www.blogjava.net/pengo/aggbug/304718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengo/" target="_blank">pengo</a> 2009-12-04 00:08 <a href="http://www.blogjava.net/pengo/archive/2009/12/04/304718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>