??xml version="1.0" encoding="utf-8" standalone="yes"?>久久超碰97中文字幕,国产精品一区二区免费不卡,黑人久久a级毛片免费观看http://www.aygfsteel.com/caizh2009/category/39393.html与大家共同成?/description>zh-cnFri, 02 Apr 2010 19:21:39 GMTFri, 02 Apr 2010 19:21:39 GMT60jbpm与ssh完整CZ(一)http://www.aygfsteel.com/caizh2009/articles/317032.html菜毛毛菜毛毛Wed, 31 Mar 2010 04:19:00 GMThttp://www.aygfsteel.com/caizh2009/articles/317032.htmlhttp://www.aygfsteel.com/caizh2009/comments/317032.htmlhttp://www.aygfsteel.com/caizh2009/articles/317032.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/317032.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/317032.html

说明

Jbpm的开发流E可以按如下几步q行Q流E的定义、流E的发布、流E实例的启动、流E节点的{、查看流 E节点图片。本CZ是在spring2.0?/span>hibernate3.2?/span>struts1.2下开发?/span>

如果是其它版本的框架也很Ҏ(gu)做程 序的q移?/font>

程的定?/font>

程的定义徏议?/span>jbpm提供?/span>eclipse下的插gQ图形化配置插g安装文g可以?/span>jbpm-starters-kit-3.1.4"jbpm-designer"jbpm-gpd-feature"eclipse下找刎ͼ需注意版本。用这U方 式可以把定义的流E描q的三个文g压羃?/span>zip包,l一的部|到数据库中Q方?/span>b/spȝ中显C图片当前节点信息?/span>

1? 件安?/span>

?/span>jbpm-gpd-feature文g夹复制到C:"Program Files"MyEclipse-6.0M1"eclipse"plugins下,注意自己?/span>ecplise路径?/span>

?/span>C:"Program Files"MyEclipse-6.0M1"eclipse"links文g夹下建立jbpm-gpd.link文g。内容如下:(x)path=C:""Program Files""MyEclipse-6.0M1""eclipse""plugins""jbpm-gpd-feature?/span>

q样再重新启?/span>eclipse可以用流E定义功能了(jin)?/span>

2? E的定义

?/span>eclipse环境中选择file->new->other下的jboss jbpm->process definition程定义。要在自q目文g中先指定文g要创建的文g夏V?/span>

q样?x)生三个文Ӟ?x)gpd.xml?/span>processdefinition.xml?/span>processimage.jpg?/span>

processdefinition.xml为描q流E定义文Ӟ本例为:(x)

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

<process-definition name="文档试程">

   <start-state name="开?/span>">

      <transition name="提交张三审批" to="张三审批"></transition>

   </start-state>

   <task-node name="张三审批">

      <task name="审批1">

         <assignment actor-id="张三"/>

      </task>

      <transition name="提交李四审批" to="李四审批"></transition>

   </task-node>

   <task-node name="李四审批">

      <task name="审批2">

         <assignment actor-id="李四"/>

      </task>

      <transition name="提交王五审批" to="王五审批"></transition>

   </task-node>

   <task-node name="王五审批">

      <task name="审批3">

         <assignment actor-id="王五"/>

      </task>

      <transition name="l束程" to="l束"></transition>

   </task-node>

   <end-state name="l束"></end-state>

</process-definition>

processimage.jpg文g是定义流E生的囄?/span>gpd.xml文g是图形文件的座标说明。用? ?/span>b/s下显C流E流转的囄位置?/span>

本例中的gpd.xml文g

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

<process-diagram name="文档试程" width="801" height="477">

 <node name="开?/span>" x="308" y="4" width="140" height="40">

    <transition name="提交张三审批">

      <label x="5" y="-10"/>

    </transition>

 </node>

 <node name="张三审批" x="310" y="90" width="140" height="40">

    <transition name="提交李四审批">

      <label x="5" y="-10"/>

    </transition>

 </node>

 <node name="李四审批" x="313" y="192" width="140" height="40">

    <transition name="提交王五审批">

      <label x="5" y="-10"/>

    </transition>

 </node>

 <node name="王五审批" x="308" y="307" width="140" height="40">

    <transition name="l束程">

      <label x="5" y="-10"/>

    </transition>

 </node>

 <node name="l束" x="307" y="401" width="140" height="40"/>

</process-diagram>


菜毛毛 2010-03-31 12:19 发表评论
]]>
Jbpm工作与ssh框架集成http://www.aygfsteel.com/caizh2009/articles/317030.html菜毛毛菜毛毛Wed, 31 Mar 2010 04:17:00 GMThttp://www.aygfsteel.com/caizh2009/articles/317030.htmlhttp://www.aygfsteel.com/caizh2009/comments/317030.htmlhttp://www.aygfsteel.com/caizh2009/articles/317030.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/317030.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/317030.html阅读全文

菜毛毛 2010-03-31 12:17 发表评论
]]>
jBPM开发入门指?5) Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268988.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268988.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268988.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268988.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268988.html</trackback:ping><description><![CDATA[前篇说v要讲在JBPM中实现用h限,但这D|间比较忙Q一直拖着。这里先把jbpm自带的websale例子放上来,大伙先将q看。这个例子我已经把它抽取?jin)出去,|页部䆾丢弃?jin)。在看的时候主要看WebsaleTest.javaQ看看它的用h限是怎么用的?br /> <br /> 几个重点Q?br /> (1) jBPM没有角色的概?!! 很多人把ActorID理解成角Ԍ那是相当错误的。jBPM只有参与者的概念Q也是ActorIDQ它可以是用户IDQ也可以是角色IDQ也可以什? 都不是。你要自己去把用戯色等东东和ActorID映射h。不q一般我们把ActorID讄成角Ԍ但jbpm websale却是讄成用L(fng)?br /> (2)用户信息的入口是JbpmContextQ里面有一个setActorIDҎ(gu)。你用户d时候,把一些用户信息setq去?br /> (3)泳道概念Q你ȝ看UML中的带泳道的zd图,那就是象一个游x(chng)里的泳道一栗?br /> <br /> <br /> 安装提示Q?br />  <classpathentry kind="con" path="JBPM/jBPM 3.1.2"/><br /> .classpath的这一句很可能和你?sh)脑的设|不W,q是jbpm插g的一个设|,指向jbpm的HOME目录Q以便找到jbpm的jar包。你按照你电(sh)脑上的设|相应修改一下这一? <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:14 <a href="http://www.aygfsteel.com/caizh2009/articles/268988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jBPM开发入门指?4) Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268987.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268987.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268987.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268987.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268987.html</trackback:ping><description><![CDATA[<h2><a id="viewpost1_TitleUrl" href="../../chengang/archive/2006/08/24/65608.html">jBPM开发入门指?4) </a></h2> <h2 style="margin: 12pt 0cm"><span lang="EN-US"><font face="Arial">7</font> </span><span style="font-family: 黑体"> </span> <span lang="EN-US"><font face="Arial">jBPM</font> </span><span style="font-family: 黑体">的客L(fng)开?/span> </h2> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: ?hu)?>有了(jin)前面?/span> <span lang="EN-US">HelloWorld</span> <span style="font-family: ?hu)?>后台程Q我们就要开始客L(fng)E序?jin)。正如前面提到的Q本文不?/span> <span lang="EN-US">JSP</span> <span style="font-family: ?hu)?>Q而改采用</span> <span lang="EN-US">JUnit</span> <span style="font-family: ?hu)?>的Ş式,输出则用</span> <span lang="EN-US">System.out.println</span> <span style="font-family: ?hu)?>。D一反三Q知道在Ҏ(gu)中输入及(qing)?/span> <span lang="EN-US">println</span> <span style="font-family: ?hu)?>输出Q在</span> <span lang="EN-US">JSP</span> <span style="font-family: ?hu)?>?/span> <span lang="EN-US">SWING</span> <span style="font-family: ?hu)?>{?/span> <span lang="EN-US">GUI</span> <span style="font-family: ?hu)?>界面q(sh)是一样嘛?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p> </o:p> </span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: ?hu)?>q个</span> <span lang="EN-US">JUnit</span> <span style="font-family: ?hu)?>客户端,我们借用创徏目时自动生成的</span> <span lang="EN-US">SimpleProcessTest.java</span> <span style="font-family: ?hu)?>?jin),改写后如下?x)</span> </p> <div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; background: #fff4e9; padding-bottom: 1pt; border-left: medium none; padding-top: 1pt; border-bottom: 1pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">package</span> </strong><span lang="EN-US">com.sample;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">junit.framework.TestCase;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">org.jbpm.JbpmConfiguration;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">org.jbpm.JbpmContext;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">org.jbpm.context.exe.ContextInstance;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">org.jbpm.graph.def.ProcessDefinition;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">import</span> </strong><span lang="EN-US">org.jbpm.graph.exe.ProcessInstance;</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><font face="Courier New"><strong><span lang="EN-US" style="color: #7f0055">public</span> </strong><span lang="EN-US"><strong><span style="color: #7f0055">class</span> </strong>SimpleProcessTest <strong><span style="color: #7f0055">extends</span></strong> TestCase {</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong>JbpmConfiguration <span style="color: #0000c0">config</span> = JbpmConfiguration.<em>getInstance</em>();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong>JbpmContext <span style="color: #0000c0">ctx</span> = <span style="color: #0000c0">config</span>.createJbpmContext();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>    </span><span style="color: #3f7f5f">// helloworld</span> </font></span><span style="color: #3f7f5f; font-family: ?hu)?>对应?/span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">jbpm_processdefinition</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>表的</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">name</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>字段|也即</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">processdefinition.xml</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>?/span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">name</font> </span></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>    </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>q个值得取比较耗时Q实际项目里最好和“数据库的</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">JDBC</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>q接”一P让它׃nQ不要频J打开关闭?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong>ProcessDefinition <span style="color: #0000c0">processDefinition</span> = <span style="color: #0000c0">ctx</span>.getGraphSession().findLatestProcessDefinition(<span style="color: #2a00ff">"helloworld"</span>);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">public</span> </strong><strong><span style="color: #7f0055">void</span> </strong>testNewRequest() {</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><strong><span style="color: #7f0055">long</span> </strong>id = newRequest();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>System.<em><span style="color: #0000c0">out</span></em>.println(<span style="color: #2a00ff">"id="</span> + id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>checkNewRequest(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>confirmRequest(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>checkconfirmRequest(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #0000c0">ctx</span>.close();<span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>关闭</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">jbpm</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>容器</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span>}</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span style="color: #3f5fbf">/**</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></span><span style="color: #3f5fbf; font-family: ?hu)?>创徏一个请假单</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> <strong><span style="color: #7f9fbf">@return</span> </strong></font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*/</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong><strong><span style="color: #7f0055">long</span> </strong>newRequest() {</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>创徏一个新程</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ProcessInstance pi = <span style="color: #0000c0">processDefinition</span>.createProcessInstance();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>取得程的数据环?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ContextInstance ci = pi.getContextInstance();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>创徏一张请假单</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span>ci.setVariable(<span style="color: #2a00ff">"name"</span>, <span style="color: #2a00ff">"</span></font> </span><st1:personname w:st="on"><span style="color: #2a00ff; font-family: ?hu)?>陈刚</span> </st1:personname><font face="Courier New"><span lang="EN-US" style="color: #2a00ff">www.chengang.com.cn"</span> <span lang="EN-US">);</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ci.setVariable(<span style="color: #2a00ff">"day"</span>, 2);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertEquals</em>(<strong><span style="color: #7f0055">null</span></strong>, ci.getVariable(<span style="color: #2a00ff">"note"</span>));</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>请假甌l束Q{C一个流E结?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>pi.signal();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><strong><span style="color: #7f0055">return</span> </strong>pi.getId();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span>}</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span style="color: #3f5fbf">/**</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></span><span style="color: #3f5fbf; font-family: ?hu)?>(g)查请假单的数?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> <strong><span style="color: #7f9fbf">@param</span> </strong><span style="color: #3f5fbf">id</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*/</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong><strong><span style="color: #7f0055">void</span> </strong>checkNewRequest(<strong><span style="color: #7f0055">long</span></strong> id) {</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>从数据库提取原流E?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ProcessInstance pi = <span style="color: #0000c0">ctx</span>.loadProcessInstance(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>取得程的数据环?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ContextInstance ci = pi.getContextInstance();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>创徏一张请假单</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><em>assertEquals</em>(<span style="color: #2a00ff">"</span></font> </span><st1:personname w:st="on"><span style="color: #2a00ff; font-family: ?hu)?>陈刚</span> </st1:personname><font face="Courier New"><span lang="EN-US" style="color: #2a00ff">www.chengang.com.cn"</span> <span lang="EN-US">, ci.getVariable(<span style="color: #2a00ff">"name"</span>));</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertEquals</em>(Integer.<em>valueOf</em>(2), ci.getVariable(<span style="color: #2a00ff">"day"</span>));</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><em>assertEquals</em>(<span style="color: #2a00ff">"</span></font> </span><span style="color: #2a00ff; font-family: ?hu)?>我要请假</span> <font face="Courier New"><span lang="EN-US" style="color: #2a00ff">"</span> <span lang="EN-US">, ci.getVariable(<span style="color: #2a00ff">"note"</span>));</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>当前是结点ؓ(f)</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">confirm</font> </span></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertEquals</em>(pi.getRootToken().getNode().getName(), <span style="color: #2a00ff">"confirm"</span>);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>程q没l束</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertFalse</em>(pi.hasEnded());</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span>}</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span style="color: #3f5fbf">/**</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Courier New"><font size="2"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></font></span><span style="color: #3f5fbf; font-family: ?hu)?><font size="2">审批<st1:personname w:st="on">陈刚</st1:personname>的请假申?/font> </span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*</span> <strong><span style="color: #7f9fbf">@param</span> </strong><span style="color: #3f5fbf">id</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><span> </span> <span style="color: #3f5fbf">*/</span> </font></font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong><strong><span style="color: #7f0055">void</span> </strong>confirmRequest(<strong><span style="color: #7f0055">long</span></strong> id) {</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ProcessInstance pi = <span style="color: #0000c0">ctx</span>.loadProcessInstance(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ContextInstance ci = pi.getContextInstance();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>不通过</span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span>ci.setVariable(<span style="color: #2a00ff">"note"</span>, <span style="color: #2a00ff">"</span></font> </span><span style="color: #2a00ff; font-family: ?hu)?>不准请假Q(h)l加?/span> <font face="Courier New"><span lang="EN-US" style="color: #2a00ff">"</span> <span lang="EN-US">);</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>审批l束Q到下一个流E结?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>pi.signal();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span>}</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span><strong><span style="color: #7f0055">private</span> </strong><strong><span style="color: #7f0055">void</span> </strong>checkConfirmRequest(<strong><span style="color: #7f0055">long</span></strong> id) {</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ProcessInstance pi = <span style="color: #0000c0">ctx</span>.loadProcessInstance(id);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span>ContextInstance ci = pi.getContextInstance();</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// ConfirmAction</span> </font></span><span style="color: #3f7f5f; font-family: ?hu)?>cd</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">signal</font> </span><span style="color: #3f7f5f; font-family: ?hu)?>后执行,所以覆盖了(jin)l理的审Ҏ(gu)?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><em>assertEquals</em>(<span style="color: #2a00ff">"</span></font> </span><span style="color: #2a00ff; font-family: ?hu)?>准假</span> <font face="Courier New"><span lang="EN-US" style="color: #2a00ff">"</span> <span lang="EN-US">, ci.getVariable(<span style="color: #2a00ff">"note"</span>));</span> </font></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>当前是结点ؓ(f)</span> <span lang="EN-US" style="color: #3f7f5f"><font face="Courier New">end</font> </span></font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertEquals</em>(pi.getRootToken().getNode().getName(), <span style="color: #2a00ff">"end"</span>);</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><font size="2"><span lang="EN-US"><font face="Courier New"><span>        </span><span style="color: #3f7f5f">// </span></font></span><span style="color: #3f7f5f; font-family: ?hu)?>程l束?/span> </font></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>        </span><em>assertTrue</em>(pi.hasEnded());</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font size="2"><font face="Courier New"><span>    </span>}</font> </font></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Courier New" size="2"> </font> </o:p></span></p> <p class="a" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Courier New" size="2">}</font> </span></p> </div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p> </o:p> </span></p> <span style="font-size: 10.5pt; font-family: ?hu)?>q个例子q是很简单,而且关键是缺用戗组、权限等工作系l必ȝ东西Q不q没关系。下面的内容我将完成一个更完整的实?/span> <br /> <br /> <p>http://97wen.com/</p> <p>http://77.haowyt.com/</p> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:14 <a href="http://www.aygfsteel.com/caizh2009/articles/268987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BPM开发入门指?3) Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268985.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268985.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268985.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268985.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268985.html</trackback:ping><description><![CDATA[     摘要: jBPM开发入门指?3) 5  安装 jBPM ? Eclipse 开发插? 有个辅助工具开发v来方便一点,只不q现?jBPM 的开发工h件功能还?sh)算太强Q也׃?#8220;目创徏向导”的功能,让你Q? Q?Q不用再去配|?classpath 库的引用? Q?Q直接得C(jin)一?jBPM ?..  <a href='http://www.aygfsteel.com/caizh2009/articles/268985.html'>阅读全文</a><img src ="http://www.aygfsteel.com/caizh2009/aggbug/268985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:12 <a href="http://www.aygfsteel.com/caizh2009/articles/268985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jBPM开发入门指?2) Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268984.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268984.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268984.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268984.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268984.html</trackback:ping><description><![CDATA[<h2> <a id="viewpost1_TitleUrl" href="../../chengang/archive/2006/08/22/65132.html">jBPM开发入门指?2) </a> </h2> <h2 style="margin: 12pt 0cm;"> <span lang="EN-US"> <font face="Arial">4 </font> </span> <span style="font-family: 黑体;">数据库初始化</span> </h2> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">需要数据库支持Q?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">?x)把自己的一个初始化数据存储到数据库Q同时工作流的数据也是存储到数据库中的?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">使用</span> <span lang="EN-US">Hibernate</span> <span style="font-family: ?hu)?">来做q存储层,因此只要?/span> <span lang="EN-US">Hibernate</span> <span style="font-family: ?hu)?">支持的数据库Q?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">也就支持?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span style="font-family: ?hu)?">本文先以</span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">ZQ然后再?/span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">ZQ来谈谈</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的数据库初始化操作?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="a0" style="margin: 6pt 0cm;"> <font size="2"> <font style="background-color: #dddddd;"> <span style="font-family: 楷体_GB2312;">注:(x)在上面的</span> <span lang="EN-US">JBoss</span> <span style="font-family: 楷体_GB2312;">自带的示例中Qƈ没有讄数据库,那是因ؓ(f)</span> <span lang="EN-US">jBPM</span> <span style="font-family: 楷体_GB2312;">默认使用的是内存数据?/span> <span lang="EN-US">hsqldb</span> <span style="font-family: 楷体_GB2312;">?/span> </font> </font> </p> <h3 style="margin: 12pt 0cm 6pt;"> <span lang="EN-US"> <font size="3" face="?hu)? MS Song">4.1<span>  </span>MySQL</font> </span> </h3> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="4" style="margin: 6pt 0cm; text-indent: 21pt;"> <span lang="EN-US">1</span> <span style="font-family: 楷体_GB2312;">、首先安?/span> <span lang="EN-US">MySQL</span> <span style="font-family: 楷体_GB2312;">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">的安装比较简单,|上也有很多文章Q本文不再赘q。本指南所?/span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">版本?/span> <span lang="EN-US">MySQL 4.1</span> <span style="font-family: ?hu)?">Q?/span> <span lang="EN-US">for windows</span> <span style="font-family: ?hu)?">Q。再找一?/span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">客户端,目的是方便查看数据库中的数据Q本文推荐?/span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">|站上免Ҏ(gu)供的“</span> <span lang="EN-US">MySQL Query Brower</span> <span style="font-family: ?hu)?">”Q当然你用其他的客户端也行,比如</span> <span lang="EN-US">MySQL-Front</span> <span style="font-family: ?hu)?">?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="4" style="margin: 6pt 0cm; text-indent: 21pt;"> <span lang="EN-US">2</span> <span style="font-family: 楷体_GB2312;">、徏?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">中创Z个库Q库名:(x)</span> <span lang="EN-US">jbpm</span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="4" style="margin: 6pt 0cm; text-indent: 21pt;"> <span lang="EN-US">3</span> <span style="font-family: 楷体_GB2312;">、生成徏表的</span> <span lang="EN-US">SQL</span> <span style="font-family: 楷体_GB2312;">语句q徏?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate></span> <span style="font-family: ?hu)?">下的子目?/span> <span lang="EN-US">jbpm</span> <span style="font-family: ?hu)?">改名?/span> <span lang="EN-US">jbpm.3</span> <span style="font-family: ?hu)?">Q否则在执行下面?/span> <span lang="EN-US">ant</span> <span style="font-family: ?hu)?">命o(h)时会(x)报如</span> <span lang="EN-US">jbpm.3</span> <span style="font-family: ?hu)?">目录不存在的错误Q?/span> </p> <div style="border-style: solid none; border-color: windowtext -moz-use-text-color; border-width: 1pt medium; padding: 1pt 0cm; background: #fff4e9 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New">D:\jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate>\jbpm-db\build.xml:361: The following error occurred while executing this line:</font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New">D:\jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate>\jbpm-db\build.xml:68: Basedir D:\jbpm-starters-kit-3.1.1\jbpm.3 does not exist</font> </span> </p> </div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">DOS</span> <span style="font-family: ?hu)?">H下Q进?/span> <span lang="EN-US">D:\jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate>\jbpm-db</span> <span style="font-family: ?hu)?">目录Q执行如下命令:(x)</span> </p> <div style="border-style: solid none; border-color: windowtext -moz-use-text-color; border-width: 1pt medium; padding: 1pt 0cm; background: #fff4e9 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New">ant mysql.scripts</font> </span> </p> </div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span style="font-family: ?hu)?">执行成功后,?/span> <span lang="EN-US">D:\jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate>\jbpm-db\build\mysql\scripts</span> <span style="font-family: ?hu)?">目录里生成了(jin)四个</span> <span lang="EN-US">sql</span> <span style="font-family: ?hu)?">文gQ它们做什么用的一看名字就知道?jin)。在</span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">客户端中执行“</span> <span lang="EN-US">mysql.create.sql</span> <span style="font-family: ?hu)?">”脚本Q这样将?/span> <span lang="EN-US">jbpm</span> <span style="font-family: ?hu)?">库中创徏一个个的数据表?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <h3 style="margin: 12pt 0cm 6pt;"> <span lang="EN-US"> <font size="3" face="?hu)? MS Song">4.2<span>  </span>Oracle</font> </span> </h3> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span style="font-family: ?hu)?">先安装好</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">服务器。我们公司有现存?/span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">服务器,也提供给?jin)我一个属于我自己的用户名Q一d可以Q意在我的库之下创?jin)。所以这一步就省了(jin)Q没有的自个先装好吧?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> <span style="font-family: ?hu)?">讉K</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">推荐?#8220;</span> <span lang="EN-US">PLSQL Developer</span> <span style="font-family: ?hu)?">”。不q要q接</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">q要在本Z装上</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">自己的客L(fng)E序Q里面提供了(jin)</span> <span lang="EN-US">JDBC</span> <span style="font-family: ?hu)?">包和一些配|。要q接服务器还得配|一下,我一般都是不?/span> <span lang="EN-US">GUI</span> <span style="font-family: ?hu)?">而直接改</span> <span lang="EN-US">tnsnames.ora</span> <span style="font-family: ?hu)?">文gQ在我的?sh)脑里此文g的目录地址是:(x)</span> <span lang="EN-US">D:\oracle\ora92\network\ADMIN\tnsnames.ora</span> <span style="font-family: ?hu)?">Q内容如?/span> <span lang="EN-US">(</span> <span style="font-family: ?hu)?">两面有两个配|了(jin)</span> <span lang="EN-US">)</span> <span style="font-family: ?hu)?">Q?/span> </p> <div style="border-style: solid none; border-color: windowtext -moz-use-text-color; border-width: 1pt medium; padding: 1pt 0cm; background: #fff4e9 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New"># TNSNAMES.ORA Network Configuration File: E:\oracle\ora92\network\admin\tnsnames.ora</font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New"># Generated by Oracle configuration tools.</font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <o:p> <font size="2" face="Courier New"> </font> </o:p> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New">WXXRDB_192.168.3.2 =</font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>  </span>(DESCRIPTION =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>(ADDRESS_LIST =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.2)(PORT = 1521))</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>(CONNECT_DATA =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(SID = wxxrDB)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(SERVER = DEDICATED)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>  </span>)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <o:p> <font size="2" face="Courier New"> </font> </o:p> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2" face="Courier New">WXXRDB_192.168.4.2 =</font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>  </span>(DESCRIPTION =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>(ADDRESS_LIST =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.2)(PORT = 1521))</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>(CONNECT_DATA =</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(SID = wxxrDB)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>      </span>(SERVER = DEDICATED)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>    </span>)</font> </font> </span> </p> <p class="a" style="margin: 0cm 0cm 0pt;"> <span lang="EN-US"> <font size="2"> <font face="Courier New"> <span>  </span>)</font> </font> </span> </p> </div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span style="font-family: ?hu)?">前面都是</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">的一些知识,不会(x)?/span> <span lang="EN-US">Google</span> <span style="font-family: ?hu)?">一下吧。最后配|好后,?/span> <span lang="EN-US">PLSQL Developer</span> <span style="font-family: ?hu)?">输入你的用户名和密码联接?/span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">Q就?/span> <span lang="EN-US">OK</span> <span style="font-family: ?hu)?">?jin)?/span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span lang="EN-US"> <o:p> </o:p> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 0cm;"> <span style="font-family: ?hu)?">参考上?/span> <span lang="EN-US">MySQL</span> <span style="font-family: ?hu)?">的步骤,基本一P(x)</span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"> <span lang="EN-US"> <span>Q?Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jbpm</span> <span style="font-family: ?hu)?">改名?/span> <span lang="EN-US">jbpm.3</span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"> <span lang="EN-US"> <span>Q?Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> <span style="font-family: ?hu)?">再执?/span> <span id="wmqeeuq" class="Char"> <span style="font-size: 9pt;" lang="EN-US"> <font face="Courier New">ant oracle.scripts</font> </span> </span> </p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"> <span lang="EN-US"> <span>Q?Q?span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></span> </span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jbpm-db\build\oracle\scripts</span> <span style="font-family: ?hu)?">目录?/span> <span lang="EN-US">oracle.create.sql</span> <span style="font-family: ?hu)?">脚本Q在</span> <span lang="EN-US">Oracle</span> <span style="font-family: ?hu)?">中生?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的所有表。在“</span> <span lang="EN-US">PLSQL Developer</span> <span style="font-family: ?hu)?">”中可以新Z?/span> <span lang="EN-US">Command Windows</span> <span style="font-family: ?hu)?">H口然后输入命o(h)Q?/span> <span lang="EN-US">@D:\jbpm-starters-kit-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on">3.1.1</st1:chsdate>\jbpm-db\build\oracle\scripts\oracle.create.sql</span> </p> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:11 <a href="http://www.aygfsteel.com/caizh2009/articles/268984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jBPM开发入门指?1)Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268983.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268983.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268983.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268983.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268983.html</trackback:ping><description><![CDATA[<h2> <a id="viewpost1_TitleUrl" href="../../chengang/archive/2006/07/13/57986.html">jBPM开发入门指?1)</a> </h2> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">工作虽然还在不成熟的发展阶D,甚至q没有一个公认的规范标准。但其应用却已经在快速展开Q这说明?jng)场对工作流框架的需求是急迫而巨大的?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">我们公司的后台短信管理系l涉?qing)短信编发、领导层层审核等操作Q这是一个比较典型的工作系l。过L们用的工作流引擎?/span> <span lang="EN-US">shark</span> <span style="font-family: ?hu)?">Q然后在使用后发现其q于庞大Q后台数据库操作频繁而未q行优化Q直接导致的后果是前台操作~慢。于是经研究军_Q将工作引擎由</span> <span lang="EN-US">shark</span> <span style="font-family: ?hu)?">换成</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">之前是一个开源YӞ后加?/span> <span lang="EN-US">JBoss</span> <span style="font-family: ?hu)?">l织。正好我们公怹是用</span> <span lang="EN-US">JBoss</span> <span style="font-family: ?hu)?">的。不q?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">q没有绑定在</span> <span lang="EN-US">JBOSS</span> <span style="font-family: ?hu)?">上,</span> <span lang="EN-US">Tomcat</span> <span style="font-family: ?hu)?">{也可以使用它?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的正处在不断发展中,做ؓ(f)开源Y件的特点Q其设计变化往(xin)往(xin)很大。所以一些过ȝ资料可能已经不适用?jin)。于是作者根据自q使用l验Q重新整理出q䆾文档Q以备学?fn)参考?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: 楷体_GB2312;">注:(x)本文使用?/span> <span lang="EN-US">jBPM</span> <span style="font-family: 楷体_GB2312;">版本?/span> <span lang="EN-US">3.1.1</span> </p> <h2> <span style="font-family: 黑体;">环境准备</span> </h2> <h3> <span lang="EN-US">1</span>、安?span lang="EN-US">JDK</span></h3> <p class="MsoNormal"> <span style="font-family: ?hu)?">所?/span> <span lang="EN-US">JAVA</span> <span style="font-family: ?hu)?">开发第一个需要安装的Q没什么好说的。记得把pȝ变量</span> <span lang="EN-US">JAVA_HOME</span> <span style="font-family: ?hu)?">设上?/span> </p> <h3> <span lang="EN-US">2</span>、安?span lang="EN-US">Ant</span></h3> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US">Ant</span> <span style="font-family: ?hu)?">是?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">必须的一个工兗?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">中的很多操作都要用到</span> <span lang="EN-US">Ant</span> <span style="font-family: ?hu)?">?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">安装Ҏ(gu)Q?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">Q?/span> <span lang="EN-US">1</span> <span style="font-family: ?hu)?">Q先下蝲Q?/span> <span lang="EN-US"> <a >http://archive.apache.org/dist/ant/binaries/</a> </span> <span style="font-family: ?hu)?">Q选一个如Q?/span> <span lang="EN-US">apache-ant-1.6.5-bin.zip</span> <span style="font-family: ?hu)?">?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">Q?/span> <span lang="EN-US">2</span> <span style="font-family: ?hu)?">Q解压到</span> <span lang="EN-US">D:\ant</span> <span style="font-family: ?hu)?">Q当然其他目录也可以Q?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">Q?/span> <span lang="EN-US">3</span> <span style="font-family: ?hu)?">Q设|如下系l变量:(x)</span> <span lang="EN-US">ANT_HOME=d:\ant</span> <span style="font-family: ?hu)?">?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">Q?/span> <span lang="EN-US">4</span> <span style="font-family: ?hu)?">Q把</span> <span lang="EN-US">%ANT_HOME%\bin</span> <span style="font-family: ?hu)?">加入到系l变?/span> <span lang="EN-US">PATH</span> <span style="font-family: ?hu)?">中?/span> </p> <h3> <span lang="EN-US">3</span>、安?span lang="EN-US">Eclipse</span></h3> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US">Eclipse</span> <span style="font-family: ?hu)?">不是开?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">必须的工P但它是对</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">开发很有帮助的工具Q特别是</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">提供?jin)一?/span> <span lang="EN-US">Eclipse</span> <span style="font-family: ?hu)?">插g用来辅助开?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">。关?/span> <span lang="EN-US">Eclipse</span> <span style="font-family: ?hu)?">的安装不赘述?jin),本文用的版本是?x)</span> <span lang="EN-US">Eclipse3.2</span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> </span> </p> <h2> <span style="font-family: 黑体;">安装</span> <span lang="EN-US">jBPM</span> </h2> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的下载地址Q?/span> <span lang="EN-US"> <a >http://www.jboss.com/products/jbpm/downloads</a> </span> <span style="font-family: ?hu)?"> </span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">JBoss jBPM</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的Y件包</span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">JBoss jBPM Starters Kit</span> <span style="font-family: ?hu)?"> 是一个综合包Q它包括?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">软g包、开发插件、一个配|好?jin)的Z</span> <span lang="EN-US">JBoss</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">CZ、一些数据库配置文gCZ?/span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">JBoss jBPM Process Designer Plugin</span> <span style="font-family: ?hu)?"> 是辅助开?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">Eclipse</span> <span style="font-family: ?hu)?">插g?/span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">JBoss jBPM BPEL Extension jBPM</span> <span style="font-family: ?hu)?">关于</span> <span lang="EN-US">BPEL</span> <span style="font-family: ?hu)?">的扩展包</span> </p> <p class="a1"> <span style="font-family: ?hu)?">本指南选择下蝲Q?/span> <span lang="EN-US">JBoss jBPM Starters Kit</span> <span style="font-family: ?hu)?">。下载后解压?/span> <span lang="EN-US">D:\jbpm-starters-kit-3.1</span> <span style="font-family: ?hu)?">Q目录下含有五个子目录:(x)</span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">jbpm</span> <span style="font-family: ?hu)?"> </span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的Y件包</span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">jbpm-bpel </span> <span style="font-family: ?hu)?">只含有一个网?/span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">jbpm-db </span> <span style="font-family: ?hu)?">各种数据?/span> <span lang="EN-US">hibernate</span> <span style="font-family: ?hu)?">配置文gCZQ有些还包含?jin)相应?/span> <span lang="EN-US">jdbc</span> <span style="font-family: ?hu)?">驱动E序?/span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">jbpm-designer</span> <span style="font-family: ?hu)?"> 辅助开?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">Eclipse</span> <span style="font-family: ?hu)?">插gQ具体在</span> <span lang="EN-US">jbpm-gpd-feature</span> <span style="font-family: ?hu)?">子目录中</span> </p> <p class="a1"> <span style="font-size: 7.5pt; font-family: Wingdings;" lang="EN-US">l<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">           </span></span> <span lang="EN-US">jbpm-server</span> <span style="font-family: ?hu)?"> 一个已l配|好?jin)的Z</span> <span lang="EN-US">JBoss</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">CZ</span> <span lang="EN-US">.</span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> </span> </p> <h2> <span style="font-family: 黑体;">感觉下工作流</span> </h2> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">前面我们说了(jin)Q在</span> <span lang="EN-US">JBoss jBPM Starters Kit</span> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">jbpm-server</span> <span style="font-family: ?hu)?">目录是一个已l配|好的了(jin)</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">CZQ那么让我们来感觉一?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">做出的东西吧?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> </span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">双击</span> <span lang="EN-US">jbpm-server</span> <span style="font-family: ?hu)?">目录下的</span> <span lang="EN-US">start.bat</span> <span style="font-family: ?hu)?">文gQ启?/span> <span lang="EN-US">JBoss</span> <span style="font-family: ?hu)?">服务。这时会(x)打开一?/span> <span lang="EN-US">DOS</span> <span style="font-family: ?hu)?">H口Q启动完成后Q日志会(x)不断输出Q其中最后一句是“</span> <span lang="EN-US">13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd)</span> <span style="font-family: ?hu)?">”Q这表示</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">在开始工作了(jin)Q它不断q行轮询?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">打开|页Q?/span> <span lang="EN-US"> <a href="http://localhost:8080/jbpm/">http://localhost:8080/jbpm/</a> </span> <span style="font-family: ?hu)?"> 得到如下画面</span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> <img alt="20060713_image001.jpg" src="../../images/blogjava_net/chengang/jbpm/20060713_image001.jpg" border="0" width="554" height="191" /></span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">q是一个已l用</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">开发好的用户定单流E,h下单、审核、估L(fng)程。它所用的数据库是一个内|的数据库?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">?/span> <span lang="EN-US">cookie monster</span> <span style="font-family: ?hu)?">用户dQ选择“</span> <span lang="EN-US">create new web sale order</span> <span style="font-family: ?hu)?">”可以创徏一个定单。如下图所C,在图左边是填写的定单情况Q右边一整个定货程的示意图Q红色框表示程q行到哪一步了(jin)。填写好定单好,选择“</span> <span lang="EN-US">Save and Close Task</span> <span style="font-family: ?hu)?">”Q完成定单提交?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> <img alt="20060713_image002.jpg" src="../../images/blogjava_net/chengang/jbpm/20060713_image002.jpg" border="0" width="553" height="326" /></span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">选择右上角的“</span> <span lang="EN-US">Login as another user</span> <span style="font-family: ?hu)?">”以另外一个用户名</span> <span lang="EN-US">ernie</span> <span style="font-family: ?hu)?">d。这时可以看?/span> <span lang="EN-US">ernie</span> <span style="font-family: ?hu)?">用户的Q务列表中多了(jin)一V?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> <img alt="20060713_image003.jpg" src="../../images/blogjava_net/chengang/jbpm/20060713_image003.jpg" border="0" width="489" height="302" /></span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">点进dQ显C如下画面。这个示例对中文的支持不好,全都昄成了(jin)</span> <span lang="EN-US">unicode</span> <span style="font-family: ?hu)?">码了(jin)。不这什么多Q反正知道是q么回事p?jin)。在</span> <span lang="EN-US">comment</span> <span style="font-family: ?hu)?">填写意见,?/span> <span lang="EN-US">OK</span> <span style="font-family: ?hu)?">按钮Q进入到下一步。如果选择</span> <span lang="EN-US">more info needed</span> <span style="font-family: ?hu)?">按钮Q则打回l?/span> <span lang="EN-US">cookie monster</span> <span style="font-family: ?hu)?">用户修改定单?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span lang="EN-US"> <img alt="20060713_image004.jpg" src="../../images/blogjava_net/chengang/jbpm/20060713_image004.jpg" border="0" width="553" height="271" /></span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">下面的流E,q里׃再赘qC(jin)。在q个很标准的工作示例中Q我们基本可以看?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的应用范围还是比较广的。而且从这个示例,我们是看不出?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的,也就是说</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">在后台v着作用?/span> </p> <p class="MsoNormal" style="text-indent: 0cm;"> <span style="font-family: ?hu)?">从这个例子,q看不出</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的优ѝ不q,如果在一个流E不定Q经帔R要变动的目中,</span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">的好处将?x)显然出来。应?/span> <span lang="EN-US">jBPM</span> <span style="font-family: ?hu)?">后,改变?gu)程只需改变?gu)程描述文gQ这在后面的内Ҏ(gu)到?/span> </p> <span style="font-family: ?hu)?">q是一个已做好的示例,接下来我们将仉K这个实例来开发一个请假流E?/span> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:10 <a href="http://www.aygfsteel.com/caizh2009/articles/268983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jBPM(一): 开场白, 想从jBMP中学点什?Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268981.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268981.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268981.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268981.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268981.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="article_title"> <h1>jBPM(一): 开场白, 想从jBMP中学点什?</h1> <div id="wmqeeuq" class="title_bottom"> <script language="javascript" src="http://tech.ddvip.com/a_dir_d/title_bottom.js"></script> </div> <p><a >豆豆|?/a>   <a >技术应用频?/a>   2009q?4?6?  【字P(x)<a href="javascript:SetFont('12px');">?/a> <a href="javascript:SetFont('14px');">?/a> <a href="javascript:SetFont('16px');">?/a>?<a href="javascript:window.external.AddFavorite(this.location.href,%20this.document.title)">收藏本文</a></p> </div> <div id="wmqeeuq" class="title_bottom_cpr"> <script src="http://tech.ddvip.com/a_dir_d/ad_title_bottom.js"></script> <a target="_blank"><img style="display: none;" src="http://ad.ddvip.com/net46860.gif" border="0" alt="" /></a> </div> <!--id="929"--> <div id="wmqeeuq" class="searchhot">关键字:(x) <a target="_blank">Ultimus</a> <a target="_blank">BPM</a> <a target="_blank">MOSS</a> <a target="_blank">Tracking</a> <a target="_blank">W</a> </div> <div id="wmqeeuq" class="article_z"> <h2> jBPM(一): 开场白, 想从jBMP中学点什?? </h2> </div> <div id="wmqeeuq" class="article_ad"> <script language="javascript" src="http://tech.ddvip.com/a_dir_d/ads_250x250.js"></script> <script type="text/javascript"><!-- google_ad_client="pub-5977682010997732" ; /* 336x280, 创徏?08-7-26 */ google_ad_slot="8221152630" ; google_ad_width="336; google_ad_height" = 280; //--> </script> <script style="display: none;" type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> <div class="wmqeeuq" id="clickeye_content"> <div id="wmqeeuq" class="article_c" id="fontsize"> <p>  跟刚开始写Acegi一? q是有些担心(j)? |上差不多的博客或帖子很多了(jin), 自己Z么还写呢? 说服自己下决?j)写的理由如?</p> <p>  1, 别h写是别h? 只看他们写的不能解决自己的长q问?</p> <p>  2, 有些博客/帖子写的不够详细, 自己在照着做时,大多都不能成?</p> <p><clk> 3, 以这个系列ؓ(f)一个根据地,把自?nobr id="clickeyekey2" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,2,"")' oncontextmenu="return false" onmouseover="kwE(event,2, this)" onmouseout="kwL(event,this)" onmousemove="kwM(2)">学习(fn)</nobr>使用研究jBPM的心(j)得经验记下来.</clk></p> <p> 既然下决?j)要写?jin), 先列下要用的工具: JDK(6.0), Ant(1.7.1), Eclipse(3.4.0), Tomcat(6.0.18),Mysql(5.0), jBPM(版本?.1.4, 下蝲链接: http://nchc.dl.sourceforge.net/sourceforge/jbpm/jbpm-starters-kit-3.1.4.zip).</p> <p>  q期的一些计?</p> <p>  0, jBPM的一些简单介l?</p> <p><clk> 1, 往(xin)Mysql数据库里生成jBPM? 搭徏Eclipse<nobr id="clickeyekey1" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,1,"")' oncontextmenu="return false" onmouseover="kwE(event,1, this)" onmouseout="kwL(event,this)" onmousemove="kwM(1)">环境</nobr>.</clk></p> <p>  2, 把自带的例子部v到Tomcat+Mysql,l合源码, 以像跟踪自写E序那样C步步跟踪那个例子的执?</p> <p>  3, l合跟踪自带例子?j)? 梳理jBPM骨架.</p> <p>  4, 重点x(chng)Hibernate的应?</p> <p>  从jBMP惛_什?</p> <p>  1, ?jin)?学习(fn)jBPM的运行机? 以提高自己工作中用jBMP的效?</p> <p><clk> 2, 以这个jBMPZ? 研究学习(fn)其对Hibernate的综合?以I补现?nobr id="clickeyekey0" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,0,"")' oncontextmenu="return false" onmouseover="kwE(event,0, this)" onmouseout="kwL(event,this)" onmousemove="kwM(0)">目</nobr>中运用Hibernate的不?</clk></p> <p>  3, 深入学习(fn)体会(x)jBPM所体现再来的Y件工E? 建模.</p> <p>  pd文章Q?/p> <p>  <a target="_blank">jBPM(?: 一点简单介l?/a></p> <p>  <a target="_blank">jBPM(?: 如何在Eclipse搭徏jBPM环境?</a></p> <p>  <a target="_blank">jBPM(?: 部vjBPM所用表到数据库_1</a></p> <p>  <a target="_blank">jBPM(?: 部vjBPM所用表到数据库_2</a></p> <p>  <a target="_blank">jBPM(?: 由手动徏表想C个教?/a></p> <p>  <a target="_blank">jBPM(?: 如何让jBPM自带例子q行在指定数据库?</a></p> <p>  <a target="_blank">jBPM(?: 也说jBPM + Tomcat + MySQL</a></p> <p>  <a target="_blank">jBPM(?:jBPM的webSale在Tomcat下怎么q上的数据库?</a></p> <p>  <a target="_blank">jBPM(?:webSale?面?介绍</a></p> <p>  <a target="_blank">jBPM(十一): 从JbpmContextFilter说v</a></p> <p>  <a target="_blank">jBPM(十二): 程q行的历史和轨迹与ProcessLog</a></p> <p>  <a target="_blank">jBPM(十三): 从ObjectFactory到ObjectInfo</a></p> <p>  <a target="_blank">jBPM(十四): 见证一ObjectInfo实例的诞?/a></p> <p>  <a target="_blank">jBPM(十五)Q配|文件到ObjectFactory</a></p> <p>  <a target="_blank">jBPM(十六): 记录JbpmContext实例的诞?/a></p> </div> </div> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:09 <a href="http://www.aygfsteel.com/caizh2009/articles/268981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作与JBPM开发实例精解(二)(j)Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268980.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 07:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268980.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268980.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268980.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268980.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268980.html</trackback:ping><description><![CDATA[<br /> <br />     首先当你惛_一个框架的时候一定是你要有项目来用他?jin),OKQ那么你目当中的流E是什么你应该清楚吧,那么当你清楚?jin)这些的时候我们就开始我们这个最单的例子吧? <br /> <br />     假如我们现在有这么一个例子,公司员工x(chng)销点出差费Q那么他要将他的甌提交l他的第一U领导——部门主去审批Q然后部门主审批完?jin)之后还要交l这个部门主的上公司老总进行审扏V那么针对这个简单的程Q我们应该从哪里下手呢? <br /> <br />     首先W一件事情就是写程定义文gQ那么这个文件我们用什么来写呢Q他是一个符合某个语法的xml文gQ幸q的?span class="hilite1">jbpm</span>l我们提供了(jin)一个集成的开发环境让我们来用? <br /> <br />     首先d|上下一?span class="hilite1">jbpm</span>-jpdl-suite-3.2.GA包,解压 后你?x)发C里面有一个designer文g夹,那个里面是我们写流E定义文件的开发环境,他是一个eclipse的插Ӟ但是好像他给我们的那? eclipse版本有问题,大家从新下一个eclipse-SDK-3.2.1-win32.zipq个版本的eclipseQ然后覆盖他l我们提? 的那个? <br /> <br />     准备工作做完?jin),那么我们开始吧Q首先我们打开解压目录下的designer文g夹中的designer.bat文gQ他弹出一个eclipseQ然后我们就用这个东西来开发我们的程定义文g?jin)? <br /> <br />     打开之后你就?x)看见一个他的小例子Q不q我们不ȝ他,我们自己新徏一个工E。右?new-other-jBoss <span id="wmqeeuq" class="hilite1">jbpm</span>-process project。这个时候你?x)看见他弹出一个对话框Q输入你的工E名字,然后点击nextQ这个时候你?x)发C已经?span class="hilite1">jbpm</span>加蝲q去?jin),C要选中Generate simple ......? <br /> <br />     工程建立完了(jin)Q我们开始徏立我们的程定义文g。在工程里面你会(x)发现src/main/jpdlq个source folderQ然后你?x)看见他里面已经有?jin)一个流E定义文件了(jin)Q但是我们不ȝ他的Q我们自己徏立一个,右键src/main/jpdlQ然后new- other-jBoss <span id="wmqeeuq" class="hilite1">jbpm</span>-process definition。这个时候他׃(x)弹出一个对话框Qv一个你要写的流E定义文件的名字输入q去QOKQ可以了(jin)。这个时候你打开你徏立的那个文g夹,里面有processdefinition.xml文gQokQ打开他? <br /> <br />     在右面的N面你可以看C张什么都没有的白U,我们看看q部分左面的那些东西Q什么start啊,end啊,tasknode啊,fork 啊,join啊。那我们来解释一下这是个什么东西呢Q我们看看我们的需求,员工要写一个报销单,然后交给部门ȝ来处理,那么部门ȝ应该算是一? tasknodeQ他是一个Q务节炏Vstart和end其实是一个虚状态,当我们写完报销单的时候我们就提交?jin),q个时候他到?jin)第一? tasknodeq个节点?jin)。然后他审批完了(jin)q要交给ȝ理审批,那么他又是一个tasknodeQ然后ȝ理审批完?jin)结束,okQ是一个end? <br /> <br />     start--》tasknodeQ部门主审批)(j)--》tasknodeQȝ理审批)(j)--》end? <br /> <br />     如果觉得看的有点模糊可以看看我传上来的那个图。然后你在这个试图框的下面可以看到有个sourceQ点M下,׃(x)发现他已l自动的l你生成xml代码 ?jin)。但是这栯是有点不够,我们只是定义?jin)一个tasknode节点Qƈ没有定义tasknode节点的Q务由谁来做。那么我们还要定义一? tasknode节点是由谁来做的Q? <br />     那么q段代码是这么写的:(x) <br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372424" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%0A%3Cprocess-definition%0A%20%20xmlns%3D%22%22%20%20name%3D%22test1%22%3E%0A%20%20%20%3Cstart-state%20name%3D%22start%22%3E%0A%20%20%20%20%20%20%3Ctransition%20name%3D%22%22%20to%3D%22%E9%83%A8%E9%97%A8%E7%BB%8F%E7%90%86%E5%AE%A1%E6%89%B9%22%3E%3C%2Ftransition%3E%0A%20%20%20%3C%2Fstart-state%3E%0A%20%20%20%3Ctask-node%20name%3D%22%E9%83%A8%E9%97%A8%E7%BB%8F%E7%90%86%E5%AE%A1%E6%89%B9%22%3E%0A%20%20%20%20%20%20%3Ctask%3E%0A%20%20%20%20%20%20%09%3Cassigment%20actorId%3D%22%E9%83%A8%E9%97%A8%E7%BB%8F%E7%90%86%22%3E%3C%2Fassigment%3E%0A%20%20%20%20%20%20%3C%2Ftask%3E%0A%20%20%20%20%20%20%3Ctransition%20name%3D%22%22%20to%3D%22%E6%80%BB%E7%BB%8F%E7%90%86%E5%AE%A1%E6%89%B9%22%3E%3C%2Ftransition%3E%0A%20%20%20%3C%2Ftask-node%3E%0A%20%20%20%3Ctask-node%20name%3D%22%E6%80%BB%E7%BB%8F%E7%90%86%E5%AE%A1%E6%89%B9%22%3E%0A%20%20%20%20%20%20%3Ctask%3E%0A%20%20%20%20%20%20%09%3Cassigment%20actorId%3D%22%E6%80%BB%E7%BB%8F%E7%90%86%22%3E%3C%2Fassigment%3E%0A%20%20%20%20%20%20%3C%2Ftask%3E%0A%20%20%20%20%20%20%3Ctransition%20name%3D%22%22%20to%3D%22end1%22%3E%3C%2Ftransition%3E%0A%20%20%20%3C%2Ftask-node%3E%0A%20%20%20%3Cend-state%20name%3D%22end1%22%3E%3C%2Fend-state%3E%0A%3C%2Fprocess-definition%3E" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span><?xml version=</span><span id="wmqeeuq" class="string">"1.0"</span><span> encoding=</span><span id="wmqeeuq" class="string">"UTF-8"</span><span>?>  </span></span></li> <li><span>  </span></li> <li><span><process-definition  </span></li> <li><span>  xmlns=<span id="wmqeeuq" class="string">""</span><span>  name=</span><span id="wmqeeuq" class="string">"test1"</span><span>>  </span></span></li> <li><span>   <start-state name=<span id="wmqeeuq" class="string">"start"</span><span>>  </span></span></li> <li><span>      <transition name=<span id="wmqeeuq" class="string">""</span><span> to=</span><span id="wmqeeuq" class="string">"部门l理审批"</span><span>></transition>  </span></span></li> <li><span>   </start-state>  </span></li> <li><span>   <task-node name=<span id="wmqeeuq" class="string">"部门l理审批"</span><span>>  </span></span></li> <li><span>      <task>  </span></li> <li><span>        <assigment actorId=<span id="wmqeeuq" class="string">"部门l理"</span><span>></assigment>  </span></span></li> <li><span>      </task>  </span></li> <li><span>      <transition name=<span id="wmqeeuq" class="string">""</span><span> to=</span><span id="wmqeeuq" class="string">"ȝ理审?</span><span>></transition>  </span></span></li> <li><span>   </task-node>  </span></li> <li><span>   <task-node name=<span id="wmqeeuq" class="string">"ȝ理审?</span><span>>  </span></span></li> <li><span>      <task>  </span></li> <li><span>        <assigment actorId=<span id="wmqeeuq" class="string">"ȝ?</span><span>></assigment>  </span></span></li> <li><span>      </task>  </span></li> <li><span>      <transition name=<span id="wmqeeuq" class="string">""</span><span> to=</span><span id="wmqeeuq" class="string">"end1"</span><span>></transition>  </span></span></li> <li><span>   </task-node>  </span></li> <li><span>   <end-state name=<span id="wmqeeuq" class="string">"end1"</span><span>></end-state>  </span></span></li> <li><span></process-definition>  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java"><?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="" name="test1"> <start-state name="start"> <transition name="" to="部门l理审批"></transition> </start-state> <task-node name="部门l理审批"> <task> <assigment actorId="部门l理"></assigment> </task> <transition name="" to="ȝ理审?></transition> </task-node> <task-node name="ȝ理审?> <task> <assigment actorId="ȝ?></assigment> </task> <transition name="" to="end1"></transition> </task-node> <end-state name="end1"></end-state> </process-definition></pre> <br />     q样的话我们的流E定义文件就定义完了(jin)Q但是这只是把文件定义完?jin),pȝq不知道啊,所以我们还要把我们的文仉|到pȝ中去Q那么这个过E是q样的:(x) <br /> <br />     首先我们在src/main/java里面新徏立一个包Q然后徏立一个classQ随便v个名字,叫TestJBPM_01吧,那么在这个类里面我们要做的是什么呢Q我们要先导入表Q因?span class="hilite1">jbpm</span>要运行就要用到很多个表,okQ那么我们这个里面导入表和hibernate导入表是差不多的Q它的代码是q样的:(x) <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372468" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20com.jbpm.test%3B%0A%0Aimport%20junit.framework.TestCase%3B%0A%0Aimport%20org.jbpm.JbpmConfiguration%3B%0A%0Apublic%20class%20TestJbpm_01%20extends%20TestCase%20%7B%0A%09%0A%09public%20void%20testJbpm()%7B%0A%09%09%0A%09%09%2F%2F%E5%88%9B%E5%BB%BAjbpm%E6%95%B0%E6%8D%AE%E5%BA%93%E8%A1%A8%E3%80%82%E4%BB%96%E5%B0%B1%E5%83%8Fhibernate%E9%87%8C%E9%9D%A2%E7%9A%84%E5%93%AA%E4%B8%AAexport%E4%B8%80%E6%A0%B7%E3%80%82%E5%AE%9E%E9%99%85%E4%B8%8A%E4%BB%96%E5%B0%B1%E6%98%AFhibernate%E9%87%8C%E9%9D%A2%E7%9A%84%E5%93%AA%E4%B8%AAexport%E3%80%82%0A%09%09%2F%2F%E5%BA%94%E4%B8%BA%E4%BB%96%E6%98%A0%E5%B0%84%E4%BA%86%E5%BE%88%E5%A4%9A%E4%B8%AA%E8%A1%A8%EF%BC%8C%E6%89%80%E4%BB%A5%E6%88%91%E4%BB%AC%E5%B0%B1%E8%83%BD%E5%88%9B%E5%BB%BA%E9%82%A3%E4%B9%88%E5%A4%9A%E4%B8%AA%E8%A1%A8%E3%80%82%0A%09%09JbpmConfiguration.getInstance().createSchema()%3B%0A%09%09%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> junit.framework.TestCase;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestJbpm_01 </span><span id="wmqeeuq" class="keyword">extends</span><span> TestCase {  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> testJbpm(){  </span></span></li> <li><span>          </span></li> <li><span>        <span id="wmqeeuq" class="comment">//创徏<span id="wmqeeuq" class="hilite1">jbpm</span>数据库表。他像hibernate里面的哪个export一栗实际上他就是hibernate里面的哪个export?/span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//应ؓ(f)他映了(jin)很多个表Q所以我们就能创建那么多个表?/span><span>  </span></span></li> <li><span>        JbpmConfiguration.getInstance().createSchema();  </span></li> <li><span>          </span></li> <li><span>    }  </span></li> <li><span>}  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">package com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test; import junit.framework.TestCase; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration; public class TestJbpm_01 extends TestCase { public void testJbpm(){ //创徏<span id="wmqeeuq" class="hilite1">jbpm</span>数据库表。他像hibernate里面的哪个export一栗实际上他就是hibernate里面的哪个export? //应ؓ(f)他映了(jin)很多个表Q所以我们就能创建那么多个表? JbpmConfiguration.getInstance().createSchema(); } }</pre> <br /> 然后呢我们就开始部|我们的程定义文gQ我们将q个文g当中的内容呢攑ֈ数据库当中去Q当我们以后再用的时候呢我们随时的它加蝲出来? <br /> <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372546" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20com.jbpm.test%3B%0A%0Aimport%20junit.framework.TestCase%3B%0A%0Aimport%20org.jbpm.JbpmConfiguration%3B%0Aimport%20org.jbpm.JbpmContext%3B%0Aimport%20org.jbpm.graph.def.ProcessDefinition%3B%0A%0Apublic%20class%20TestJbpm_02%20extends%20TestCase%20%7B%0A%09%0A%09%2F%2FjbpmConfiguration%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%88%9B%E5%BB%BA%0A%09static%20JbpmConfiguration%20jbpmConfiguration%20%3D%20JbpmConfiguration.getInstance()%3B%0A%09%0A%09public%20void%20testJbpm()%7B%0A%09%09%0A%09%09%2F%2F%E7%84%B6%E5%90%8E%E6%88%91%E4%BB%AC%E6%8A%8AprocessDefinition%E9%87%8C%E9%9D%A2%E7%9B%B8%E5%85%B3%E7%9A%84%E5%AF%B9%E8%B1%A1%E6%8C%81%E4%B9%85%E5%8C%96%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E9%87%8C%E9%9D%A2%E5%8E%BB%E3%80%82%0A%09%09%2F%2F%E6%B5%81%E7%A8%8B%E5%AE%9A%E4%B9%89%E6%96%87%E4%BB%B6%E9%87%8C%E9%9D%A2%E6%9C%89%E5%BE%88%E5%A4%9A%E4%B8%AA%E6%A6%82%E5%BF%B5%EF%BC%8C%E4%BB%96%E6%9C%89node%EF%BC%8C%E6%9C%89transition%EF%BC%8C%E8%BF%98%E6%9C%89processDefinition%EF%BC%8C%E9%82%A3%E4%B9%88%E6%88%91%E4%BB%AC%E4%B8%8D%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%0A%09%09%2F%2F%E4%B8%80%E4%B8%AA%E4%BF%9D%E5%AD%98%EF%BC%8Cjbpm%E6%8A%8A%E4%BF%9D%E5%AD%98%E8%BF%99%E4%B9%88%E5%A4%9A%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%96%B9%E6%B3%95%E5%B0%81%E8%A3%85%E6%88%90%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%8F%AB%E5%81%9AdeployProcessDefinition%E3%80%82%E6%88%91%E4%BB%AC%E5%8F%AA%E8%A6%81%E8%B0%83%E7%94%A8%E8%BF%99%E4%B8%AA%0A%09%09%2F%2F%E6%96%B9%E6%B3%95%EF%BC%8C%E4%BC%A0%E4%B8%80%E4%B8%AAprocessDefinition%E5%AF%B9%E8%B1%A1%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E8%83%BD%E5%B0%86%E4%BB%96%E4%BB%AC%E5%AD%98%E5%85%A5%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E9%87%8C%E9%9D%A2%E5%8E%BB%E3%80%82%0A%09%09%0A%09%09%2F%2F%E8%BF%99%E4%B8%AA%E9%A6%96%E5%85%88%E7%AC%AC%E4%B8%80%E6%AD%A5%E6%88%91%E4%BB%AC%E8%A6%81%E5%BE%97%E5%88%B0%E4%B8%80%E4%B8%AAprocessDefinition%E5%AF%B9%E8%B1%A1%EF%BC%8C%E7%84%B6%E5%90%8E%E6%88%91%E4%BB%AC%E6%8A%8A%E4%BB%96%E9%83%A8%E7%BD%B2%E5%88%B0%E6%B5%81%E7%A8%8B%E4%B8%AD%E5%8E%BB%E3%80%82%0A%09%09ProcessDefinition%20processDefinition%20%3D%20ProcessDefinition.parseXmlResource(%22testJBPM%2FtestJbpm.xml%22)%3B%0A%09%09%2F%2F%E6%88%91%E4%BB%AC%E8%A6%81%E5%AD%98%E5%B0%B1%E5%BF%85%E9%A1%BB%E8%8E%B7%E5%BE%97%E4%B8%80%E4%B8%AAsession%E5%AF%B9%E8%B1%A1%EF%BC%8C%E8%80%8Cjbpm%E5%B7%B2%E7%BB%8F%E6%8A%8Asession%E5%AF%B9%E8%B1%A1%E5%B0%81%E8%A3%85%E5%88%B0%E4%B8%80%E4%B8%AAJbpmContext%E5%AF%B9%E8%B1%A1%E9%87%8C%E9%9D%A2%E4%BA%86%E3%80%82%0A%09%09%2F%2F%E9%82%A3%E4%B9%88%E8%BF%99%E4%B8%AAjbpmContext%E5%AF%B9%E8%B1%A1%E6%98%AF%E6%80%8E%E4%B9%88%E5%BE%97%E5%88%B0%E7%9A%84%E5%91%A2%EF%BC%8C%E6%88%91%E4%BB%AC%E8%A6%81%E5%85%88%E6%9C%89%E4%B8%80%E4%B8%AAjbpmConfiguration%E5%AF%B9%E8%B1%A1%EF%BC%8C%E6%88%91%E4%BB%AC%E8%A6%81%E5%AF%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9B%E8%A1%8C%0A%09%09%2F%2F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%97%B6%E5%80%99%E4%B8%80%E5%AE%9A%E8%A6%81%E6%9C%89jbpmConfiguration%E8%BF%99%E4%B8%AA%E5%AF%B9%E8%B1%A1%EF%BC%8C%E7%94%A8%E4%BB%96%E6%9D%A5%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%B1%BB%E4%BC%BC%E4%BA%8Ehibernate%E5%BD%93%E4%B8%AD%E7%9A%84session%E4%B8%80%E6%A0%B7%E7%9A%84%0A%09%09%2F%2F%E5%AF%B9%E8%B1%A1%E2%80%94%E2%80%94jbpmContext%E3%80%82%E4%BB%96%E6%98%AF%E6%88%91%E4%BB%AC%E5%AF%B9%E6%95%B0%E6%8D%AE%E5%BA%93%E6%89%80%E6%9C%89%E7%9A%84%E6%93%8D%E4%BD%9C%E7%9A%84%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3%E3%80%82%0A%09%09JbpmContext%20jbpmContext%20%3D%20jbpmConfiguration.createJbpmContext()%3B%0A%09%09try%7B%0A%09%09%09%2F%2F%E7%84%B6%E5%90%8E%E9%83%A8%E7%BD%B2%E7%9A%84%E6%93%8D%E4%BD%9C%E5%B7%B2%E7%BB%8F%E7%94%B1jbpmContext%E7%BB%99%E6%88%91%E4%BB%AC%E5%88%9B%E5%BB%BA%E5%A5%BD%E4%BA%86%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AA%E9%9C%80%E8%A6%81%E8%B0%83%E4%B8%80%E4%B8%8B%E4%BB%96%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%B9%E6%B3%95%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BA%86%E3%80%82%0A%09%09%09jbpmContext.deployProcessDefinition(processDefinition)%3B%0A%09%09%7Dfinally%7B%0A%09%09%09%2F%2F%E6%9C%80%E5%90%8E%E6%88%91%E4%BB%AC%E8%BF%98%E8%A6%81%E5%AF%B9%E4%BB%96close%E4%B8%80%E4%B8%8B%EF%BC%8C%E5%B0%B1%E5%83%8F%E6%88%91%E4%BB%AC%E7%94%A8hibernate%E7%9A%84%E6%97%B6%E5%80%99%E8%A6%81close%20session%E4%B8%80%E6%A0%B7%E3%80%82%0A%09%09%09jbpmContext.close()%3B%0A%09%09%7D%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> junit.framework.TestCase;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.def.ProcessDefinition;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestJbpm_02 </span><span id="wmqeeuq" class="keyword">extends</span><span> TestCase {  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="comment">//jbpmConfiguration对象的创?/span><span>  </span></span></li> <li><span>    <span id="wmqeeuq" class="keyword">static</span><span> JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> testJbpm(){  </span></span></li> <li><span>          </span></li> <li><span>        <span id="wmqeeuq" class="comment">//然后我们把processDefinition里面相关的对象持久化到数据库里面厅R?/span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//程定义文g里面有很多个概念Q他有nodeQ有transitionQ还有processDefinitionQ那么我们不需要一?/span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//一个保存,<span id="wmqeeuq" class="hilite1">jbpm</span>把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。我们只要调用这?/span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//Ҏ(gu)Q传一个processDefinition对象Q我们就能将他们存入到数据库里面厅R?/span><span>  </span></span></li> <li><span>          </span></li> <li><span>        <span id="wmqeeuq" class="comment">//q个首先W一步我们要得到一个processDefinition对象Q然后我们把他部|到程中去?/span><span>  </span></span></li> <li><span>        ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource(<span id="wmqeeuq" class="string">"testJBPM/testJbpm.xml"</span><span>);  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//我们要存必获得一个session对象Q?span class="hilite1">jbpm</span>已经把session对象装C个JbpmContext对象里面?jin)?/span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//那么q个jbpmContext对象是怎么得到的呢Q我们要先有一个jbpmConfiguration对象Q我们要Ҏ(gu)据库q行</span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//操作的时候一定要有jbpmConfigurationq个对象Q用他来创徏一个类ghibernate当中的session一L(fng)</span><span>  </span></span></li> <li><span>        <span id="wmqeeuq" class="comment">//对象——jbpmContext。他是我们对数据库所有的操作的一个接口?/span><span>  </span></span></li> <li><span>        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();  </span></li> <li><span>        <span id="wmqeeuq" class="keyword">try</span><span>{  </span></span></li> <li><span>            <span id="wmqeeuq" class="comment">//然后部v的操作已l由jbpmContextl我们创建好?jin),我们只需要调一下他的一个方法就可以?jin)?/span><span>  </span></span></li> <li><span>            jbpmContext.deployProcessDefinition(processDefinition);  </span></li> <li><span>        }<span id="wmqeeuq" class="keyword">finally</span><span>{  </span></span></li> <li><span>            <span id="wmqeeuq" class="comment">//最后我们还要对他close一下,像我们用hibernate的时候要close session一栗?/span><span>  </span></span></li> <li><span>            jbpmContext.close();  </span></li> <li><span>        }  </span></li> <li><span>    }  </span></li> <li><span>}  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">package com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test; import junit.framework.TestCase; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.def.ProcessDefinition; public class TestJbpm_02 extends TestCase { //jbpmConfiguration对象的创? static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ //然后我们把processDefinition里面相关的对象持久化到数据库里面厅R? //程定义文g里面有很多个概念Q他有nodeQ有transitionQ还有processDefinitionQ那么我们不需要一? //一个保存,<span id="wmqeeuq" class="hilite1">jbpm</span>把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。我们只要调用这? //Ҏ(gu)Q传一个processDefinition对象Q我们就能将他们存入到数据库里面厅R? //q个首先W一步我们要得到一个processDefinition对象Q然后我们把他部|到程中去? ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml"); //我们要存必获得一个session对象Q?span class="hilite1">jbpm</span>已经把session对象装C个JbpmContext对象里面?jin)? //那么q个jbpmContext对象是怎么得到的呢Q我们要先有一个jbpmConfiguration对象Q我们要Ҏ(gu)据库q行 //操作的时候一定要有jbpmConfigurationq个对象Q用他来创徏一个类ghibernate当中的session一L(fng) //对象——jbpmContext。他是我们对数据库所有的操作的一个接口? JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); try{ //然后部v的操作已l由jbpmContextl我们创建好?jin),我们只需要调一下他的一个方法就可以?jin)? jbpmContext.deployProcessDefinition(processDefinition); }finally{ //最后我们还要对他close一下,像我们用hibernate的时候要close session一栗? jbpmContext.close(); } } }</pre> <br /> OkQ第二步我们也做完了(jin)Q那么现在我们开始做W三步,也就是说Q我们流E定义文件写好了(jin)Q现在我们的pȝ当中有了(jin)q样一个报销程Q那么就开? 实际的去用她吧,一个h报销?jin),那么她就要写一个报销的申P但是q个报销的申请写完了(jin)存到数据库当中了(jin)q(sh)能算完了(jin)Q应该和我们的这个流E关联v? 啊,那么她应该怎么d联呢Q嘿嘿,是这样地Q我们在建立q个甌单这个类的时候应该定义一个processInstanceId属性,Ҏ(gu)一个long 型的Q她p录这我们的这个流E实例的idQ那么什么是程实例QprocessInstanceQ呢Q她是我们工作流当中W二重要的概念,他和程定义 的关pd相当于对象和cM间的关系Q类是一个抽象的东西Q她定义完了(jin)是什么也q不?jin)的Q要想用她内部定义的东西我们pnewZ个实例来Q当然这个里? 也是q样的? <br /> <br /> 那么也就是说Q当我们创徏q个报销甌的时候我们就要先Ҏ(gu)q个程‘new’Z个流E实例来存到数据库当中,然后在把她的id传给报销甌对象然后再将q个报销甌对象存到数据库当中。那么这个代码是q样的:(x) <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372606" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20com.jbpm.test%3B%0A%0Aimport%20junit.framework.TestCase%3B%0A%0Aimport%20org.hibernate.Session%3B%0A%0Apublic%20class%20TestJbpm_03%20extends%20TestCase%20%7B%0A%09%0A%09public%20void%20testJbpm()%7B%0A%09%09Session%20session%20%3D%20null%3B%0A%09%09try%7B%0A%09%09%09session%20%3D%20HibernateUtil.getSession()%3B%0A%09%09%09session.beginTransaction()%3B%0A%09%09%09%0A%09%09%09Document%20doc%20%3D%20new%20Document()%3B%0A%09%09%09doc.setTitle(%22title3%22)%3B%0A%09%09%09doc.setContent(%22this%20is%20content3%22)%3B%0A%09%09%09session.save(doc)%3B%09%09%09%09%09%09%0A%09%09%09session.getTransaction().commit()%3B%0A%09%09%7Dcatch(Exception%20e)%7B%0A%09%09%09e.printStackTrace()%3B%0A%09%09%09session.getTransaction().rollback()%3B%0A%09%09%7Dfinally%7B%0A%09%09%09HibernateUtil.closeSession(session)%3B%0A%09%09%7D%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> junit.framework.TestCase;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.hibernate.Session;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestJbpm_03 </span><span id="wmqeeuq" class="keyword">extends</span><span> TestCase {  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> testJbpm(){  </span></span></li> <li><span>        Session session = <span id="wmqeeuq" class="keyword">null</span><span>;  </span></span></li> <li><span>        <span id="wmqeeuq" class="keyword">try</span><span>{  </span></span></li> <li><span>            session = HibernateUtil.getSession();  </span></li> <li><span>            session.beginTransaction();  </span></li> <li><span>              </span></li> <li><span>            Document doc = <span id="wmqeeuq" class="keyword">new</span><span> Document();  </span></span></li> <li><span>            doc.setTitle(<span id="wmqeeuq" class="string">"title3"</span><span>);  </span></span></li> <li><span>            doc.setContent(<span id="wmqeeuq" class="string">"this is content3"</span><span>);  </span></span></li> <li><span>            session.save(doc);                        </span></li> <li><span>            session.getTransaction().commit();  </span></li> <li><span>        }<span id="wmqeeuq" class="keyword">catch</span><span>(Exception e){  </span></span></li> <li><span>            e.printStackTrace();  </span></li> <li><span>            session.getTransaction().rollback();  </span></li> <li><span>        }<span id="wmqeeuq" class="keyword">finally</span><span>{  </span></span></li> <li><span>            HibernateUtil.closeSession(session);  </span></li> <li><span>        }  </span></li> <li><span>    }  </span></li> <li><span>}  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">package com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test; import junit.framework.TestCase; import org.hibernate.Session; public class TestJbpm_03 extends TestCase { public void testJbpm(){ Session session = null; try{ session = HibernateUtil.getSession(); session.beginTransaction(); Document doc = new Document(); doc.setTitle("title3"); doc.setContent("this is content3"); session.save(doc); session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback(); }finally{ HibernateUtil.closeSession(session); } } }</pre> <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372687" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20com.jbpm.test%3B%0A%0Aimport%20junit.framework.TestCase%3B%0A%0Aimport%20org.jbpm.JbpmConfiguration%3B%0Aimport%20org.jbpm.JbpmContext%3B%0Aimport%20org.jbpm.graph.def.ProcessDefinition%3B%0Aimport%20org.jbpm.graph.exe.ProcessInstance%3B%0A%2F**%0A%2F*%0A%2F*%E5%B0%86%E7%94%B3%E8%AF%B7%E5%8D%95%E5%92%8C%E6%B5%81%E7%A8%8B%E5%AE%9E%E4%BE%8B%E7%BB%91%E5%AE%9A%0A%2F*%0Apublic%20class%20TestJbpm_04%20extends%20TestCase%20%7B%0A%09%0A%09static%20JbpmConfiguration%20jbpmConfiguration%20%3D%20JbpmConfiguration.getInstance()%3B%0A%09%0A%09public%20void%20testJbpm()%7B%0A%09%09%0A%09%09JbpmContext%20jbpmContext%20%3D%20jbpmConfiguration.createJbpmContext()%3B%0A%09%09jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory())%3B%0A%09%09try%20%7B%0A%09%09%09ProcessDefinition%20processDefinition%20%3D%20jbpmContext.getGraphSession().findLatestProcessDefinition(%22testJbpm%22)%3B%0A%09%09%09ProcessInstance%20processInstance%20%3D%20new%20ProcessInstance(processDefinition)%3B%0A%09%09%09jbpmContext.save(processInstance)%3B%20%20%0A%09%09%09%0A%09%09%09%0A%09%09%09%2F%2F%E5%B0%86%E6%88%91%E4%BB%AC%E7%9A%84document%E5%92%8Cinstance%E7%BB%91%E5%AE%9A%E3%80%82%0A%09%09%09long%20processInstanceId%20%3D%20processInstance.getId()%3B%0A%09%09%09Document%20document%20%3D%20(Document)jbpmContext.getSession().load(Document.class%2C1)%3B%0A%09%09%09document.setProcessInstanceId(processInstanceId)%3B%0A%09%09%09jbpmContext.getSession().update(document)%3B%0A%09%09%09processInstance.getContextInstance().setVariable(%22document%22%2C%20document.getId())%3B%0A%09%09%7Dcatch(Exception%20e)%7B%0A%09%09%09e.printStackTrace()%3B%0A%09%09%7Dfinally%7B%0A%09%09%09jbpmContext.close()%3B%0A%09%09%7D%0A%09%09%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> junit.framework.TestCase;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.def.ProcessDefinition;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.exe.ProcessInstance;  </span></span></li> <li><span>/**  </span></li> <li><span>/*  </span></li> <li><span>/*申请单和流E实例绑?nbsp; </span></li> <li><span>/*  </span></li> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestJbpm_04 </span><span id="wmqeeuq" class="keyword">extends</span><span> TestCase {  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">static</span><span> JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> testJbpm(){  </span></span></li> <li><span>          </span></li> <li><span>        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();  </span></li> <li><span>        jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory());  </span></li> <li><span>        <span id="wmqeeuq" class="keyword">try</span><span> {  </span></span></li> <li><span>            ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(<span id="wmqeeuq" class="string">"testJbpm"</span><span>);  </span></span></li> <li><span>            ProcessInstance processInstance = <span id="wmqeeuq" class="keyword">new</span><span> ProcessInstance(processDefinition);  </span></span></li> <li><span>            jbpmContext.save(processInstance);    </span></li> <li><span>              </span></li> <li><span>              </span></li> <li><span>            <span id="wmqeeuq" class="comment">//我们的document和instancel定?/span><span>  </span></span></li> <li><span>            <span id="wmqeeuq" class="keyword">long</span><span> processInstanceId = processInstance.getId();  </span></span></li> <li><span>            Document document = (Document)jbpmContext.getSession().load(Document.<span id="wmqeeuq" class="keyword">class</span><span>,</span><span id="wmqeeuq" class="number">1</span><span>);  </span></span></li> <li><span>            document.setProcessInstanceId(processInstanceId);  </span></li> <li><span>            jbpmContext.getSession().update(document);  </span></li> <li><span>            processInstance.getContextInstance().setVariable(<span id="wmqeeuq" class="string">"document"</span><span>, document.getId());  </span></span></li> <li><span>        }<span id="wmqeeuq" class="keyword">catch</span><span>(Exception e){  </span></span></li> <li><span>            e.printStackTrace();  </span></li> <li><span>        }<span id="wmqeeuq" class="keyword">finally</span><span>{  </span></span></li> <li><span>            jbpmContext.close();  </span></li> <li><span>        }  </span></li> <li><span>          </span></li> <li><span>    }  </span></li> <li><span>}  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">package com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test; import junit.framework.TestCase; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.def.ProcessDefinition; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.exe.ProcessInstance; /** /* /*申请单和流E实例绑? /* public class TestJbpm_04 extends TestCase { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory()); try { ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("testJbpm"); ProcessInstance processInstance = new ProcessInstance(processDefinition); jbpmContext.save(processInstance); //我们的document和instancel定? long processInstanceId = processInstance.getId(); Document document = (Document)jbpmContext.getSession().load(Document.class,1); document.setProcessInstanceId(processInstanceId); jbpmContext.getSession().update(document); processInstance.getContextInstance().setVariable("document", document.getId()); }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } } }</pre> <br /> <br /> 现在我们的申请已l和实例兌h?jin),那么接下来的下一步就开始用啦,是让这个申h转v来吧Q那么她应该怎么L转呢Q嘿嘿,<span id="wmqeeuq" class="hilite1">jbpm</span>l我们提供一个signalҎ(gu)Q每当执行一ơ这个方法的时候她流转一下到下一个节点,你可以打印出当前节点试一下,看看是不是执行一ơ你的当前节点就换一下。这D代码是q样的:(x) <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a style="left: 64px ! important; top: -4px ! important;" title="点击q里?Adblock Plus qo(h)该对? class="abp-objtab-09397903547059967 visible ontop" ></a><embed tplayername="other" splayername="SWF" id="Player1241496372746" type="application/x-shockwave-flash" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20com.jbpm.test%3B%0A%0Aimport%20junit.framework.TestCase%3B%0A%0Aimport%20org.jbpm.JbpmConfiguration%3B%0Aimport%20org.jbpm.JbpmContext%3B%0Aimport%20org.jbpm.graph.exe.ProcessInstance%3B%0A%0Apublic%20class%20TestJbpm_05%20extends%20TestCase%20%7B%0A%09%0A%09static%20JbpmConfiguration%20jbpmConfiguration%20%3D%20JbpmConfiguration.getInstance()%3B%0A%09%0A%09public%20void%20testJbpm()%7B%0A%09%09JbpmContext%20jbpmContext%20%3D%20jbpmConfiguration.createJbpmContext()%3B%0A%09%09jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory())%3B%0A%09%09try%7B%0A%09%09%09%0A%09%09%09Document%20document%20%3D%20(Document)jbpmContext.getSession().load(Document.class%2C%203)%3B%0A%09%09%09long%20processInstanceId%20%3D%20document.getProcessInstanceId()%3B%0A%09%09%09ProcessInstance%20processInstance%20%3D%20jbpmContext.getProcessInstance(processInstanceId)%3B%0A%09%09%09processInstance.signal()%3B%0A%09%09%7Dfinally%7B%0A%09%09%09jbpmContext.close()%3B%0A%09%09%7D%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="0"></div> </div> <ol class="dp-j" start="1"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> junit.framework.TestCase;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext;  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">import</span><span> org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.exe.ProcessInstance;  </span></span></li> <li><span>  </span></li> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestJbpm_05 </span><span id="wmqeeuq" class="keyword">extends</span><span> TestCase {  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">static</span><span> JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();  </span></span></li> <li><span>      </span></li> <li><span>    <span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> testJbpm(){  </span></span></li> <li><span>        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();  </span></li> <li><span>        jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory());  </span></li> <li><span>        <span id="wmqeeuq" class="keyword">try</span><span>{  </span></span></li> <li><span>              </span></li> <li><span>            Document document = (Document)jbpmContext.getSession().load(Document.<span id="wmqeeuq" class="keyword">class</span><span>, </span><span id="wmqeeuq" class="number">3</span><span>);  </span></span></li> <li><span>            <span id="wmqeeuq" class="keyword">long</span><span> processInstanceId = document.getProcessInstanceId();  </span></span></li> <li><span>            ProcessInstance processInstance = jbpmContext.getProcessInstance(processInstanceId);  </span></li> <li><span>            processInstance.signal();  </span></li> <li><span>        }<span id="wmqeeuq" class="keyword">finally</span><span>{  </span></span></li> <li><span>            jbpmContext.close();  </span></li> <li><span>        }  </span></li> <li><span>    }  </span></li> <li><span>}  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">package com.<span id="wmqeeuq" class="hilite1">jbpm</span>.test; import junit.framework.TestCase; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmConfiguration; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.JbpmContext; import org.<span id="wmqeeuq" class="hilite1">jbpm</span>.graph.exe.ProcessInstance; public class TestJbpm_05 extends TestCase { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory()); try{ Document document = (Document)jbpmContext.getSession().load(Document.class, 3); long processInstanceId = document.getProcessInstanceId(); ProcessInstance processInstance = jbpmContext.getProcessInstance(processInstanceId); processInstance.signal(); }finally{ jbpmContext.close(); } } }</pre> <br /> <br /> 好啦Q?span class="hilite1">jbpm</span>的简单例子就到这里了(jin)Q有什么问题大家可以给我留留言Q还请大家多多指教小弟啊。后面我q(sh)(x)写点更具体的一些问题,比如说列出提交到q个q没有审批的公文啊,q有如果有多个分支的话应该怎么d啊等{等{? <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 15:05 <a href="http://www.aygfsteel.com/caizh2009/articles/268980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ǰ</a>| <a href="http://" target="_blank">ͬ</a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">Ӣɽ</a>| <a href="http://" target="_blank">С</a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˴</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">쳤</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ϊ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">֦</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͼľ</a>| <a href="http://" target="_blank">ʱ</a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">봨</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">Ž</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>