• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      jbpm學習心得

       元傲一 2006-08-28

      jBPM的學習心得

      1.      jBPM的簡單介紹

      jBPMJBOSS下的一個開源java工作流項目,該項目提供eclipse插件,基于Hibernate實現數據持久化存儲。

         參考

      http://www./products/jbpm

      2.      jBPMmyeclipse的沖突

      eclipse安裝了myeclipsejBPM時候,可能有沖突,具體表現在jBPM的流程設計器不能在eclipse中使用。

       

      3.      Hibernate連接mysql數據庫的一般參數

      下面的配置參數,根據需要可以修改:

      jbpmtestmysql中的schema的名字;

      GBK是字符集,可以根據需要修改;

      username=rootmysql數據庫的用戶名是root

      password=mysql mysql數據庫的用戶密碼是mysql

       

      hibernate.dialect=org.hibernate.dialect.MySQLDialect

      hibernate.connection.driver_class=com.mysql.jdbc.Driver

      hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK

      hibernate.connection.username=root

      hibernate.connection.password=mysql

       

      hibernate.show_sql=true

      hibernate.c3p0.min_size=1

      hibernate.c3p0.max_size=3

       

      4.      Hibernate連接Oracle數據庫的一般參數

      hibernate.dialect=org.hibernate.dialect.Oracle9Dialect

      hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver

      hibernate.connection.url= jdbc:oracle:thin:@localhost:1521:orcl hibernate.connection.username=jbpm

      hibernate.connection.password=jbpm

       

      5.      jBPM創建數據庫表等內容

      5.1.             mysql創建數據庫以及數據內容

      JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();

      JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();

      2個語針對mysq有效.

      5.2.             oralce創建數據庫以及數據內容

      JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().dropSchema();

      JbpmSessionFactory.buildJbpmSessionFactory().getJbpmSchema().createSchema();

      上面的語句對oralce無效。

      模型目錄jBPM\jbpm_database\jBPM_oralce10g.pdm jBPMOralce模型,包含對應的Sequence的信息.

      需要在數據庫中創建 Sequence name=hibernate_sequence

      http://wiki./wiki/Wiki.jsp?page=JbpmOnOracle

      5.3.             流程信息保存到數據庫

      JbpmSessionFactory  factory =  JbpmSessionFactory.buildJbpmSessionFactory();

               JbpmSession session = factory.openJbpmSession();

               GraphSession graphSession =  session.getGraphSession();

               session.beginTransaction();

              

               /// new ProcessDefinition 實例

               ProcessDefinition myProcessDefinition = null;

          ProcessInstance processInstance = new ProcessInstance(processDefinition);

            processInstance.getContextInstance().setVariable("myvar","xxx");

               ///

               graphSession.saveProcessDefinition(myProcessDefinition);

               session.commitTransaction();

      session.close();

      jBPMHibernate,MySQL的使用中會遇到字符集的問題.

      需要注意幾個地方。

      5.4.             Mysql安裝過程指定字符集

         Mysql安裝過程中指定相應的默認字符集是GBK

      5.5.             Hibernate.properties文件中的字符集設置

      hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK

      5.6.             hibernate.cfg.xml 文件中的字符集設置

      <property name="hibernate.connection.url">jdbc:mysql://192.168.1.2/jbpmtest</property>

      5.7.             MySQL的配置文件的修改:

         my.ini default-character-set=GBK

         注意有2處需要修改

       

      6.      為流程定義變量

      分成3種流程變量

      全局變量(全局流程變量)

      全局臨時變量(全局流程臨時變量)

      局部變量(流程某個接點內有效的變量)

      @see  org.jbpm.context.exe.ContextInstance

      目前還沒有使用過局部變量(流程某個接點內有效的變量)

      流程變量的定義

      6.1.             流程變量的類型

      ·         java.lang.String

      ·         java.lang.Boolean

      ·         java.lang.Character

      ·         java.lang.Float

      ·         java.lang.Double

      ·         java.lang.Long

      ·         java.lang.Byte

      ·         java.lang.Short

      ·         java.lang.Integer

      ·         java.util.Date

      ·         byte[]

      ·         java.io.Serializable

      ·         classes that are persistable with hibernate

        所有基本類型的包裹類型,以及實現了Serializable的類型都可以作為流程參數變量使用,注意參數類不能是一個類的內部類或者屬性類(除非包含參數類的類實現Serializable接口)

      參考 org.jbpm.context.exe.VariableInstance

      6.2.             流程變量的使用

      l         變量的定義和獲取

      void ContextInstance.setVariable(String variableName, Object value);

      void ContextInstance.setVariable(String variableName, Object value, Token token);

      Object ContextInstance.getVariable(String variableName);

      Object ContextInstance.getVariable(String variableName, Token token);

      l        Variables can be deleted with

      ContextInstance.deleteVariable(String variableName);

      ContextInstance.deleteVariable(String variableName, Token token);

       

      6.3.             Variable lifetime

          一個變量在被定義后,在變量從ContextInstance刪除前,都可以被訪問。當變量被刪除后,去獲取該變量將返回為空。

      6.4.             自定義類的實例作為流程變量

          如果一個類的實例要作為流程變量使用,該類需要實現java.io.Serializable接口,并且定義序列化版本.

       

      //一個可以作為流程變量使用的類

      class Wdz implements Serializable{

          //為類指定序列化版本號

          private static final long serialVersionUID = 1L;    

             private String name="wdz";

             private int age=10;

             public String toString(){

                    return "name="+name+",age="+age;    

             }    

      }

      上面的例子中,如果把類Wdz作為類WdzParent內部類使用,然后當成流程變量使用,那類WdzParent必須 也實現Serializable接口,否則會有問題.

      6.5.             Transient variables

      流程的歷史變量是不能持久化的,作用范圍是對整個流程全局有效的。

      ContextInstance類內部,采用的是一個Map來存儲TransientVariable的信息

      參考代碼

      org.jbpm.context.exe.ContextInstance 的源代碼。

      主要的相關方法

      public void deleteTransientVariable(java.lang.String name)

      public void setTransientVariable(java.lang.String name,

                                       java.lang.Object value)

      public java.lang.Object getTransientVariable(java.lang.String name)

       

      6.6.             Variables overloading

       當一個變量和流實例關聯(變量名字=wdz,value=test),如果在設置一個變量

      (變量名字=wdz,value= new Integer(10)) ,那最后變量(變量名字=wdz)的值是Integer(10)

      這稱之為overload.

       

      6.7.             Variables overriding

       如果父流程有變量A(=value1),子流程又定義了變量A=value2,那在子流程范圍內,獲取變量A的值,那結果是值=value2。這是遵循一般語言的局部變量在它的局部范圍內override上級變量。

       

      6.8.             流程變量的持久化

      它依賴于流程實例的持久化,非TransientVariable流程實例的持久化一起被保存。

      保存在數據表jbpm_variableinstance

      參考 org.jbpm.context.exe.VariableInstance

      6.9.             Customizing variable persistence (可以進一步了解)

      User  java object <---> converter <--->  variable instance

      也就是自定義類的持久化需要定義自己的converter和變量實例類

      converter和變量實例類需要繼承org.jbpm.context.exe.VariableInstance

      converter需要實現org.jbpm.context.exe.Converter接口

       

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 成年女人片免费视频播放A| 欧美自拍另类欧美综合图片区| 亚洲V天堂V手机在线| 不卡高清AV手机在线观看| 最新国产乱人伦偷精品免费网站| 国产免费高清69式视频在线观看| 精品无码久久久久国产| 国产精品欧美福利久久| 免费大片黄国产在线观看| 亚洲小说乱欧美另类| 波多野结衣久久一区二区| 极品尤物被啪到呻吟喷水| 欧美大胆老熟妇乱子伦视频| www久久只有这里有精品| AV最新高清无码专区| 国产A级作爱片无码| 亚洲国产成人久久精品软件| 奇米四色7777中文字幕| 亚洲AV旡码高清在线观看| 视频一区视频二区制服丝袜 | 怡红院一区二区三区在线| 我的公强要了我高潮在线观看| 国产不卡一区不卡二区| 色老头在线一区二区三区| 亚洲色最新高清AV网站| 欧美变态另类zozo| 欧美成人精品高清在线观看| 国产精品福利自产拍久久 | 亚洲情A成黄在线观看动漫尤物| 美女内射视频WWW网站午夜| 国内少妇偷人精品免费| 亚洲AV中文无码字幕色最新| 国产裸体XXXX视频在线播放| 久久蜜臀av一区三区| 久久精品国产亚洲AV忘忧草18| 337P日本欧洲亚洲大胆精品555588| 亚洲欧洲一区二区精品| 久久久久亚洲精品无码网址| 午夜宅男在线永久免费观看网| 国产成人高清亚洲综合| 久久综合九色欧美综合狠狠|