??xml version="1.0" encoding="utf-8" standalone="yes"?>日本一区免费,国产精品一卡,国产精品日韩欧美一区二区http://www2.blogjava.net/chengang/category/12967.html    逝者如斯乎不舍昼夜zh-cnWed, 28 Feb 2007 04:12:31 GMTWed, 28 Feb 2007 04:12:31 GMT60jBPM开发入门指?5) http://www.aygfsteel.com/chengang/archive/2006/09/16/70069.html陈刚陈刚Sat, 16 Sep 2006 11:09:00 GMThttp://www.aygfsteel.com/chengang/archive/2006/09/16/70069.htmlhttp://www.aygfsteel.com/chengang/comments/70069.htmlhttp://www.aygfsteel.com/chengang/archive/2006/09/16/70069.html#Feedback7http://www.aygfsteel.com/chengang/comments/commentRss/70069.htmlhttp://www.aygfsteel.com/chengang/services/trackbacks/70069.html
几个重点Q?br />(1) jBPM没有角色的概?!! 很多人把ActorID理解成角Ԍ那是相当错误的。jBPM只有参与者的概念Q也是ActorIDQ它可以是用户IDQ也可以是角色IDQ也可以什么都不是。你要自己去把用戯色等东东和ActorID映射h。不q一般我们把ActorID讄成角Ԍ但jbpm websale却是讄成用L?br />(2)用户信息的入口是JbpmContextQ里面有一个setActorIDҎ。你用户d时候,把一些用户信息setq去?br />(3)泳道概念Q你ȝ看UML中的带泳道的zd图,那就是象一个游x里的泳道一栗?br />

安装提示Q?br /> <classpathentry kind="con" path="JBPM/jBPM 3.1.2"/>
.classpath的这一句很可能和你电脑的设|不W,q是jbpm插g的一个设|,指向jbpm的HOME目录Q以便找到jbpm的jar包。你按照你电脑上的设|相应修改一下这一行?br />

websale的eclipse目ZIP包:http://www.aygfsteel.com/Files/chengang/chen-jbpm_websale.zip

陈刚 2006-09-16 19:09 发表评论
]]>
jBPM开发入门指?4) http://www.aygfsteel.com/chengang/archive/2006/08/24/65608.html陈刚陈刚Thu, 24 Aug 2006 10:15:00 GMThttp://www.aygfsteel.com/chengang/archive/2006/08/24/65608.htmlhttp://www.aygfsteel.com/chengang/comments/65608.htmlhttp://www.aygfsteel.com/chengang/archive/2006/08/24/65608.html#Feedback25http://www.aygfsteel.com/chengang/comments/commentRss/65608.htmlhttp://www.aygfsteel.com/chengang/services/trackbacks/65608.html 7   jBPM 的客L开?/span>

有了前面?/span> HelloWorld 后台程Q我们就要开始客LE序了。正如前面提到的Q本文不?/span> JSP Q而改采用 JUnit 的Ş式,输出则用 System.out.println 。D一反三Q知道在Ҏ中输入及?/span> println 输出Q在 JSP ?/span> SWING {?/span> GUI 界面q不是一样嘛?/span>

 

q个 JUnit 客户端,我们借用创徏目时自动生成的 SimpleProcessTest.java 了,改写后如下:

package com.sample;

 

import junit.framework.TestCase;

 

import org.jbpm.JbpmConfiguration;

import org.jbpm.JbpmContext;

import org.jbpm.context.exe.ContextInstance;

import org.jbpm.graph.def.ProcessDefinition;

import org.jbpm.graph.exe.ProcessInstance;

 

public class SimpleProcessTest extends TestCase {

 

    private JbpmConfiguration config = JbpmConfiguration.getInstance();

    private JbpmContext ctx = config.createJbpmContext();

    // helloworld 对应?/span> jbpm_processdefinition 表的 name 字段|也即 processdefinition.xml ?/span> name

    // q个值得取比较耗时Q实际项目里最好和“数据库?/span> JDBC q接”一P让它׃nQ不要频J打开关闭?/span>

    private ProcessDefinition processDefinition = ctx.getGraphSession().findLatestProcessDefinition("helloworld");

 

    public void testNewRequest() {

        long id = newRequest();

        System.out.println("id=" + id);

        checkNewRequest(id);

        confirmRequest(id);

        checkconfirmRequest(id);

        ctx.close();// 关闭 jbpm 容器

    }

 

    /**

      * 创徏一个请假单

      *

      * @return

      */

    private long newRequest() {

        // 创徏一个新程

        ProcessInstance pi = processDefinition.createProcessInstance();

        // 取得程的数据环?/span>

        ContextInstance ci = pi.getContextInstance();

        // 创徏一张请假单

        ci.setVariable("name", " 陈刚 www.chengang.com.cn" );

        ci.setVariable("day", 2);

        assertEquals(null, ci.getVariable("note"));

        // 请假甌l束Q{C一个流E结?/span>

        pi.signal();

        return pi.getId();

    }

 

    /**

      * 查请假单的数?/span>

      *

      * @param id

      */

    private void checkNewRequest(long id) {

        // 从数据库提取原流E?/span>

        ProcessInstance pi = ctx.loadProcessInstance(id);

        // 取得程的数据环?/span>

        ContextInstance ci = pi.getContextInstance();

        // 创徏一张请假单

        assertEquals(" 陈刚 www.chengang.com.cn" , ci.getVariable("name"));

        assertEquals(Integer.valueOf(2), ci.getVariable("day"));

        assertEquals(" 我要请假 " , ci.getVariable("note"));

 

        // 当前是结点ؓ confirm

        assertEquals(pi.getRootToken().getNode().getName(), "confirm");

        // 程q没l束

        assertFalse(pi.hasEnded());

    }

 

    /**

      * 审批陈刚的请假申?/font>

      *

      * @param id

      */

    private void confirmRequest(long id) {

        ProcessInstance pi = ctx.loadProcessInstance(id);

        ContextInstance ci = pi.getContextInstance();

        // 不通过

        ci.setVariable("note", " 不准请假Ql加?/span> " );

        // 审批l束Q到下一个流E结?/span>

        pi.signal();

    }

 

    private void checkConfirmRequest(long id) {

        ProcessInstance pi = ctx.loadProcessInstance(id);

        ContextInstance ci = pi.getContextInstance();

        // ConfirmAction cd signal 后执行,所以覆盖了l理的审Ҏ?/span>

        assertEquals(" 准假 " , ci.getVariable("note"));

 

        // 当前是结点ؓ end

        assertEquals(pi.getRootToken().getNode().getName(), "end");

        // 程l束?/span>

        assertTrue(pi.hasEnded());

    }

 

}

 

q个例子q是很简单,而且关键是缺用戗组、权限等工作系l必ȝ东西Q不q没关系。下面的内容我将完成一个更完整的实例?/span>

陈刚 2006-08-24 18:15 发表评论
]]>
jBPM开发入门指?3) http://www.aygfsteel.com/chengang/archive/2006/08/23/65346.html陈刚陈刚Wed, 23 Aug 2006 11:26:00 GMThttp://www.aygfsteel.com/chengang/archive/2006/08/23/65346.htmlhttp://www.aygfsteel.com/chengang/comments/65346.htmlhttp://www.aygfsteel.com/chengang/archive/2006/08/23/65346.html#Feedback9http://www.aygfsteel.com/chengang/comments/commentRss/65346.htmlhttp://www.aygfsteel.com/chengang/services/trackbacks/65346.html阅读全文

陈刚 2006-08-23 19:26 发表评论
]]>
jBPM开发入门指?2) http://www.aygfsteel.com/chengang/archive/2006/08/22/65132.html陈刚陈刚Tue, 22 Aug 2006 10:44:00 GMThttp://www.aygfsteel.com/chengang/archive/2006/08/22/65132.htmlhttp://www.aygfsteel.com/chengang/comments/65132.htmlhttp://www.aygfsteel.com/chengang/archive/2006/08/22/65132.html#Feedback3http://www.aygfsteel.com/chengang/comments/commentRss/65132.htmlhttp://www.aygfsteel.com/chengang/services/trackbacks/65132.html 4 数据库初始化

jBPM 需要数据库支持Q?/span> jBPM 会把自己的一个初始化数据存储到数据库Q同时工作流的数据也是存储到数据库中的?/span> jBPM 使用 Hibernate 来做q存储层,因此只要?/span> Hibernate 支持的数据库Q?/span> jBPM 也就支持?/span>

 

本文先以 MySQL ZQ然后再?/span> Oracle ZQ来谈谈 jBPM 的数据库初始化操作?/span>

 

注:在上面的 JBoss 自带的示例中Qƈ没有讄数据库,那是因ؓ jBPM 默认使用的是内存数据?/span> hsqldb ?/span>

4.1  MySQL

 

1 、首先安?/span> MySQL ?/span>

MySQL 的安装比较简单,|上也有很多文章Q本文不再赘q。本指南所?/span> MySQL 版本?/span> MySQL 4.1 Q?/span> for windows Q。再找一?/span> MySQL 客户端,目的是方便查看数据库中的数据Q本文推荐?/span> MySQL |站上免Ҏ供的?/span> MySQL Query Brower ”,当然你用其他的客L也行Q比?/span> MySQL-Front ?/span>

 

2 、徏?/span>

MySQL 中创Z个库Q库名: jbpm

 

3 、生成徏表的 SQL 语句q徏?/span>

?/span> jbpm-starters-kit-3.1.1 下的子目?/span> jbpm 改名?/span> jbpm.3 Q否则在执行下面?/span> ant 命o时会报如 jbpm.3 目录不存在的错误Q?/span>

D:\jbpm-starters-kit-3.1.1\jbpm-db\build.xml:361: The following error occurred while executing this line:

D:\jbpm-starters-kit-3.1.1\jbpm-db\build.xml:68: Basedir D:\jbpm-starters-kit-3.1.1\jbpm.3 does not exist

 

?/span> DOS H下Q进?/span> D:\jbpm-starters-kit-3.1.1\jbpm-db 目录Q执行如下命令:

ant mysql.scripts

 

执行成功后,?/span> D:\jbpm-starters-kit-3.1.1\jbpm-db\build\mysql\scripts 目录里生成了四个 sql 文gQ它们做什么用的一看名字就知道了。在 MySQL 客户端中执行?/span> mysql.create.sql ”脚本,q样在 jbpm 库中创徏一个个的数据表?/span>

 

 

4.2  Oracle

先安装好 Oracle 服务器。我们公司有现存?/span> Oracle 服务器,也提供给了我一个属于我自己的用户名Q一d可以Q意在我的库之下创了。所以这一步就省了Q没有的自个先装好吧?/span>

讉K Oracle 推荐用?/span> PLSQL Developer ”。不q要q接 Oracle q要在本Z装上 Oracle 自己的客LE序Q里面提供了 JDBC 包和一些配|。要q接服务器还得配|一下,我一般都是不?/span> GUI 而直接改 tnsnames.ora 文gQ在我的电脑里此文g的目录地址是: D:\oracle\ora92\network\ADMIN\tnsnames.ora Q内容如?/span> ( 两面有两个配|了 ) Q?/span>

# TNSNAMES.ORA Network Configuration File: E:\oracle\ora92\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

 

WXXRDB_192.168.3.2 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = wxxrDB)

      (SERVER = DEDICATED)

    )

  )

 

WXXRDB_192.168.4.2 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = wxxrDB)

      (SERVER = DEDICATED)

    )

  )

 

前面都是 Oracle 的一些知识,不会?/span> Google 一下吧。最后配|好后,?/span> PLSQL Developer 输入你的用户名和密码联接?/span> Oracle Q就?/span> OK 了?/span>

 

参考上?/span> MySQL 的步骤,基本一P

Q?Q?span style="FONT: 7pt 'Times New Roman'">       ?/span> jbpm 改名?/span> jbpm.3

Q?Q?span style="FONT: 7pt 'Times New Roman'">       再执?/span> ant oracle.scripts

Q?Q?span style="FONT: 7pt 'Times New Roman'">       ?/span> jbpm-db\build\oracle\scripts 目录?/span> oracle.create.sql 脚本Q在 Oracle 中生?/span> jBPM 的所有表。在?/span> PLSQL Developer ”中可以新徏一?/span> Command Windows H口然后输入命oQ?/span> @D:\jbpm-starters-kit-3.1.1\jbpm-db\build\oracle\scripts\oracle.create.sql

 

作者简?br />陈刚Q广西桂林hQ著作有《Eclipse从入门到_N?br />您可以通过其博客了解更多信息和文章Q?/font>http://www.ChenGang.com.cn



陈刚 2006-08-22 18:44 发表评论
]]>
jBPM开发入门指?1)http://www.aygfsteel.com/chengang/archive/2006/07/13/57986.html陈刚陈刚Thu, 13 Jul 2006 07:03:00 GMThttp://www.aygfsteel.com/chengang/archive/2006/07/13/57986.htmlhttp://www.aygfsteel.com/chengang/comments/57986.htmlhttp://www.aygfsteel.com/chengang/archive/2006/07/13/57986.html#Feedback10http://www.aygfsteel.com/chengang/comments/commentRss/57986.htmlhttp://www.aygfsteel.com/chengang/services/trackbacks/57986.html

工作虽然还在不成熟的发展阶D,甚至q没有一个公认的规范标准。但其应用却已经在快速展开Q这说明市场对工作流框架的需求是急迫而巨大的?/span>

我们公司的后台短信管理系l涉及短信编发、领导层层审核等操作Q这是一个比较典型的工作系l。过L们用的工作流引擎?/span> shark Q然后在使用后发现其q于庞大Q后台数据库操作频繁而未q行优化Q直接导致的后果是前台操作~慢。于是经研究军_Q将工作引擎由 shark 换成 jBPM ?/span>

jBPM 之前是一个开源YӞ后加?/span> JBoss l织。正好我们公怹是用 JBoss 的。不q?/span> jBPM q没有绑定在 JBOSS 上, Tomcat {也可以使用它?/span>

jBPM 的正处在不断发展中,做ؓ开源Y件的特点Q其设计变化往往很大。所以一些过ȝ资料可能已经不适用了。于是作者根据自q使用l验Q重新整理出q䆾文档Q以备学习参考?/span>

注:本文使用?/span> jBPM 版本?/span> 3.1.1

环境准备

1、安?span lang="EN-US">JDK

所?/span> JAVA 开发第一个需要安装的Q没什么好说的。记得把pȝ变量 JAVA_HOME 设上?/span>

2、安?span lang="EN-US">Ant

Ant 是?/span> jBPM 必须的一个工兗?/span> jBPM 中的很多操作都要用到 Ant ?/span>

安装ҎQ?/span>

Q?/span> 1 Q先下蝲Q?/span> http://archive.apache.org/dist/ant/binaries/ Q选一个如Q?/span> apache-ant-1.6.5-bin.zip ?/span>

Q?/span> 2 Q解压到 D:\ant Q当然其他目录也可以Q?/span>

Q?/span> 3 Q设|如下系l变量: ANT_HOME=d:\ant ?/span>

Q?/span> 4 Q把 %ANT_HOME%\bin 加入到系l变?/span> PATH 中?/span>

3、安?span lang="EN-US">Eclipse

Eclipse 不是开?/span> jBPM 必须的工P但它是对 jBPM 开发很有帮助的工具Q特别是 jBPM 提供了一?/span> Eclipse 插g用来辅助开?/span> jBPM 。关?/span> Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2

 

安装 jBPM

jBPM 的下载地址Q?/span> http://www.jboss.com/products/jbpm/downloads  

l           JBoss jBPM ?/span> jBPM 的Y件包

l           JBoss jBPM Starters Kit  是一个综合包Q它包括?/span> jBPM 软g包、开发插件、一个配|好了的Z JBoss ?/span> jBPM CZ、一些数据库配置文gCZ?/span>

l           JBoss jBPM Process Designer Plugin  是辅助开?/span> jBPM ?/span> Eclipse 插g?/span>

l           JBoss jBPM BPEL Extension jBPM 关于 BPEL 的扩展包

本指南选择下蝲Q?/span> JBoss jBPM Starters Kit 。下载后解压?/span> D:\jbpm-starters-kit-3.1 Q目录下含有五个子目录:

l           jbpm   jBPM 的Y件包

l           jbpm-bpel 只含有一个网?/span>

l           jbpm-db 各种数据?/span> hibernate 配置文gCZQ有些还包含了相应的 jdbc 驱动E序?/span>

l           jbpm-designer  辅助开?/span> jBPM ?/span> Eclipse 插gQ具体在 jbpm-gpd-feature 子目录中

l           jbpm-server  一个已l配|好了的Z JBoss ?/span> jBPM CZ .

 

感觉下工作流

前面我们说了Q在 JBoss jBPM Starters Kit ?/span> jbpm-server 目录是一个已l配|好的了 jBPM CZQ那么让我们来感觉一?/span> jBPM 做出的东西吧?/span>

 

双击 jbpm-server 目录下的 start.bat 文gQ启?/span> JBoss 服务。这时会打开一?/span> DOS H口Q启动完成后Q日志会不断输出Q其中最后一句是?/span> 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,q表C?/span> jBPM 在开始工作了Q它不断q行轮询?/span>

打开|页Q?/span> http://localhost:8080/jbpm/  得到如下画面

 20060713_image001.jpg

q是一个已l用 jBPM 开发好的用户定单流E,h下单、审核、估L程。它所用的数据库是一个内|的数据库?/span>

?/span> cookie monster 用户dQ选择?/span> create new web sale order ”可以创Z个定单。如下图所C,在图左边是填写的定单情况Q右边一整个定货程的示意图Q红色框表示程q行到哪一步了。填写好定单好,选择?/span> Save and Close Task ”,完成定单提交?/span>

 20060713_image002.jpg

选择右上角的?/span> Login as another user ”以另外一个用户名 ernie d。这时可以看?/span> ernie 用户的Q务列表中多了一V?/span>

 20060713_image003.jpg

点进dQ显C如下画面。这个示例对中文的支持不好,全都昄成了 unicode 码了。不这什么多Q反正知道是q么回事p了。在 comment 填写意见,?/span> OK 按钮Q进入到下一步。如果选择 more info needed 按钮Q则打回l?/span> cookie monster 用户修改定单?/span>

 20060713_image004.jpg

下面的流E,q里׃再赘qC。在q个很标准的工作示例中Q我们基本可以看?/span> jBPM 的应用范围还是比较广的。而且从这个示例,我们是看不出?/span> jBPM 的,也就是说 jBPM 在后台v着作用?/span>

从这个例子,q看不出 jBPM 的优ѝ不q,如果在一个流E不定Q经帔R要变动的目中, jBPM 的好处将会显然出来。应?/span> jBPM 后,改变程只需改变程描述文gQ这在后面的内Ҏ到?/span>

q是一个已做好的示例,接下来我们将仉K这个实例来开发一个请假流E?br />
作者简?/strong>
陈刚Q广西桂林hQ著作有《Eclipse从入门到_N?br />您可以通过其博客了解更多信息和文章Q?a >http://www.chenGang.com.cn



陈刚 2006-07-13 15:03 发表评论
]]>
վ֩ģ壺 | | ͷ| Ϫ| | | °Ͷ| | żҽ| ǹ| ˺| | | | | | ڽ| | ¯| ڻ| Ϊ| | | | | | | | | ʷ| | ɽ| Ž| ɽ| ػʵ| | | | ̩| ԭ| Ȫ|