<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評(píng)論 - 915, 引用 - 0
    數(shù)據(jù)加載中……

    jBPM開(kāi)發(fā)入門指南(5)

    前篇說(shuō)起要講在JBPM中實(shí)現(xiàn)用戶權(quán)限,但這段時(shí)間比較忙,一直拖著。這里先把jbpm自帶的websale例子放上來(lái),大伙先將就看看。這個(gè)例子我已經(jīng)把它抽取了出去,網(wǎng)頁(yè)部份丟棄了。在看的時(shí)候主要看WebsaleTest.java,看看它的用戶權(quán)限是怎么用的。

    幾個(gè)重點(diǎn):
    (1) jBPM沒(méi)有角色的概念!!! 很多人把ActorID理解成角色,那是相當(dāng)錯(cuò)誤的。jBPM只有參與者的概念,也就是ActorID,它可以是用戶ID,也可以是角色I(xiàn)D,也可以什么都不是。你要自己去把用戶角色等東東和ActorID映射起來(lái)。不過(guò)一般我們把ActorID設(shè)置成角色,但jbpm websale卻是設(shè)置成用戶的。
    (2)用戶信息的入口是JbpmContext,里面有一個(gè)setActorID方法。你用戶登錄時(shí)候,把一些用戶信息set進(jìn)去。
    (3)泳道概念:你去看看UML中的帶泳道的活動(dòng)圖,那就是象一個(gè)游泳池里的泳道一樣。


    安裝提示:
    ?<classpathentry kind="con" path="JBPM/jBPM 3.1.2"/>
    .classpath的這一句很可能和你電腦的設(shè)置不符,這是jbpm插件的一個(gè)設(shè)置,指向jbpm的HOME目錄,以便找到j(luò)bpm的jar包。你按照你電腦上的設(shè)置相應(yīng)修改一下這一行。


    websale的eclipse項(xiàng)目ZIP包:http://www.tkk7.com/Files/chengang/chen-jbpm_websale.zip

    posted on 2006-09-16 19:09 陳剛 閱讀(33760) 評(píng)論(22)  編輯  收藏 所屬分類: jBPM

    評(píng)論

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    哈哈。。看看哈~~
    2006-09-18 09:06 | ktm

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    說(shuō)實(shí)在的,這些都沒(méi)有太大用,我看JBPM都能看到這些內(nèi)容,關(guān)鍵是具體跟業(yè)務(wù),具體組織架構(gòu)聯(lián)系在一起時(shí)怎么處理,有些系統(tǒng)是完全基于工作流系統(tǒng)(連表單也是工作流產(chǎn)生),業(yè)務(wù)附屬于工作流,但大的業(yè)務(wù)系統(tǒng)不可能這么作的,工作流應(yīng)該為業(yè)務(wù)服務(wù),這是我的愚見(jiàn),也是我的困惑!
    2006-09-22 11:11 | ivor

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    陳大哥, 問(wèn)個(gè)問(wèn)題,我看了你的這幾篇入門指南之后,照你的步驟運(yùn)行了一下,大致都還算順利.但是每次在調(diào)用JbpmContext.close();方法的時(shí)候,總是會(huì)拋出異常:
    NewPooledConnection : A Throwable occurred while trying to reset the typeMap property of our Connection to Collections.EMPTY_MAP!
    java.sql.SQLException: The Connection.setTypeMap(Map) method is not implemented.
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.notImplemented(ConnectionJDBC2.java:1519)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.setTypeMap(ConnectionJDBC2.java:2123)
    是什么原因呢,是jtds包的版本不對(duì)嗎?
    2006-09-27 17:49 | xiaoshi

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    另外,我看了下ConnectionJDBC2.java里面的代碼,其中setTypeMap方法如下:
    public void setTypeMap(Map map) throws SQLException {
    checkOpen();
    notImplemented("Connection.setTypeMap(Map)");
    }
    它里面調(diào)用了notImplemented方法,而notImplemented方法是這樣的:
    /**
    * Reports that user tried to call a method which has not been implemented.
    *
    * @param method the method name to report in the error message
    * @throws SQLException always, with the not implemented message
    */
    static void notImplemented(String method) throws SQLException {
    throw new SQLException(
    Messages.get("error.generic.notimp", method), "HYC00");
    }
    看注釋的意思是調(diào)用了一個(gè)還沒(méi)有實(shí)現(xiàn)的方法,為什么會(huì)出現(xiàn)這種情況呢??
    從JbpmContext.close()方法,調(diào)用棧如下:
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.notImplemented(ConnectionJDBC2.java:1519)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.setTypeMap(ConnectionJDBC2.java:2123)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:290)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1148)
    at org.hibernate.connection.C3P0ConnectionProvider.closeConnection(C3P0ConnectionProvider.java:42)
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:343)
    at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:298)
    at org.hibernate.jdbc.ConnectionManager.afterTransaction(ConnectionManager.java:187)
    at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:213)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:119)
    at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:162)
    at org.jbpm.svc.Services.close(Services.java:211)
    at org.jbpm.JbpmContext.close(JbpmContext.java:139)
    調(diào)用到最后,總會(huì)調(diào)用到ConnectionJDBC2.notImplemented來(lái), 難道是某些包版本不對(duì)?
    2006-09-27 17:56 | xiaoshi

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    流程中如果有action和assignment,其所對(duì)應(yīng)的class會(huì)使用jbpm的ProcessClassLoader來(lái)加載,根據(jù)上一篇提到的,如果在class A 中引用了 class B, 則B會(huì)使用加載class A的加載器來(lái)加載B,而不是Thread.currentThread().getContextClassLoader()來(lái)加載.這樣,如果在action的class中使用我們自己的類,則這些類還是會(huì)使用jbpm的ProcessClassLoader來(lái)加載,而不是Thread.currentThread().getContextClassLoader(),這樣如果沒(méi)有把這些類和jbpm的流程定義一起部署,運(yùn)行時(shí)很有可能會(huì)找不到這些類,特別是,如果我們自己的代碼里面如果又引用了其他的資源,比如spring,hibernate之類的,如果把這些連同jbpm流程定義一起部署,感覺(jué)有些不爽.比如說(shuō),在web應(yīng)用開(kāi)發(fā)中,一般會(huì)把我們自己開(kāi)發(fā)的jar放到WEB-INF/lib目錄下,這樣運(yùn)行時(shí)會(huì)由org.apache.catalina.WebappClassLoader 來(lái)加載.但是如果按照jbpm的弄法,由它來(lái)加載我們所寫(xiě)的類,則它不會(huì)從WEB-INF/lib去加載類,這似乎不是我們所想要的.

    所以我最后考慮了一下,將其ProcessClassLoader的findClass方法改寫(xiě)了,不知會(huì)不會(huì)引起什么bug,望有高人指點(diǎn)一二,代碼如下:

    public Class findClass(String name) throws ClassNotFoundException {
    Class clazz = null;

    ClassLoader classLoader = Thread.currentThread()
    .getContextClassLoader();
    clazz = classLoader.loadClass(name);

    return clazz;
    }


    這樣我們自己寫(xiě)的類放在WEB-INF/lib目錄下,運(yùn)行時(shí)會(huì)由org.apache.catalina.WebappClassLoader 來(lái)加載進(jìn)來(lái),這樣似乎是我們所想要達(dá)到的目的.

    2006-11-26 21:15 | guanqi

    # 關(guān)于weblogic上配置jbpm問(wèn)題  回復(fù)  更多評(píng)論   

    大哥你好,你在weblogic814配置過(guò)jbpm3.1嗎,我怎么配都不行,主要錯(cuò)誤如下,能我一點(diǎn)指導(dǎo)嗎,先謝了。
    org.hibernate.HibernateException: Errors in named queries: GraphSession.findAllProcessDefinitionVersions, SchedulerSession.findTimersByName, MessagingSession.resumeMessagesForToken, GraphSession.selectLogsForTokens, GraphSession.findTokensForProcessInstance, TaskMgmtSession.findTaskInstancesByIds, MessagingSession.findMessages, SchedulerSession.findSuspendedTimers, LoggingSession.findLogsByToken, MessagingSession.suspendMessagesForToken, TaskMgmtSession.findTaskInstancesByActorId, SchedulerSession.resumeTimersForToken, TaskMgmtSession.findPooledTaskInstancesByActorId, TaskMgmtSession.findTaskInstancesByTokenId, SchedulerSession.suspendTimersForToken, GraphSession.findAllProcessInstancesForADefinition, GraphSession.findProcessDefinitionByNameAndVersion, MessagingSession.findErrorMessages, SchedulerSession.deleteTimersForProcessInstance, TaskMgmtSession.findPooledTaskInstancesByActorIds, SchedulerSession.findFailedTimers, GraphSession.findLatestProcessDefinitionQuery, SchedulerSession.findTimersByDueDate, TaskMgmtSession.findTaskInstancesByActorIds, GraphSession.findAllProcessDefinitions
    at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:338)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1154)
    at org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:90)
    at org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:74)
    at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:79)
    at org.jbpm.persistence.db.DbPersistenceService.getGraphSession(DbPersistenceService.java:216)
    at org.jbpm.JbpmContext.getGraphSession(JbpmContext.java:427)

    2006-12-28 14:26 | poplar

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    說(shuō)實(shí)在的,這些都沒(méi)有太大用,我看JBPM都能看到這些內(nèi)容,關(guān)鍵是具體跟業(yè)務(wù),具體組織架構(gòu)聯(lián)系在一起時(shí)怎么處理,有些系統(tǒng)是完全基于工作流系統(tǒng)(連表單也是工作流產(chǎn)生),業(yè)務(wù)附屬于工作流,但大的業(yè)務(wù)系統(tǒng)不可能這么作的,工作流應(yīng)該為業(yè)務(wù)服務(wù),這是我的愚見(jiàn),也是我的困惑! 經(jīng)典!!!!!!!!!!!
    2007-01-12 10:30 | odexuce

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    這個(gè)例子我已經(jīng)把它抽取了出去,網(wǎng)頁(yè)部份丟棄了。在看的時(shí)候主要看WebsaleTest.java??????



    好像人家源代碼包里 本來(lái)就有這個(gè) 單元測(cè)試 不用你去 抽取吧?????
    2007-03-20 13:55 | Silence

    # re: jBPM開(kāi)發(fā)入門指南(5) [未登錄](méi)  回復(fù)  更多評(píng)論   

    說(shuō)實(shí)在的,這些都沒(méi)有太大用,我看JBPM都能看到這些內(nèi)容,關(guān)鍵是具體跟業(yè)務(wù),具體組織架構(gòu)聯(lián)系在一起時(shí)怎么處理,有些系統(tǒng)是完全基于工作流系統(tǒng)(連表單也是工作流產(chǎn)生),業(yè)務(wù)附屬于工作流,但大的業(yè)務(wù)系統(tǒng)不可能這么作的,工作流應(yīng)該為業(yè)務(wù)服務(wù),這是我的愚見(jiàn),也是我的困惑! 經(jīng)典
    2007-05-24 10:48 | zz

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    說(shuō)實(shí)在的,這些都沒(méi)有太大用,我看JBPM都能看到這些內(nèi)容,關(guān)鍵是具體跟業(yè)務(wù),具體組織架構(gòu)聯(lián)系在一起時(shí)怎么處理,有些系統(tǒng)是完全基于工作流系統(tǒng)(連表單也是工作流產(chǎn)生),業(yè)務(wù)附屬于工作流,但大的業(yè)務(wù)系統(tǒng)不可能這么作的,工作流應(yīng)該為業(yè)務(wù)服務(wù),這是我的愚見(jiàn),也是我的困惑! 經(jīng)典
    確實(shí)沒(méi)啥用。不知道陳剛大哥能不能給個(gè)實(shí)際應(yīng)用的案例,而不是這些demo,太沒(méi)價(jià)值了。
    2007-07-04 15:30 | flash

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    你好陳剛老師。我一直在學(xué)習(xí)jbpm技術(shù)。現(xiàn)在我已經(jīng)能寫(xiě)一個(gè)簡(jiǎn)單的工作流程了。但是我還是不會(huì)用fork和join怎么使用。你能給我講解下他們的使用么?謝謝。也希望老師能給我些指點(diǎn),接下來(lái)我該怎么學(xué)習(xí)?謝謝!!
    2008-01-27 08:56 | wangyoulin006

    # re: jBPM開(kāi)發(fā)入門指南(5) [未登錄](méi)  回復(fù)  更多評(píng)論   

    關(guān)于這個(gè)例子的介紹文字太少了點(diǎn)吧,環(huán)境也沒(méi)寫(xiě)。配置起來(lái)還報(bào)錯(cuò),弄了半天。
    而且連跑的是哪個(gè)流程都不知道,leavel1,leavel2,leavel3,試了1不可以
    2008-04-07 15:25 | leon

    # re: jBPM開(kāi)發(fā)入門指南(5) [未登錄](méi)  回復(fù)  更多評(píng)論   

    有沒(méi)有和具體的開(kāi)發(fā)全過(guò)程啊,最好寫(xiě)一個(gè)jbpm和tomcat開(kāi)發(fā)實(shí)例,包括環(huán)境配置和數(shù)據(jù)庫(kù)配置的,謝謝了!
    2008-08-11 16:38 | sky

    # re: jBPM開(kāi)發(fā)入門指南(5) [未登錄](méi)  回復(fù)  更多評(píng)論   

    JBPM與Ibatis結(jié)合么樣弄啊?
    2009-01-11 18:26 | Simple

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    您好,我遇到一個(gè)問(wèn)題,不知道您能不能幫助我一下,呵呵
    一個(gè)主流程下有多個(gè)子流程,至少5個(gè),而每個(gè)子流程都是一樣的流程定義,就是有多個(gè)部門分別去執(zhí)行子流程,最后再匯總到主流程,這樣的結(jié)構(gòu)應(yīng)該怎么定義流程呢?而每個(gè)子流程又是很大的,總不能將這些一模一樣的子流程都定義在主流程中把?有沒(méi)有那種類似會(huì)簽的結(jié)構(gòu)?哎,很困擾我啊,這個(gè)星期必須搞定,剛參加工作壓力挺大的
    2009-03-11 12:48 | 李慧芬

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    很經(jīng)典,謝謝
    2009-03-23 18:41 | rianpeny

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    李慧芬 同學(xué),用Fork和join節(jié)點(diǎn)呀
    2009-04-14 17:51 | unamed

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    初學(xué),謝謝,敬禮,
    2009-06-26 09:04 | qimiao

    # re: jBPM開(kāi)發(fā)入門指南(5) [未登錄](méi)  回復(fù)  更多評(píng)論   

    結(jié)構(gòu)清析,是個(gè)入門的東東吧。
    2009-06-29 19:14 | x

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    那個(gè)在jpdl.xml文件中,我要請(qǐng)假,前面的空格給去了,運(yùn)行時(shí)就不對(duì),我又給加了空格,但是再運(yùn)行還是不行,最后在Test里把空格給去掉了。
    把這個(gè)走了一遍,花費(fèi)了好一會(huì)兒,我想找個(gè)web開(kāi)發(fā)的例子,沒(méi)有找到。想做個(gè)跟那個(gè)server一樣的例子。在網(wǎng)上大部分都是java的開(kāi)發(fā)包,還是那種我不熟悉的格式。

    把那個(gè)ehcache.1.1.jar包給換成ehcache1.2.3.jar包就沒(méi)出錯(cuò)了。終于連上
    mysql了。你做沒(méi)沒(méi)做web的例子,給傳個(gè)?
    2009-08-15 17:34 | zw

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    你好,我有一個(gè)問(wèn)題,我想用jpbm流程進(jìn)行編排,但是中間的活動(dòng)要用到一些原來(lái)c程序中的發(fā)出的socket消息,我有什么辦法實(shí)現(xiàn)呢
    2011-08-23 15:07 | llcf

    # re: jBPM開(kāi)發(fā)入門指南(5)   回復(fù)  更多評(píng)論   

    @xiaoshi
    驅(qū)動(dòng)問(wèn)題,用MICROSOFT的就沒(méi)有此問(wèn)題
    2011-09-01 17:06 |
    主站蜘蛛池模板: 国产AV旡码专区亚洲AV苍井空| 亚洲日韩VA无码中文字幕| 亚洲精品电影天堂网| 国产在线观看无码免费视频| 国产成人精品曰本亚洲79ren| 国产成人高清亚洲一区91| 四虎永久免费地址在线观看| 美女黄频a美女大全免费皮| 免费va在线观看| fc2成年免费共享视频18| 亚洲国产av无码精品| 国产激情久久久久影院老熟女免费| 久久精品国产亚洲一区二区三区 | 久热免费在线视频| 久久精品国产亚洲沈樵| 男人的天堂网免费网站| 亚洲精品无码久久毛片波多野吉衣| 91青青青国产在观免费影视| 亚洲一区二区三区四区视频| 久久国内免费视频| 中文字幕乱码亚洲精品一区| 日韩一区二区免费视频| 国产精品自拍亚洲| 亚洲热线99精品视频| 182tv免费观看在线视频| 国产 亚洲 中文在线 字幕| 日韩黄色免费观看| 久久毛片免费看一区二区三区| 久久久久亚洲AV成人网人人网站 | 1000部拍拍拍18勿入免费视频下载| 亚洲人成电影网站| 全部免费国产潢色一级| 精品国产麻豆免费人成网站| 亚洲免费一级视频| 国产午夜鲁丝片AV无码免费| 野花香高清在线观看视频播放免费| 亚洲噜噜噜噜噜影院在线播放| 少妇亚洲免费精品| 久久免费视频99| 美女视频黄.免费网址| 67pao强力打造67194在线午夜亚洲|