Oracle神谕

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  284 随笔 :: 9 文章 :: 106 评论 :: 0 Trackbacks

#

(一)结构:
(1)XML定义文件(definition)
(2)plain java   JBpm对象模型  定义 执行 日志
(3)DataBase  定义 执行 日志
(二)
A process definition can be represented in 3 different forms : as xml, as java objects and as records in the jBPM database. Executional (=runtime) information and logging information can be represented in 2 forms : as java objects and as records in the jBPM database.{一个流程定义可以表现为三种不同的形态:XML 、java对象和jBpm数据库中的记录。执行(运行)信息和日志信息可以表现为两种形态:java对象和jBpm数据库中的记录}

For more information about the xml representation of process definitions and process archives, see Chapter 13, jBPM Process Definition Language (JPDL).{Process Definition Language JPDL}

This chapter will discuss the transformations done between the java objects and the jBPM database. To store java objects in the database and retrieve them, jBPM uses hibernate internally. While it is not strictly necessary to have hibernate knowledge for using jBPM, it is recommended. {这个章节将要讨论在java对象和jBPM数据库之间的转换。为了在数据库中存储对象和获取他们,jBPM使用内部使用了Hibernate。当然不是在使用jBPM中严格要拥有Hibernate的知识,它是建议的}

More information on how to deploy a process archive to the database can be found in Section 13.1.1, “Deploying a process archive” .


(三)Session的层次:
JbpmSessionFactory
|
|
|
JbpmSession
|
|
|
GraphSession
TaskMgmtSession
ContextSession

(四) The jBPM database classes

The jBPM persistence operations can be found in the named sessions like e.g. GraphSession, TaskMgmtSession and ContextSession,... The named sessions can be obtained from a JbpmSession. The JbpmSession in its turn can be obtained from a JbpmSessionFactory. {jBPM持久层操作可以发现被命名为sessions,例如想GraphSession TaskMgmtSession和ContextSession.... 这个命名sessions可以从JbpmSession中获得。JbmpSession可以从JbpmSessionFactory中获得}

A JbpmSessionFactory is threadsafe so in your application, you need one JbpmSessionFactory. That singleton can be referenced e.g. in a static variable with lazy initialization (beware about the issues around lazy initialization and double-checked locking). At creation time, the JbpmSessionFactory prepares all information in a way that JbpmSessions can be created super fast. {一个JbpmSessionFactory在你的程序中是线程安全的,你仅仅需要一个JbpmSessionFactory. 那个单例可以被参考在例如在lazy初始化下的静态变量(小心发布在Lazy 初始化并且双层检查锁定。在创建时刻,JbpmSessionFactory 在某种程度准备所有信息那样可以被快速创建)}

As a user, you should create one JbpmSession per thread or per request. The JbpmSession has a JDBC connection to the database. {作为一个用户,你应该创建一个JbpmSession 每一个线程或每一次请求。JbpmSession拥有一个连接数据库的Jdbc连接。}

The purpose of the JbpmSession and JbpmSessionFactory is only to wrap their hibernate counterparts. For advanced features such as detached objects or optimistic locking, see the hibernate documentation. {这个JbpmSession和JbpmSessionFactory的目的仅仅是为了包装Hibernate 副本。 对于高级特征 例如分离对象或乐观锁,看hibernate文档。}

public class PersistenceApiTest extends TestCase {

  static JbpmSessionFactory jbpmSessionFactory = JbpmSessionFactory.buildJbpmSessionFactory();

  public void testStartProcessInstance() {
    // obtain a session
    JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
    try {
      // start a user managed transaction
      jbpmSession.beginTransaction();

      // load information from the database
      // (note that process definitions will be cached in memory
      // in the second level cache of hibernate)
      ProcessDefinition auctionProcess =
        jbpmSession.getGraphSession().findLatestProcessDefinition("auction");

      // perform a POJO workflow operation on the plain object model.
      ProcessInstance auctionInstance = new ProcessInstance(auctionProcess);
      auctionInstance.signal();
     
      // store the result in the database
      jbpmSession.getGraphSession().saveProcessInstance(auctionInstance);
     
      // commit the user transaction
      jbpmSession.commitTransaction();

    } finally {
      // close the session.
      jbpmSession.close();     
    }
  }
}

posted @ 2005-06-14 18:04 java世界畅谈 阅读(1807) | 评论 (0)编辑 收藏

流程定义XML流:
1.定制action:
<process-definition>
   <start-state>
      <transition to="s"/>
   </start-state>
   <state name="s">
      <transition to="end">
         <action class="com....MyActionHandler"/>
      </transition>
   </state>
   <end-state name="end"/>
</process-definition>
2.有对应事件的
<process-definition>
   <start-state>
      <transition to="s"/>
   </start-state>
   <state name="s">
      <event type="node-enter">
         <action calss="com....MyActionHandler"/>
      </event>
      <event type="node-leave">
         <action calss="com....MyActionHandler"/>
      </event>
      <transition to="end"/>     
   </state>
   <end-state name="end"/>
</process-definition>
3.任务分派XML流程定义
<process-definition name="the baby process">
   <start-state>
      <transition name="baby cries" to="t"/>
   </start-state>
   <task-node name="t">
      <task name="change nappy">
         <assignment class="com....NappyAssignmentHandler"/>
      </task>
      <transition to="end" />
   </task-node>
   <end-state name="end"/>
</process-definition>

posted @ 2005-06-06 17:07 java世界畅谈 阅读(1349) | 评论 (0)编辑 收藏

JBPM_ACTION                                 action记录表
JBPM_DECISIONCONDITIONS     结果条件表
JBPM_DELEGATION                        委托表
JBPM_EVENT                                    事件表 处理进入或者离开事件
JBPM_EXCEPTIONHANDLER        异常处理表
JBPM_ID_GROUP                             用户组表
JBPM_ID_MEMBERSHIP                 用户成员表   表现用户和组之间的多对多关系
JBPM_ID_PERMISSIONS                用户权限表
JBPM_ID_USER                                用户表
JBPM_MODULEDEFINITION         模块定义表
JBPM_MODULEINSTANCE            模块实例表
JBPM_NODE                                     流程节点表
JBPM_POOLEDACTOR                   汇集参与着表
JBPM_PROCESSDEFINITION         流程定义表
JBPM_PROCESSFILE                       流程文件表
JBPM_PROCESSFILEBLOCK         流程文件块表
JBPM_PROCESSINSTANCE           流程实例表
JBPM_RUNTIMEACTION               运行中行为表
JBPM_SCRIPTVARIABLES             脚本变量表
JBPM_SWIMLANE                          泳道表
JBPM_SWIMLANEINSTANCE       泳道实例表
JBPM_TASK                                     任务表
JBPM_TASKACTORPOOL             用户行为汇总
JBPM_TASKINSTANCE                 任务实例
JBPM_TIMER                                   计时表
JBPM_TOKEN                                 令牌表
JBPM_TOKENVARIABLEMAP      令牌变量影射表
JBPM_TRANSITION                        转换表
JBPM_VARIABLEINSTANCE         变量实例表
JBPM_VARIABLEINSTANCEBLOCK  变量实例块表
JBPM_VARIABLEMAPPING            变量影射表
posted @ 2005-06-06 13:27 java世界畅谈 阅读(2588) | 评论 (8)编辑 收藏

  最近刚刚开始接触工作流,感觉这个东西确实很不错。当然现在自己还没有入门,因为自己的几个朋友在开发中接触类似的东西。现在也开始接触一些。
  目前选择jBPM作为研究的对象,其他的工作流(OSWorkflow)暂时先放在一边,因为jBPM将hibernate3.0作为其持久层的解决方案,而自己对Hibernate现在也有了一定的认识。想来,上手应该好一些的。
  昨天和朋友在一起的游泳的时候,也谈了很长时间的工作流。工作流有自己的一套Database,其中主要记录的是状态信息。工作流关心的就是状态信息。可以有流程描述语言来设置流程,jBPM有自己一套绘制流程的工具(提供的是一个插件)。不过在具体的业务信息中也要处理状态信息,方便于流向下个业务层面。流程可以回滚处理。
  典型的一个流程,甲写了一个请假申请,提交给领导乙,领导拿到后,不给予审批,然后将给第三方丙。丙来处理这个流程。
posted @ 2005-06-06 13:02 java世界畅谈 阅读(818) | 评论 (1)编辑 收藏

仅列出标题
共29页: First 上一页 21 22 23 24 25 26 27 28 29