<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-网路冷眼@BlogJava</title><link>http://www.blogjava.net/lewhwa/</link><description>熙熙攘攘一闲人 以冷静的眼光观察技术</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 11:11:02 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 11:11:02 GMT</pubDate><ttl>60</ttl><item><title>Activiti User Guide（Activiti用户指南)-Chapter 18. JBPM Migration（JBPM 迁移）（2）</title><link>http://www.blogjava.net/lewhwa/archive/2011/03/08/345975.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Tue, 08 Mar 2011 13:40:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/03/08/345975.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/345975.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/03/08/345975.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/345975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/345975.html</trackback:ping><description><![CDATA[<p><strong>Extend the migration logic</strong> </p>
<p><strong>扩展迁移逻辑</strong><strong></strong> </p>
<p>The migration logic is written in such a way, that it is easy to extend to suit your needs. The source code is available as a Maven 2 project in the srcsubfolder of the downloaded zip file. To build a new zip file, after having changed or extended the logic, simply execute a </p>
<p>迁移逻辑可以编写，以便轻松地满足你的需求。源代码在所下载zip文件里src子文件夹里作一个Maven 2项目来使用。为了构建一个新的zip文件，在已经改变或者扩展逻辑之后，简单执行下面指令</p>
<p>
</p>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">&nbsp;mvn&nbsp;clean&nbsp;install</span></div>
<p>&nbsp;</p>
<p>to produce a new zip file in the target folder.
</p>
<p>在target文件下产生一个新的zip文件。
</p>
<p>Following picture gives a high-level overview of the classes in the migration logic.
</p>
<p>下图提供了在迁移逻辑里类的高层次概貌。
</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/f00075002d21_12E6D/migration.code.overview_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="migration.code.overview" border="0" alt="migration.code.overview" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/f00075002d21_12E6D/migration.code.overview_thumb.png" width="767" height="494" /></a>
</p>
<ul>
    <li>Both the <strong>ProcessConversion</strong> and <strong>ProcessDataMigration</strong> classes have a main method that directly is called from the ant build script in the root of the migration zip.
    </li>
    <li><strong>ProcessConversion</strong> and <strong>ProcessDataMigration</strong> 这两个类都有在迁移zip的根目录下的ant构建脚本里调用的<strong>main</strong>方法。
    </li>
    <li>These classes construct a <strong>ServiceFactory</strong> based on the two properties files, using a static factory method
    </li>
    <li>通过使用静态的工厂方法，基于两个properties文件这些类构建一个<strong>ServiceFactory</strong></li>
</ul>
<pre>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; ">ServiceFactory.configureFromProperties(jbpmDbProperties,&nbsp;activitiDbProperties);</span></div>
</pre>
<ul>
    <li>The services are constructed by the ServiceFactory (eg. getProcessConversionService()) and are used to execute the migration logic:
    </li>
    <li>通过<strong>ServiceFactory</strong> (eg. <strong>getProcessConversionService()</strong>)构建这些服务，这些服务被用来执行迁移逻辑：</li>
</ul>
<pre>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;execute()&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;IOException&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;convert&nbsp;processes</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;ServiceFactory&nbsp;serviceFactory&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;createServiceFactory();<br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;ProcessConversionService&nbsp;processConversionService&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;serviceFactory.getProcessConversionService();<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;Map</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,&nbsp;Document</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;migratedProcesses&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;processConversionService.convertAllProcessDefinitions();<br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;write&nbsp;results&nbsp;to&nbsp;bpmn20.xml&nbsp;files</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;writeConvertedProcesses(migratedProcesses,&nbsp;workingDir);<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Deploy&nbsp;processes&nbsp;to&nbsp;Activiti</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;ActivitiService&nbsp;activitiService&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;serviceFactory.getActivitiService();<br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;activitiService.deployConvertedProcesses(migratedProcesses);<br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;data&nbsp;migration</span><span style="color: #008000; "><br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" /><br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">}</span></div>
</pre>
<ul>
    <li>The <strong>ProcessConversionService</strong> is an interface that contains process conversion and process definition data retrievel operations. It uses an implementation of <strong>Jbpm3Dao</strong>. The default implementation of this class uses a Hibernate <strong>SessionFactory</strong> to retrieve all the data from jBPM 3 tables.</li>
</ul>
<p>The <strong>ActivitiService</strong> offers operation needed to get the migrated data in the Activiti tables. For example, deploying the converted process definitions is such an operation
</p>
<p><strong>ProcessConversionService</strong> 是一个包含流程转换和数据检索的流程定义借口。它使用了 <strong>Jbpm3Dao</strong>.的实现。这个类的缺省实现使用了Hibernate的<strong>SessionFactory</strong>从jBPM 3的数据库表里检索所有的数据。
</p>
<p><strong>ActivitiService</strong> 提供需要从Activiti数据库表迁移数据的操作。例如，部署转换之后的流程定义就是如此的操作。
</p>
<ul>
    <li>All these dependencies, ProcessConversionService, Jbpm3Dao, Sessionfactory, ActivitiService and ProcessEngine, are interfaces and can be implemented by your own implementation. You can inject them into the ServiceFactory using regular JavaBean setters. When no such custom implementation is set, the ServiceFactory will fall back to creating the default implementation:
    </li>
    <li>所有这些依赖， ProcessConversionService, Jbpm3Dao, Sessionfactory, ActivitiService 和 ProcessEngine都是接口，并能由你自己实现。采用正常的JavaBean设置器，能将它们注入到ServiceFactory。当没有设置这些实现，ServiceFactory将后退一步，建立缺省的实现：</li>
</ul>
<pre>&nbsp;&nbsp; <span style="font-size: 13px; "><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;ProcessConversionService&nbsp;getProcessConversionService()&nbsp;{</span></span>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(processConversionService&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.processConversionService&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;createDefaultProcessConversionService();<br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;}&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;processConversionService;<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">}<br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">protected</span><span style="color: #000000; ">&nbsp;ProcessConversionService&nbsp;createDefaultProcessConversionService()&nbsp;{<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;ProcessConversionServiceImpl&nbsp;service&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ProcessConversionServiceImpl(getJbpm3Dao());<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;service;<br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">}</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </pre><img src ="http://www.blogjava.net/lewhwa/aggbug/345975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-03-08 21:40 <a href="http://www.blogjava.net/lewhwa/archive/2011/03/08/345975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti User Guide（Activiti用户指南)-Chapter 18. JBPM Migration（JBPM 迁移）（1）</title><link>http://www.blogjava.net/lewhwa/archive/2011/03/07/345911.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Mon, 07 Mar 2011 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/03/07/345911.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/345911.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/03/07/345911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/345911.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/345911.html</trackback:ping><description><![CDATA[<p><strong>Chapter 18. JBPM Migration（JBPM 迁移）</strong>  </p>
<p><strong>Table of Contents</strong>  </p>
<p>目录表  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index.html">Database migration</a>  </p>
<p>数据迁移  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_1.html">Process conversion</a>  </p>
<p>流程转换  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_2.html">Extend the migration logic</a>  </p>
<p>扩展迁移逻辑  </p>
<p>The jBPM migration is considered <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_3.html">[EXPERIMENTAL]</a>.  </p>
<p>jBPM迁移仅作<a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_4.html">[EXPERIMENTAL]</a>之用。  </p>
<p>It is possible to migrate an existing installation of jBPM version 3 to Activiti. The migration includes both process definition conversion (ie. from JPDL 3 to BPMN 2.0) and data migration.  </p>
<p>将一个已安装的jBPM 版本3迁移到Activiti是有可能的。迁移包括流程定义转换（例如从JPDL3到BPMN 2.0）和数据迁移。  </p>
<p><strong>The migration tool is currently offered as a 'preview' only!</strong> The migration coverage is at this point in time not sufficient to be usable on production process definitions and databases. Also note that the migration is a <strong>'best effort'</strong>, which means that you may need to <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_5.html">extend the migration logic</a> to cover all your use cases.  </p>
<p><strong>迁移工具目前只作为&#8216;预览&#8217;之用！</strong>当前迁移不能覆盖到产品的流程定义和数据。也要注意迁移是&#8216;最大的努力&#8217;，这意味着你可以需要&#8216;扩展迁移逻辑&#8217;来控制你所有的用例。  </p>
<p>The migration tool is separately availbale as a zip file from <a href="http://www.activiti.org/download.html">the activiti.org download site</a>. Once you have unzipped this file, you will see following files and folders:  </p>
<p>迁移工具从<a href="http://www.activiti.org/download.html">activiti.org下载站点</a>以zip文件方式分开下载。一旦加压这个文件，文件和文件夹如下所示：  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/clip_image002_2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/clip_image002_thumb.jpg" width="407" height="222" /></a>  </p>
<ul>
    <li><strong>build.xml</strong>: This ant buildfile contains the targets to execute the process definition conversion and database migration.  </li>
    <li><strong>build.xml</strong>: 这个ant构建文件包含了执行流程定义转换和数据库迁移的目标。  </li>
    <li><strong>activiti.db.properties and jbpm3.db.properties</strong>: these properties files contain the database connection parameters for the jBPM 3 and Activiti database. These properties files must be changed when executing a <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_6.html">database migration</a>.  </li>
    <li><strong>activiti.db.properties and jbpm3.db.properties</strong>:这个特性文件包含了jBPM和Activiti数据库的数据库连接参数。当执行数据库迁移时，必须改变这些特性文件。  </li>
    <li><strong>processes</strong>: when running a <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_7.html">process definition conversion</a>, the jBPM 3 process definition files must be placed in this folder.  </li>
    <li><strong>processes</strong>:当运行<a href="file:///G:/index.html#processConversion">流程定义转换</a>时，jBPM3流程定义文件必须放置到这个文件夹。  </li>
    <li><strong>src</strong>: this folder contains the source code of the migration tool. Read the <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_8.html">extension</a> section if you want to tailor or extend the migration code to your needs.  </li>
    <li><strong>src</strong>:这个文件包含迁移工具的源代码。如果希望裁剪或者扩展迁移代码满足你自己的需求，请阅读<a href="file:///G:/index.html#extendMigration">扩展</a>部分。  </li>
    <li><strong>lib</strong>: this folder contains all jars required to execute the migration logic.  </li>
    <li><strong>lib</strong>:这个文件夹包含执行迁移逻辑的全部jar包。</li>
</ul>
<p><a name="databaseMigration"></a><strong>Database migration</strong>  </p>
<p><strong>数据库迁移</strong><strong></strong>  </p>
<p>It is possible to migrate the data in the jBPM 3 database tables to the Activiti database schema. To do this, following properties files must be changed to point at the right database:  </p>
<p>将jBPM3数据库表迁移到Activiti数据库schema是有可能的。为了完成这个任务，必须改变下面的properties文件，指向正确的数据库：  </p>
<ul>
    <li><strong>jbpm3.db.properties</strong>: contains the parameters to connect to the jBPM 3 database. Also the Hibernate dialect must be provided.  </li>
    <li><strong>jbpm3.db.properties</strong>:包含了连接jBPM3数据库的参数。也必须提供Hibernate方言。  </li>
    <li><strong>activiti.db.properties</strong>: contains the parameters to connect to database to which the migrated data will be written. This can be the same database schema as the jBPM schema (ie. there are no name-clashes between jBPM and Activiti tables, indexes, foreign keyes, etc).  </li>
    <li><strong>activiti.db.properties</strong>: 包含了迁移将要写入数据库的连接参数。这个可能是和jBPM相同数据库schema（例如，在jBPM和Activiti数据库表名，索引名，外键名等等没有冲突）.</li>
</ul>
<p>The database migration will use the data in the jBPM 3 tables to:  </p>
<p>数据迁移将使用jBPM3数据库表的数据来做：  </p>
<ul>
    <li>Convert the process definition to the BPMN 2.0 counterpart. This means that the converted process definition will be deployed to the Activiti tables as part of the migration. As a side-effect, it will also produce the BPMN 2.0 XML files, similar to what happens when executing the<a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_9.html">process conversion</a>.  </li>
    <li>转换流程定义为BPMN 2.0对应物。这意味着转换之后的流程定义将作为迁移的一部分被部署到Activiti的数据库表。作为副作用，它也产生BPMN 2.0 XML文件，这和当执行流程转换时所发生的事相似。  </li>
    <li>Migrate runtime and history data of the processes to the Activiti tables. <strong>In this release, this is not yet implemented!</strong>  </li>
    <li>迁移流程的运行时和历史数据到Activiti数据库表。<strong>本次发布，这没有实现！</strong></li>
</ul>
<p>The data is retrieved from the jBPM 3 tables using Hibernate queries and the Hibernate mappings of jBPM itself.  </p>
<p>使用Hibernate查询和jBPM自身的Hibernate映  </p>
<p>射，可以从jBPM 3数据库表里检索到这些数据。  </p>
<p><a name="processConversion"></a><strong>Process conversion</strong>  </p>
<p><strong>流程转换</strong><strong></strong>  </p>
<p>It is possible to only convert the process definitions xml from JPDL to BPMN 2.0 that can be executed on the Activiti engine. To do this, place the jBPM 3 processes inside the processes folder. There can be any number of (nested) subfolders, the tool will scan every (sub)folder inside processes to discover processdefinition.xml files (file name must be processdefinition.xml!).  </p>
<p>只将JPDL的流程定义xml转换为能在Activiti引擎执行的BPMN 2.0是有可能的。为了完成这个任务，请将jBPM 3放置到process 文件夹。可以有任何数量（内置）子文件夹，工具将扫描process每个（子）文件夹，来发现processdefinition.xml文件（文件名必须是processfinition.xml!）。  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.processes.location_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="migration.processes.location" border="0" alt="migration.processes.location" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.processes.location_thumb.png" width="593" height="154" /></a>  </p>
<p>The discovered processes will be parsed and deployed to an in-memory databse, such that the logic of reverse engineering the process definition from the jBPM deployment tables contained in <a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/index_10.html">the database migration</a> is used for both cases.  </p>
<p>被发现的流程将被解析并部署到一个内存数据库，以便对包含在数据库迁移的jBPM部署数据库表的流程定义进行反向工程，以为解析和部署之用。  </p>
<p>Once the jBPM 3 processes are placed in the processes folder, execute the convert.processes target in the root of the unzipped migration tool folder:  </p>
<p>一旦jBPM 3流程被放置到process文件夹，那么执行在解压之后的迁移工具文件夹根目录下的convert.processes目标。  </p>
<p>ant convert.processes  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.ant.convert.processes_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="migration.ant.convert.processes" border="0" alt="migration.ant.convert.processes" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.ant.convert.processes_thumb.png" width="469" height="66" /></a>  </p>
<p>During conversion, you will see plenty logging passing by describing where and how the process conversion is being executed. At the end of the conversion, you will see following logging appear:  </p>
<p>在转换过程中，通过描述流程转换执行是何地和何时转换的方式，可以观察到大量的日志。在转换的末尾，将观察到下列日志出现：  </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.process.conversion.completed_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="migration.process.conversion.completed" border="0" alt="migration.process.conversion.completed" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/4fd8a2bbdc9e_131C8/migration.process.conversion.completed_thumb.png" width="700" height="136" /></a>  </p>
<p>As shown in the logging, the resulting BPMN 2.0 processes can be find in the converted-process-xxxx folder, where the xxxx is the timestamp of the conversion.  </p>
<p>正如日志所示，BPMN 2.0流程的结果可以在converted-process-xxxx文件夹里找到，这里xxxx是转换的时间戳。  </p>
<p>In this release, only limited support for start, end, wait state and task-nodes is implemented. In the future, this coverage will expand.  </p>
<p>在本次发布里，只实现了对开始，结束，等待和任务节点的有限支持。在将来，这个覆盖范围将要扩充。
</p><img src ="http://www.blogjava.net/lewhwa/aggbug/345911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-03-07 23:23 <a href="http://www.blogjava.net/lewhwa/archive/2011/03/07/345911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]架构师的素质</title><link>http://www.blogjava.net/lewhwa/archive/2011/03/07/345910.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Mon, 07 Mar 2011 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/03/07/345910.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/345910.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/03/07/345910.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/345910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/345910.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 架构师的基本素质&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/03/07/345910.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/345910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-03-07 23:18 <a href="http://www.blogjava.net/lewhwa/archive/2011/03/07/345910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Grails 1.3.7 Release Notes</title><link>http://www.blogjava.net/lewhwa/archive/2011/02/18/344589.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Thu, 17 Feb 2011 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/02/18/344589.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/344589.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/02/18/344589.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/344589.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/344589.html</trackback:ping><description><![CDATA[<h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; color: #48802c; font-weight: normal; font-size: 1.4em; font-family: 'Lucida Grande', Lucida, sans-serif; ">Grails 1.3.7 Release Notes</h1>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">Grails is a dynamic web application framework built on Java and Groovy, leveraging best of breed APIs from the Java EE sphere including Spring, Hibernate and SiteMesh. Grails brings to Java and Groovy developers the joys of convention-based rapid development while allowing them to leverage their existing knowledge and capitalize on the proven and performant APIs Java developers have been using for years.</p>
<ul class="star" style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">
    <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; ">Changelog:&nbsp;<a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11063&amp;version=17032" class="pageLink" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; ">See JIRA</a></li>
    <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; ">Download:&nbsp;<a href="http://grails.org/Download" class="pageLink" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; ">http://grails.org/Download</a>&nbsp;.</li>
    <li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; ">Documentation:&nbsp;<a href="http://grails.org/doc/1.3.x" class="pageLink" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; ">http://grails.org/doc/1.3.x</a></li>
</ul>
<span style="font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; "><a name="New Features &amp; Improvements" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "></a></span>
<h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; color: black; font-weight: normal; font-size: 1.2em; font-family: 'Lucida Grande', Lucida, sans-serif; ">New Features &amp; Improvements</h2>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; "><a name="Updated Groovy" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "></a></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; color: black; font-weight: normal; font-size: 1em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #48802c; font-family: 'Lucida Grande', Lucida, sans-serif; ">Updated Groovy</h4>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">Grails 1.3.7 now bundles Groovy 1.7.8.</p>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; "><a name="Masking Request Parameters From Stacktrace Logs" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #48802c; border: inherit; text-decoration: none; width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "></a></p>
<h4 style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; color: black; font-weight: normal; font-size: 1em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #48802c; font-family: 'Lucida Grande', Lucida, sans-serif; ">Masking Request Parameters From Stacktrace Logs</h4>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">When Grails logs a stacktrace, the log message may include the names and values of all of the request parameters for the current request. To mask out the values of secure request parameters, specify the parameter names in the&nbsp;<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grails.exceptionresolver.params.exclude</code>config property:</p>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; "></p>
<div class="code" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; background-color: #f7f8f2; border-left-color: white; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; width: 594px; overflow-x: auto; overflow-y: auto; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grails.exceptionresolver.params.exclude = ['password', 'creditCard']</pre>
</div>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">Request parameter logging may be turned off altogether by setting the<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grails.exceptionresolver.logRequestParameters</code>&nbsp;config property to&nbsp;<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">false</code>&nbsp;. The default value is&nbsp;<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">true</code>&nbsp;when the application is running in DEVELOPMENT mode and&nbsp;<code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">false</code>&nbsp;for all other modes.</p>
<p class="paragraph" style="margin-top: 10px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; font-weight: normal; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; "></p>
<div class="code" style="margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; background-color: #f7f8f2; border-left-color: white; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; width: 594px; overflow-x: auto; overflow-y: auto; font-family: 'Lucida Grande', Lucida, sans-serif; font-size: 15px; ">
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">grails.exceptionresolver.logRequestParameters = <span class="java-keyword" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-weight: bold; color: #00008b; ">false</span></pre>
</div><img src ="http://www.blogjava.net/lewhwa/aggbug/344589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-02-18 00:00 <a href="http://www.blogjava.net/lewhwa/archive/2011/02/18/344589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti User Guide（Activiti用户指南)-Chapter 17. Activiti KickStart</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/10/342729.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Mon, 10 Jan 2011 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/10/342729.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342729.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/10/342729.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342729.html</trackback:ping><description><![CDATA[<p><strong>Chapter 17. Activiti KickStart</strong> </p>
<p><strong>Table of Contents</strong> </p>
<p><a href="http://activiti.org/userguide/index.html#N11DFE">Overview</a>（概述） </p>
<p><a href="http://activiti.org/userguide/index.html#N11E52">Changing the database</a>（变更数据库） </p>
<p><a name="N11DFE"></a><strong>Overview</strong><strong>（概述）</strong><strong></strong> </p>
<p>Activiti KickStart is a webbased tool to quickly create 'adhoc' business processes using a subset of constructs available to the Activiti engine. KickStart provides a simple UI that doesn't require to learn BPMN or any modeling environment, as it works with concepts that are familiar to every business user. However, the processes that are created using KickStart, are fully BPMN 2.0 compliant and can be used as a starting point for more complex BPM endeavours. </p>
<p>Activiti KickStart的是一个基于Web的工具，用Activiti引擎可用的构件（constructs）的子集提供给快速创建&#8220;即席（adhoc）&#8221;的业务流程。Kickstart提供了不必学习BPMN或者任何建模环境的简单UI，因为它树立了每个业务用户都熟悉的概念。但是，通过KickStart创建的的流程，是和BPMN 2.0兼容，并可作为更为复杂BPM努力的起点。 </p>
<p>KickStart integrates perfectly with the Activiti engine. As such, processes created with KickStart are immediataly usable in Activiti Explorer and are visible in Probe. </p>
<p>KickStart能和Activiti引擎完美集成。因此，采用KickStart创建的流程在Activiti Explorer立即可用，并在Probe里面可见。 </p>
<p>KickStart serves many business cases, but the following three are probably the most common: </p>
<p>KickStart服务许多商业案例，但以下三个可能是最常见： </p>
<ul>
    <li><strong>Simple business processes: </strong>some processes are just simple by nature, and every company has them. Think about an expense process, a holiday leave process, a hiring process, etc... These kind of processes are probably already being done using paper or e-mail. KickStart allows to model these processes quickly and change them whenever it is needed. As such, KickStart really lowers the threshold to automate these business processes. </li>
    <li><strong>简单的业务流程</strong>：一些流程天然简单，并且每个公司都有。考虑到付费流程，请假流程，雇佣流程，等等&#8230;这些流程用书面或者e-mail的方式已经完成。Kickstart运行快速对这些流程建模，每当需要时改变它们。因此，Kickstart真正地降低了门槛，并让这些业务流程自动化。 </li>
    <li><strong>Prototyping: </strong>before diving into complex BPMN 2.0 modeling and thinking about the corner cases of the process, it is often wise to get all people involved aligned and work out a prototype that shows the vision of what needs to be done. KickStart allows to do exatcly that: create a business process prototype on the fly, to get your ideas visible for everyone. </li>
    <li><strong>原型</strong>：在钻研复杂的BPMN 2.0建模和考虑流程的偏例之前，它往往是明智的，让所有参与的人平等，制定一个原型来展示所要完成的愿景。KickStart的允许恰恰如此：创建一个业务流程的原型，让大家看到你的想法。 </li>
    <li><strong>Adhoc work: </strong>in some cases, coordination is required between different people or groups in a company. You know how it normally goes: sending an email here, doing a telephone there ... which often ends up in a tar pit of nobody knowing what or when something needs to be done. However, a business process management platform such as Activiti is an excellent way of distributing and follow-up everything, as it is intended to track exactly such things. KickStart allows you to create processes for adhoc work in a matter of minutes, and distribute and coordinate tasks between people easily. </li>
    <li><strong>即席工作</strong>：在一些情况，在一个公司里，不同的人员或组之间的协作是必要的。您知道正常时如何运作的：在这里发送邮件，在那里打电话&#8230;这经常终止于没有人知道需要完成什么或者何时完成这样的焦油坑。但是，诸如Activiti这样的业务流程管理平台是解决分发和后续事情的卓越解决之道，因为它的目的是准确跟踪这些事情。Kickstart允许您在数分钟之内创建即席工作的流程，并在人们之间分发和协调任务。</li>
</ul>
<p>Following screenshots show the capabilities of Activiti KickStart. Take for example the next picture. It shows how an expense process is created in a matter of a few minutes. </p>
<p>下列屏幕截图展示了Activiti KickStart的能力。下图作为示例。它展示如何在几分钟之内创建一个付费流程。 </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image002_2.gif"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image002_thumb.gif" width="926" height="435" /></a> </p>
<p>After clicking the save button, the process is immediately usable in Activiti Explorer: </p>
<p>在点击&#8220;保存&#8221;按钮之后，这个流程立即在Activiti Explorer可用。 </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image004_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image004_thumb.jpg" width="636" height="178" /></a> </p>
<p>KickStart also allows to define forms for every task: </p>
<p>KickStart也允许为每个任务定义表单： </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image006_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image006_thumb.jpg" width="650" height="332" /></a> </p>
<p>Which are obviously directly usable in Activiti Explorer: </p>
<p>这些明显直接在Activiti Explorer可用： </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image008_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image008_thumb.jpg" width="647" height="300" /></a> </p>
<p>At any time during process creation, it is possible to view the corresponding BPMN 2.0 diagram of the business process: </p>
<p>在流程建立的任意时间，它可以查看相应的BPMN2.0业务流程图。 </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image010_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image010_thumb.jpg" width="982" height="423" /></a> </p>
<p>Whenever it is required, the processes defined with KickStart can be opened up and modified: </p>
<p>每当它是必需，与KickStart的定义的流程可被打开和修改： </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image012_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image012_thumb.jpg" width="924" height="233" /></a> </p>
<p>Processes created with KickStart are fully compliant with the BPMN 2.0 XML, which means that the process can be imported into any BPMN 2.0 editor: </p>
<p>用KickStart的创建的流程是完全符合BPMN2.0的XML，这意味着该流程可以由任何兼容的BPMN2.0编辑器输入： </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image014_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://www.blogjava.net/images/blogjava_net/lewhwa/Windows-Live-Writer/Activiti-User-GuideActivit.-Introduction_1258B/clip_image014_thumb.jpg" width="923" height="438" /></a> </p>
<p><a name="N11E52" style="width: 20px; height: 20px; text-indent: 20px; background-image: url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif); background-repeat: no-repeat no-repeat; "></a><strong>Changing the database</strong><strong>（变更数据库）</strong><strong></strong> </p>
<p>Activiti KickStart is currently not yet using the REST API, but uses the service API by including the Activiti engine as a library. While Explorer, Probe and Cycle use the same mechanism for changing the database (see <a href="http://activiti.org/userguide/index.html#changingTheDatabase">here</a>), the same does not yet apply for KickStart. </p>
<p>Activiti KickStart当前还没有使用REST API，而是通过包括了Activiti引擎作为类库使用服务API。虽然Explorer，Probe和Cycle使用相同的机制改变数据（参见<a href="http://activiti.org/userguide/index.html#changingTheDatabase">这里</a>），但这不适于KickStart。 </p>
<p>To change the database that KickStart uses in the demo setup, generate a new activiti.cfg.jar, and place it in the apps/apache-tomcat-6.x/webapps/activiti-kickstart/WEB-INF/lib folder. </p>
<p>为了改变演示安装里KickStart使用的数据库，产生一个新的activiti.cfg.jar,并将它放置到apps/apache-tomcat-6.x/webapps/activiti-kickstart/WEB-INF/lib文件夹。
</p><img src ="http://www.blogjava.net/lewhwa/aggbug/342729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-10 20:58 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/10/342729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti in Action（实战Activiti）-第一章 BPMN 2.0: what&amp;rsquo;s in it for developers?（11）</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/08/342571.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Sat, 08 Jan 2011 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/08/342571.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342571.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/08/342571.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342571.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  随着符合BPMN 2.0标准的BPMS流程引擎Activiti 5.0正式版推出，由Tijs Rademakers 和 Ron Van Liempd编写的‘实战Activiti’书籍昨天在“Manning Early Access Program”现身。目前第一章释出，可以先睹为快。呵呵，真棒！本篇是第一章之（11）&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/01/08/342571.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/342571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-08 11:49 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/08/342571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti in Action（实战Activiti）-第一章 BPMN 2.0: what&amp;rsquo;s in it for developers?（10）</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/06/342454.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Thu, 06 Jan 2011 13:26:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/06/342454.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342454.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/06/342454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342454.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  随着符合BPMN 2.0标准的BPMS流程引擎Activiti 5.0正式版推出，由Tijs Rademakers 和 Ron Van Liempd编写的‘实战Activiti’书籍昨天在“Manning Early Access Program”现身。目前第一章释出，可以先睹为快。呵呵，真棒！本篇是第一章之（10）&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/01/06/342454.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/342454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-06 21:26 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/06/342454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti in Action（实战Activiti）-第一章 BPMN 2.0: what&amp;rsquo;s in it for developers?（9）</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/05/342376.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Wed, 05 Jan 2011 13:01:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/05/342376.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342376.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/05/342376.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342376.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  随着符合BPMN 2.0标准的BPMS流程引擎Activiti 5.0正式版推出，由Tijs Rademakers 和 Ron Van Liempd编写的‘实战Activiti’书籍昨天在“Manning Early Access Program”现身。目前第一章释出，可以先睹为快。呵呵，真棒！本篇是第一章之（9）&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/01/05/342376.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/342376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-05 21:01 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/05/342376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti in Action（实战Activiti）-第一章 BPMN 2.0: what&amp;rsquo;s in it for developers?（8）</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/04/342322.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Tue, 04 Jan 2011 15:12:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/04/342322.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342322.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/04/342322.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342322.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  随着符合BPMN 2.0标准的BPMS流程引擎Activiti 5.0正式版推出，由Tijs Rademakers 和 Ron Van Liempd编写的‘实战Activiti’书籍昨天在“Manning Early Access Program”现身。目前第一章释出，可以先睹为快。呵呵，真棒！本篇是第一章之（8）&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/01/04/342322.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/342322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-04 23:12 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/04/342322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activiti in Action（实战Activiti）-第一章 BPMN 2.0: what&amp;rsquo;s in it for developers?（7）</title><link>http://www.blogjava.net/lewhwa/archive/2011/01/04/342304.html</link><dc:creator>网路冷眼@BlogJava</dc:creator><author>网路冷眼@BlogJava</author><pubDate>Tue, 04 Jan 2011 12:43:00 GMT</pubDate><guid>http://www.blogjava.net/lewhwa/archive/2011/01/04/342304.html</guid><wfw:comment>http://www.blogjava.net/lewhwa/comments/342304.html</wfw:comment><comments>http://www.blogjava.net/lewhwa/archive/2011/01/04/342304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lewhwa/comments/commentRss/342304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lewhwa/services/trackbacks/342304.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  随着符合BPMN 2.0标准的BPMS流程引擎Activiti 5.0正式版推出，由Tijs Rademakers 和 Ron Van Liempd编写的‘实战Activiti’书籍昨天在“Manning Early Access Program”现身。目前第一章释出，可以先睹为快。呵呵，真棒！本篇是第一章之（7）&nbsp;&nbsp;<a href='http://www.blogjava.net/lewhwa/archive/2011/01/04/342304.html'>阅读全文</a><img src ="http://www.blogjava.net/lewhwa/aggbug/342304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lewhwa/" target="_blank">网路冷眼@BlogJava</a> 2011-01-04 20:43 <a href="http://www.blogjava.net/lewhwa/archive/2011/01/04/342304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>