??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品影视在线观看,高清av一区,激情五月播播久久久精品http://www.aygfsteel.com/pengo/category/43025.htmlzh-cnSun, 03 Oct 2010 06:28:47 GMTSun, 03 Oct 2010 06:28:47 GMT60JBPM4.4发布zip程包和程图显C?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pengo/archive/2010/10/02/333645.html</guid><wfw:comment>http://www.aygfsteel.com/pengo/comments/333645.html</wfw:comment><comments>http://www.aygfsteel.com/pengo/archive/2010/10/02/333645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pengo/comments/commentRss/333645.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pengo/services/trackbacks/333645.html</trackback:ping><description><![CDATA[     摘要: 上一在spring mvc下发布jbpm程只介l了(jin)发布jpdl的流E定义文Ӟq没有把程图也一起发布,本篇把程定义文g和流E图一h包ؓ(f)zip格式发布? 先介ljbpm程设计器开发(3Q的代码修改 com.workflow.designer.view.Menu.java代码Q主要是增加生成囄和把jpdl和图片打包ؓ(f)zip文g? 1saveItem.addActi...  <a href='http://www.aygfsteel.com/pengo/archive/2010/10/02/333645.html'>阅读全文</a><img src ="http://www.aygfsteel.com/pengo/aggbug/333645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pengo/" target="_blank">pengo</a> 2010-10-02 11:15 <a href="http://www.aygfsteel.com/pengo/archive/2010/10/02/333645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在spring mvc下发布jbpm程http://www.aygfsteel.com/pengo/archive/2010/09/07/331264.htmlpengopengoMon, 06 Sep 2010 16:55:00 GMThttp://www.aygfsteel.com/pengo/archive/2010/09/07/331264.htmlhttp://www.aygfsteel.com/pengo/comments/331264.htmlhttp://www.aygfsteel.com/pengo/archive/2010/09/07/331264.html#Feedback0http://www.aygfsteel.com/pengo/comments/commentRss/331264.htmlhttp://www.aygfsteel.com/pengo/services/trackbacks/331264.html spring 3.0
jbpm4.4
hsqldb
hibernate
其中h(hun)sqldb和hibernate都是从jbpm4.4的lib文g多w面拷q去的?br /> 本篇不再介绍jbpm与spring集成和spring mvc两方面的内容Q有需要,L(fng)之前的文?br /> jbpm4.3与spring集成L(fng)http://www.aygfsteel.com/pengo/archive/2010/01/04/308219.html
spring3.0 mvc和rest例子请?a title="http://www.aygfsteel.com/pengo/archive/2010/07/03/325164.html" href="http://www.aygfsteel.com/pengo/archive/2010/07/03/325164.html">http://www.aygfsteel.com/pengo/archive/2010/07/03/325164.html

本篇只实C个功能,上传程定义文g和发布该上传的流E定义文件?br /> 使用的流E定义文件是使用上一jbpm程设计器生成的定义文gQ?br /> 有关jbpm程设计器介l,L(fng)http://www.aygfsteel.com/pengo/archive/2010/08/31/330346.html

程?


把流E图保存为test.jpdl.xml
 1<?xml version="1.0" encoding="GBK"?>
 2<process name="process" xmlns="http://jbpm.org/4.4/jpdl">
 3<start name="开?/span>" g="83,34,40,40">
 4    <transition name="to d" g="0,0" to="d" />
 5</start>
 6<task name="d" g="231,78,80,40">
 7    <transition name="to l束" g="0,0" to="l束" />
 8</task>
 9<end name="l束" g="173,188,40,40" />
10</process>


RestController.java的发布处理代码:(x)

 1@RequestMapping(value = "/deployAction", method = RequestMethod.POST)
 2 public ModelAndView deployAction(HttpServletRequest request,
 3   HttpServletResponse response, ModelMap modelMap) {
 4  String realPath = request.getSession().getServletContext().getRealPath(
 5    "")
 6    + "/WEB-INF/deploy/"
 7  try {
 8   if (ServletFileUpload.isMultipartContent(request)) {
 9    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
10    for (Iterator it = multipartRequest.getFileNames(); it
11      .hasNext();) {
12     String key = (String) it.next();
13     MultipartFile file = multipartRequest.getFile(key);
14     if (file.getOriginalFilename().length() > 0{
15      String filename = file.getOriginalFilename();
16      File saveFile = new File(realPath + filename);
17      FileOutputStream fos = new FileOutputStream(saveFile);
18     //保存上传的流E定义文?/span>
19      fos.write(file.getBytes());
20      fos.flush();
21      fos.close();
22
23      ApplicationContext ctx = new ClassPathXmlApplicationContext(
24        "applicationContext.xml");
25        //调用已定义的Bean
26      ProcessEngine processEngine = (ProcessEngine) ctx
27        .getBean("processEngine");
28      File deployFile = new File(saveFile.getAbsolutePath());
29      if (deployFile.exists()) {
30       // 发布程
31       String deploymentId = processEngine
32         .getRepositoryService().createDeployment()
33         .addResourceFromFile(deployFile).deploy();
34       System.out.println("========================ID:"
35         + deploymentId);
36       modelMap.put("deploy""发布成功Q版本号?" + deploymentId);
37      }

38
39     }

40    }

41   }

42  }
 catch (Exception e) {
43   modelMap.put("deploy""发布p|!" );
44   e.printStackTrace();
45  }

46
47  return new ModelAndView("/deploy", modelMap);
48 }

49

deploy.jsp代码Q?br />
 1<%@ page language="java" contentType="text/html; charset=GBK"
 2    pageEncoding="GBK"
%>
 3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4<html>
 5<head>
 6<meta http-equiv="Content-Type" content="text/html; charset=GBK">
 7<title>上传</title>
 8</head>
 9<body>
10<% 
11    String deploy = request.getAttribute("deploy").toString();
12
%>
13<script>
14alert('<%=deploy%>');
15
</script>
16<form name="upform" action="deployAction" method="POST" enctype="multipart/form-data">  
17    &nbsp;&nbsp;&nbsp;&nbsp;
18    <input type ="file" name="file1" id="file1"/>&nbsp;&nbsp;<br/>
19    <!--  <input type ="file" name="file2" id="file2"/>&nbsp;&nbsp; -->
20    <input type="submit" value="上传" /><br/>  
21  </form>  
22</body>
23</html>

q行效果Q?br />



本h试环境Qjdk6 + tomcat6.0.20
源码: jbpm4.4_spring3

pengo 2010-09-07 00:55 发表评论
]]>
jbpm程设计器开发(3Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pengo/archive/2010/08/31/330346.html</guid><wfw:comment>http://www.aygfsteel.com/pengo/comments/330346.html</wfw:comment><comments>http://www.aygfsteel.com/pengo/archive/2010/08/31/330346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pengo/comments/commentRss/330346.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pengo/services/trackbacks/330346.html</trackback:ping><description><![CDATA[     摘要: 前两? jbpm程设计器(1Q?jbpm程设计器(2Q? 在这一已l实C(jin)程的保存与打开Q下面看代码 首先写一个链表类来记录绘制流E图时的程定义 package com.workflow.designer.util; import java.io.Serializable; import java.util.ArrayList; im...  <a href='http://www.aygfsteel.com/pengo/archive/2010/08/31/330346.html'>阅读全文</a><img src ="http://www.aygfsteel.com/pengo/aggbug/330346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pengo/" target="_blank">pengo</a> 2010-08-31 01:11 <a href="http://www.aygfsteel.com/pengo/archive/2010/08/31/330346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm程设计器开发(2Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pengo/archive/2010/08/25/329892.html</guid><wfw:comment>http://www.aygfsteel.com/pengo/comments/329892.html</wfw:comment><comments>http://www.aygfsteel.com/pengo/archive/2010/08/25/329892.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pengo/comments/commentRss/329892.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pengo/services/trackbacks/329892.html</trackback:ping><description><![CDATA[     摘要: jbpm程设计器开发(1Q? 本篇主要实现?jin)多个流E节点的l制?部分功能代码 FlowNode.xml主要配置程节点的属性?<?xml version="1.0" encoding="GBK" standalone="yes"?> <flowNode>     <node&nb...  <a href='http://www.aygfsteel.com/pengo/archive/2010/08/25/329892.html'>阅读全文</a><img src ="http://www.aygfsteel.com/pengo/aggbug/329892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pengo/" target="_blank">pengo</a> 2010-08-25 15:24 <a href="http://www.aygfsteel.com/pengo/archive/2010/08/25/329892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm程设计器开发(1Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pengo/archive/2010/08/22/329599.html</guid><wfw:comment>http://www.aygfsteel.com/pengo/comments/329599.html</wfw:comment><comments>http://www.aygfsteel.com/pengo/archive/2010/08/22/329599.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pengo/comments/commentRss/329599.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pengo/services/trackbacks/329599.html</trackback:ping><description><![CDATA[<p>    看了(jin)net博客介绍的不wf程设计器实玎ͼ也来介绍下java版的jbpm程设计器来l大家看看。jbpm它本w也有基于eclipse插g和web版的程设计器,不过一般我们用jbpm开发时Q都有很多自定义的东西,使用它自带的Q会(x)有一些不方便性,所以开发自定义的流E设计器Q会(x)有很多方便性。目前见q的用来开发流E设计器的组件有vml、svg、gef、jgraphQ最q在javaeye上牛Zl的Twavelg应该也适合用来开发。本将?x)介l用jgraph来开发一个简单的jbpm4的流E设计器。jgraph官网Q?a >www.jgraph.com</a>Q目前有java版、javascript版、flash版,java版的jgraph是开源免费的Q详l的介绍可以看官|。本文用的JGraph版本是jgraphx 1.4.0.9Q也叫jgraph6Q,它与jgraph5有很大的不同Q实现类基本不同?jin)?br />     本篇先实现流E节点的插入Q目前只实现开始节点的插入Q后l的文章会(x)陆箋介绍其它功能的完成?/p> <p>GUI直接使用swingQ目前只实现在鼠标单?yn)LQ插入一个节点,主要实现代码c:(x)</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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.workflow.designer.view;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.Point;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.event.MouseEvent;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.event.MouseListener;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.mxgraph.swing.mxGraphComponent;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.mxgraph.view.mxGraph;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.workflow.designer.model.Node;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.workflow.designer.util.Logger;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> GraphImpl </span><span style="color: #0000ff">extends</span><span style="color: #000000"> mxGraphComponent </span><span style="color: #0000ff">implements</span><span style="color: #000000"> 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_372_904_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #008000">//</span><span style="color: #008000">新徏Jgraph面板Q所有节炚wl制在该面板</span><span style="color: #008000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"> </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> mxGraph graph </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> 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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_466_548_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">super</span><span style="color: #000000">(graph);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #008000">//</span><span style="color: #008000">l面板添加鼠标事?/span><span style="color: #008000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">  </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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> inser(Point p, Node n);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseClicked(MouseEvent e);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mousePressed(MouseEvent e);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseReleased(MouseEvent e);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseEntered(MouseEvent e);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">abstract</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseExited(MouseEvent e);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> <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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> mxGraph getGraph() </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_883_902_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  </span><span style="color: #0000ff">return</span><span style="color: #000000"> graph;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.workflow.designer.view;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.Point;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.awt.event.MouseEvent;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.mxgraph.view.mxGraph;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.workflow.designer.model.Node;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.workflow.designer.util.Logger;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> GraphView </span><span style="color: #0000ff">extends</span><span style="color: #000000"> 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_251_1234_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">private</span><span style="color: #000000"> mxGraph graph </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.getGraph();<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #0000ff">private</span><span style="color: #000000"> Object parent </span><span style="color: #000000">=</span><span style="color: #000000"> 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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">public</span><span style="color: #000000"> 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_366_374_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> inser(Point p, Node 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_413_704_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   </span><span style="color: #0000ff">this</span><span style="color: #000000">.getGraph().getModel().beginUpdate();<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   </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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />   </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_470_643_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #008000">//</span><span style="color: #008000">调用jgraph插入节点</span><span style="color: #008000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">      Object v1 </span><span style="color: #000000">=</span><span style="color: #000000"> graph.insertVertex(parent, </span><span style="color: #0000ff">null</span><span style="color: #000000">, n.getLabel(), p.getX() </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">5</span><span style="color: #000000">, p.getY() </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">5</span><span style="color: #000000">, n.getWidth(),<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            n.getHeight(), n.getShape());<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />   }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   </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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />   </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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_659_700_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />      graph.getModel().endUpdate();<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />   }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  <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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />  </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseClicked(MouseEvent 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_749_922_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   Point p </span><span style="color: #000000">=</span><span style="color: #000000"> e.getPoint();<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   </span><span style="color: #008000">//</span><span style="color: #008000">鼠标点击Ӟ在jgraph面板上插入节?/span><span style="color: #008000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">   inser(p, </span><span style="color: #0000ff">new</span><span style="color: #000000"> Node(</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">"</span><span style="color: #000000">start</span><span style="color: #000000">"</span><span style="color: #000000">, </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.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />   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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />  }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mousePressed(MouseEvent 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_964_999_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseReleased(MouseEvent 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1042_1078_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseEntered(MouseEvent 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1120_1155_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  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.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> mouseExited(MouseEvent 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.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1196_1231_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />  Logger.debug(</span><span style="color: #000000">"</span><span style="color: #000000">mouseExited</span><span style="color: #000000">"</span><span style="color: #000000">); <br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /> }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div> <p><br /> <img border="0" alt="http://www.aygfsteel.com/pengo" src="http://www.aygfsteel.com/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="q行E序" href="/Files/pengo/jgraphxflow.jar.rar">q行E序jgraphxflow.jar.rar</a><br />  </p> <img src ="http://www.aygfsteel.com/pengo/aggbug/329599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pengo/" target="_blank">pengo</a> 2010-08-22 23:22 <a href="http://www.aygfsteel.com/pengo/archive/2010/08/22/329599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbpm4.3与spring集成http://www.aygfsteel.com/pengo/archive/2010/01/04/308219.htmlpengopengoMon, 04 Jan 2010 15:54:00 GMThttp://www.aygfsteel.com/pengo/archive/2010/01/04/308219.htmlhttp://www.aygfsteel.com/pengo/comments/308219.htmlhttp://www.aygfsteel.com/pengo/archive/2010/01/04/308219.html#Feedback8http://www.aygfsteel.com/pengo/comments/commentRss/308219.htmlhttp://www.aygfsteel.com/pengo/services/trackbacks/308219.html
版本Q?br /> jbpm4.3
spring2.5.6
mysql5.1.40

直接从jbpm4.3自带的文件到src目录:
从jbpm-4.3"install"src"cfg"hibernate"jdbc复制mysql.hibernate.cfg.xml到src目录Q文件名改ؓ(f)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目录Q文件名改ؓ(f)jbpm.cfg.xml?br /> 修改applicationContext.xml、hibernate.cfg.xml的数据库配置信息Qjbpm4.3与spring的集成就完成?jin),可以自己写测试文件测试,集成非常?gu)?br />
不过在applicationContext.xml和hibernate.cfg.xml两个文g都要Ҏ(gu)据库信息有点ȝ(ch)Q所以只复制applicationContext.xml、spring.jbpm.cfg.xml两个文g到src目录Q把hibernate.cfg.xml的配|整qspring的配|文件applicationContext.xml中?br /> applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" 
         xmlns:aop
="http://www.springframework.org/schema/aop" 
         xmlns:context
="http://www.springframework.org/schema/context"
          xmlns:p
="http://www.springframework.org/schema/p"
         xmlns:tx
="http://www.springframework.org/schema/tx"
       xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation
="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
 
 
<context:annotation-config />

<bean
  
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
  p:location
="hibernate.properties"
  p:ignoreUnresolvablePlaceholders
="true" />
  
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
  
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
  
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    
<property name="dataSource" ref="dataSource" />
    
<property name="mappingResources">
        
<list>
            
<value>jbpm.repository.hbm.xml</value>
            
<value>jbpm.execution.hbm.xml</value>
            
<value>jbpm.history.hbm.xml</value>
            
<value>jbpm.task.hbm.xml</value>
            
<value>jbpm.identity.hbm.xml</value>
        
</list>
    
</property>
    
<property name="hibernateProperties">
        
<props>
                
<prop key="hibernate.dialect">${dataSource.dialect}</prop>
                
<prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
            
</props>
    
</property>
  
</bean>
  
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    
<property name="sessionFactory" ref="sessionFactory" />
    
<property name="dataSource" ref="dataSource" />
  
</bean>
  
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    
<property name="driverClassName" value="${dataSource.driverClassName}" />
    
<property name="url" value="${dataSource.url}" />
    
<property name="username" value="${dataSource.username}" />
    
<property name="password" value="${dataSource.password}" />
  
</bean>
</beans>

新徏文ghibernate.properties,主要用来配置q接数据库信?br />
dataSource.password=123
dataSource.username=root
dataSource.databaseName=jbpmdb
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.dialect=org.hibernate.dialect.MySQLInnoDBDialect
dataSource.serverName=localhost:3306
dataSource.url=jdbc:mysql://${dataSource.serverName}/${dataSource.databaseName}
dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}
dataSource.hbm2ddl.auto=update
以后要改数据库配|信息也只在q个文g修改可以了(jin)?br />
试用的程swing.jpdl.xml
<?xml version="1.0" encoding="UTF-8"?>
<process name="swing" xmlns="http://jbpm.org/4.3/jpdl">
   
<start g="94,64,48,48" name="start1">
      
<transition g="-52,-22" name="A" to="A"/>
   
</start>
   
<task assignee="A" g="73,195,92,52" name="A">
      
<transition g="-52,-22" name="B" to="B"/>
   
</task>
   
<task assignee="B" g="266,192,92,52" name="B">
      
<transition g="-40,-21" name="end" to="end1"/>
   
</task>
   
<end g="290,327,48,48" name="end1"/>
</process>


试代码
public class Main {
    
public static void main(String[] args)  {
        ClassPathXmlApplicationContext applicationContext 
= new ClassPathXmlApplicationContext("applicationContext.xml");
        applicationContext.start();
        ProcessEngine processEngine 
= (ProcessEngine)applicationContext.getBean("processEngine");
        ExecutionService executionService 
= processEngine.getExecutionService();
        TaskService taskService 
= processEngine.getTaskService();

        
//发布程
        String deploymentId = processEngine.getRepositoryService().createDeployment()
        .addResourceFromClasspath(
"resource/swing.jpdl.xml").deploy();
        System.out.println(
"程发布ID:"+deploymentId);
        
        
//启动一个流E实?/span>
        ProcessInstance processInstance = executionService.startProcessInstanceByKey("swing");
        System.out.println(
"程实例ID:" + processInstance.getId());

        
//A处理d
        List<Task> taskList_A = taskService.findPersonalTasks("A");
        System.out.println(
"A待处理Q务数:" + taskList_A.size());
        
if(taskList_A.size() > 0){
            Task task 
= taskList_A.get(0);
            taskService.completeTask(task.getId());
        }
        
        
//B处理d
        List<Task> taskList_B = taskService.findPersonalTasks("B");
        System.out.println(
"B待处理Q务数:" + taskList_B.size());
        
if(taskList_B.size() > 0){
            Task task 
= taskList_B.get(0);
            taskService.completeTask(task.getId());
        }
        
    }
}


附g是完整的集成文g和测试代?仅在spring2.5.6试q?要运行该部分代码,需要添加jbpm4.3和spring的相兛_文g?br /> 源代?jbpm4.3-spring





pengo 2010-01-04 23:54 发表评论
]]>
JBPM4.2 Services?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/pengo/archive/2009/12/14/305977.html</guid><wfw:comment>http://www.aygfsteel.com/pengo/comments/305977.html</wfw:comment><comments>http://www.aygfsteel.com/pengo/archive/2009/12/14/305977.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pengo/comments/commentRss/305977.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {<br />     Configuration configuration </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Configuration();<br />     ProcessEngine processEngine </span><span style="color: #000000;">=</span><span style="color: #000000;"> configuration.buildProcessEngine();<br />     RepositoryService repositoryService </span><span style="color: #000000;">=</span><span style="color: #000000;"> processEngine.getRepositoryService();<br />     ExecutionService executionService </span><span style="color: #000000;">=</span><span style="color: #000000;"> processEngine.getExecutionService();<br />     TaskService taskService </span><span style="color: #000000;">=</span><span style="color: #000000;"> processEngine.getTaskService();<br />     HistoryService historyService </span><span style="color: #000000;">=</span><span style="color: #000000;"> processEngine.getHistoryService();<br />     String deploymentId </span><span style="color: #000000;">=</span><span style="color: #000000;"> 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 />  }</span></div> <br /> <br /> 1.ProcessEngine<br /> 下边的服务接口都可以直接从ProcessEngine中获?它是由Configuration构徏?<br /> Configuration configuration = new Configuration();<br /> ProcessEngine processEngine = configuration.buildProcessEngine();<br /> 上边代码是直接构Z个流E引擎processEngine ,默认情况下new Configuration()d的配|文件是src目录下的jbpm.cfg.xml。如果你要用其它的程服务配置Q可以用Configuration的setResource()指定?br /> <br /> 2.RepositoryService<br /> 负责发布程、删除流E、暂?恢复程、查询发布等?br /> <br /> 3.ExecutionService<br /> 启动程实例、执行等待状态的程实例、终止流E实例、删除流E实例、查询实例等?br /> <br /> 4.TaskService<br /> 提供对Q务信息的处理Q获取Q务节点的d人,以及(qing)完成dQ让程跑到下一个节点等Q?br /> <br /> 5.HistoryService<br /> 程的历史信?已完成的程实例、活动、Q??x)被保存到历史数据库表?HistoryService提供对这些历史信息的讉KҎ(gu)?br /> <br /> 参考资?jbpm4.2安装包中附带的用h?jbpm-4.2/doc/userguide) <img src ="http://www.aygfsteel.com/pengo/aggbug/305977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pengo/" target="_blank">pengo</a> 2009-12-14 23:34 <a href="http://www.aygfsteel.com/pengo/archive/2009/12/14/305977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBPM4.2例?swing实现)http://www.aygfsteel.com/pengo/archive/2009/12/09/305226.htmlpengopengoTue, 08 Dec 2009 16:51:00 GMThttp://www.aygfsteel.com/pengo/archive/2009/12/09/305226.htmlhttp://www.aygfsteel.com/pengo/comments/305226.htmlhttp://www.aygfsteel.com/pengo/archive/2009/12/09/305226.html#Feedback35http://www.aygfsteel.com/pengo/comments/commentRss/305226.htmlhttp://www.aygfsteel.com/pengo/services/trackbacks/305226.html本次用的是一个特别流E?假设C提交一个表?q个表单需要给A和B阅读,而A和B阅读q后,程l束.
程定义文gswing.jpdl.xml

<?xml version="1.0" encoding="UTF-8"?>

<process name="swing" xmlns="http://jbpm.org/4.0/jpdl">
   
<start g="94,64,48,48" name="start1">
      
<transition g="-52,-22" name="A" to="A"/>
   
</start>
   
<task assignee="A" g="73,195,92,52" name="A">
      
<transition g="-52,-22" name="B" to="B"/>
   
</task>
   
<task assignee="B" g="266,192,92,52" name="B">
      
<transition g="-40,-21" name="end" to="end1"/>
   
</task>
   
<end g="290,327,48,48" name="end1"/>
</process>


程?br />

增加两个?
用户表p_user:
USER_      用户dID
PASSWORD_  用户d密码

表单数据表p_form:
ID_             表单~号
TITLE_          表单标题
CONTENT_        表单内容
PROCESS_ID      程实例ID
p_form除了(jin)记录表单数据,q记录启动流E实例的ID,q个表负责把表单和流E关联v?


提交表单时的操作,FormPanel.java部分代码:

okBtn = new JButton("提交表单");
okBtn.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
 String t 
= title.getText().trim();
 String c 
= content.getText().trim();
 String processId 
= startProcessInstance();
    
 DataBase db 
= new DataBase();
 
if(db.saveForm(t, c, processId)){
  JOptionPane.showMessageDialog(
null"保存表单数据成功:");
  title.setText(
"");
  content.setText(
"");
 }

}

}
);



private String startProcessInstance(){
 Configuration configuration 
= new Configuration();
 ProcessEngine processEngine 
= configuration.buildProcessEngine();
 RepositoryService repositoryService 
= processEngine.getRepositoryService();
 ExecutionService executionService 
= processEngine.getExecutionService();
 ProcessInstance processInstance 
= executionService.startProcessInstanceByKey("swing");
 
if(processInstance == null){
     JOptionPane.showMessageDialog(
null"请先发布程.");
 }

 
else{
     
return processInstance.getId();
 }

 
return "";
}



代码很简?行获取表单的数据,再启动流E实?q把表单数据和流E实例ID一起保存在数据库表p_form.


在用户处理Q务时,先根据用L(fng)ID查找到该用户的待处理d,q把它添加到d列表?

DefaultListModel v = new DefaultListModel();
List list 
= getTaskList(Login.userName);
if(list.size() > 0){
 
for(int s = 0; s < list.size(); s++){
  Task t 
= (Task)list.get(s);
  String executionId 
= t.getExecutionId();
  DataBase db 
= new DataBase();
  TaskPojo tp 
= db.findForm(executionId);
  tp.setTaskId(t.getId());
  
if(tp != null){
   v.addElement(tp);
  }

 }

}

jList 
= new JList(v);
.
 
private List getTaskList(String userId){
  
if(configuration == null){
   configuration 
= new Configuration();
  }

     ProcessEngine processEngine 
= configuration.buildProcessEngine();
     RepositoryService repositoryService 
= processEngine.getRepositoryService();
     ExecutionService executionService 
= processEngine.getExecutionService();
     TaskService taskService 
= processEngine.getTaskService();
     HistoryService historyService 
= processEngine.getHistoryService();
     ManagementService managementService 
= processEngine.getManagementService();
     List
<Task> taskList = taskService.findPersonalTasks(userId);
     
return taskList;
 }



用户处理d,Ҏ(gu)列表中选中记录中的程实例dID,调用taskService.completeTask(taskId)完成d,
okBtn 
= new JButton("审阅通过");
okBtn.addActionListener( 
new ActionListener(){
 
public void actionPerformed(ActionEvent e){
  Object o 
= jList.getSelectedValue();
  
if(o instanceof TaskPojo){
   TaskPojo tp 
= (TaskPojo)o;
   completeTask(tp.getTaskId());
   JOptionPane.showMessageDialog(
null"审核已经通过!");
   DefaultListModel dl 
= (DefaultListModel)jList.getModel();
   dl.remove(jList.getSelectedIndex());
   buttomPanel.setVisible(
false);
  }

 }

}
);
..
private void completeTask(String taskId){
 
if(configuration == null){
  configuration 
= new Configuration();
 }

 ProcessEngine processEngine 
= configuration.buildProcessEngine();
 TaskService taskService 
= processEngine.getTaskService();
 taskService.completeTask(taskId);
}



数据库中d用户:
帐号:A  密码:123
帐号:B  密码:123
帐号:D  密码:123

用户Dd
?


?

用户Ad
?


查看待办d
?


用户Bd
?

查看B的待办Q?br /> ?

本h的开发环?br /> eclipse3.5
JBPM4.2
mysql-essential-5.1.40-win32
JDK1.6
要运行这个例?需要修改jbpm.hibernate.cfg.xml,DataBase.java数据库的q接信息

试代码:jbpmTest
 



pengo 2009-12-09 00:51 发表评论
]]>
JBPM4.2安装(2)http://www.aygfsteel.com/pengo/archive/2009/12/04/304718.htmlpengopengoThu, 03 Dec 2009 16:08:00 GMThttp://www.aygfsteel.com/pengo/archive/2009/12/04/304718.htmlhttp://www.aygfsteel.com/pengo/comments/304718.htmlhttp://www.aygfsteel.com/pengo/archive/2009/12/04/304718.html#Feedback2http://www.aygfsteel.com/pengo/comments/commentRss/304718.htmlhttp://www.aygfsteel.com/pengo/services/trackbacks/304718.htmlJBPM4.2安装
l箋完成上一的安装.


4.在eclipse上安装流E设计器QGPDQ?有两个安装方法?br /> 4.1.使用Eclipse软g升QSoftware UpdateQ机制安装设计器
在gpd目录下有一个gpd/jbpm-gpd-site.zip文gQ?q就是更新站点(archived update siteQ的 压羃包?/p>

在Eclipse里添加更新站点的Ҏ(gu)Q?/p>

帮助 --> 安装新Y?..
点击 d...
?d站点 对话框中Q单?压羃?..
扑ֈ gpd/jbpm-gpd-site.zip q点?'打开'
点击 定 ?d站点 对话框中Q会(x)q回?'安装'对话?br /> 选择出现?jPDL 4 GPD 更新站点
点击 下一?. 然后点击 完成
接受协议
当它询问的时候重启eclipse
重新启动Eclipse,直接按Ctrl+N或File→New→other,你可以在对话框中看到有JBoss jBPM下有jBPM 4 Process Definition选项

4.2.自己d|下载设计器
地址Qhttp://sourceforge.net/projects/jbpm/files/在里面选择jBPM Process Designer的最新版本下载(不同的jpd版本要与相应的Eclipse版本对应Q不然会(x)出现一些小问题Q?br /> 下蝲回来后,解压出来后把里面featuresQplugins里的包放qEclipse相应文g夹featuresQplugins里面?br /> 重新启动Eclipse,直接按Ctrl+N或File→New→other,你可以在对话框中看到有JBoss jBPM下有jBPM 4 Process Definition选项

不过截止今天2009q?2?日,用Eclipse Update得到的GPD版本为jpdl4_1.2.0,而网上下载的是jpdl4_0.0.0,GPD节点的属性与用户指南文档的介l也不一致?/p>

5.定义jBPM用户?br /> 5.1在工作空间定义一个用户库Q?用来攄jBPM的库文g?br />     点击H口 --> 属性(Windows --> PreferencesQ?br />     选择Java --> 创徏路径 --> 用户cdQJava --> Build Path --> User LibrariesQ?br />     点击新徏QNewQ?br />     cd名字jBPM Libraries
    点击dJARsQAdd JARs...Q?br />     扑ֈjBPM安装E序下的lib目录
    选择lib下的所有jar文gq点?yn)L开QOpenQ?br />     选择jBPM Libraries作ؓ(f)入口
    重新点击dJARsQAdd JARsQ?br />     在jBPM的安装程序的根目录下选择jbpm.jar文g
    点击打开QOpenQ?br />     在jbpm.jar下选择源码附gQSource attachmentQ作为入?br />     点击~辑QEditQ?br />     在源码附件的配置QSource Attachment ConfigurationQ对话框中,点击目录QExternal Folder...Q?br />     到jBPM安装E序下的src目录
    点击选择QChooseQ?br />     点击两次'定'QOkQ会(x)关闭所有对话框

6.试
6.1.现在开始新Z个例子测试下?br /> 新徏一个java project,名test?br /> 叛_test目工程,选择Properties→Java Build Path→Libraries→Add Library→User Lirary→jBPM Libraries(引入用户?.1建立的用户库jBPM Libraries)
如果没有执行5.1步骤,在Java Build Path→Libraries中选择Add External JARs把JBPM4.2/lib的包和JBPM4.2目录下的JBPM.jar加入到库中?/p>

新徏程定义文新建src/jbpm/Order.jpdl.xml,q个文g的内Ҏ(gu)自jbpm4.2jbpm-4.2\examples\src\org\jbpm\examples\services目录?br />

<?xml version="1.0" encoding="UTF-8"?>
<process name="Order" xmlns="http://jbpm.org/4.2/jpdl">
  
<start g="16,19,48,48">
    
<transition to="receive confirmation" />
  
</start>
  
<state name="receive confirmation" g="96,16,136,52">
    
<transition to="end" />
  
</state>
  
<end name="end" g="269,20,48,48"/>
</process>



新徏csrc/jbpm/JbpmTest.java

package jbpm;

import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ManagementService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;

public class JbpmTest {

 
public static void main(String[] args) {
  Configuration configuration 
= new Configuration();
     ProcessEngine processEngine 
= configuration.buildProcessEngine();
     RepositoryService repositoryService 
= processEngine.getRepositoryService();
     ExecutionService executionService 
= processEngine.getExecutionService();
     TaskService taskService 
= processEngine.getTaskService();
     HistoryService historyService 
= processEngine.getHistoryService();
     ManagementService managementService 
= processEngine.getManagementService();
     String deploymentId 
= repositoryService.createDeployment()
         .addResourceFromClasspath(
"jbpm/Order.jpdl.xml")
         .deploy();
 }

}



从jbpm-4.2\src目录下找到jbpm.cfg.xmlQjbpm.hibernate.cfg.xmlQjbpm.mail.propertiesQjbpm.mail.templates.examples.xml复制到test/src目录下,
修改jbpm.hibernate.cfg.xml文g中的数据库连?使用Mysql)?br />      <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmdb</property>
     <property name="hibernate.connection.username">root</property>
     <property name="hibernate.connection.password">123</property>

q行JbpmTest代码?/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_`))
错误Q把hibernate.dialect改ؓ(f)<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

 

q行成功?按启动上一JBPM4.2安装的tomcat,讉Khttp://localhost:8080/jbpm-consoleQ登录JBPM控制収ͼ可以看到刚才发布的流E?br />
在数据库中也可看到jbpm4_deployment,jbpm4_deployprop,jbpm4_lob多了(jin)数据.
如果讉Khttp://localhost:8080/jbpm-console时出现登录失败,需要在发布后重新加载用户信息,q入jbpm-4.2\install,q行ant load.example.identities命o(h)。出现这个问题的原因是因为在jbpm.hibernate.cfg.xmlq个文g中配|问题,可以?<mapping resource="jbpm.identity.hbm.xml" /> q一句删除或注释掉,׃?x)出现发布时清空用户的问题?/p>

 试代码:jbpmTest.rar



pengo 2009-12-04 00:08 发表评论
]]>
վ֩ģ壺 ΢ɽ| | տ| | ˮ| | ɽ| ϲ| | | | | ʯ| Ȫ| | | Ʊ| | ͭϿ| | | | ʤ| ԫ| | | ũ| | | ͬ| ־| | | ػʵ| Դ| կ| ױ| ɽ| Ͻ| | dz|