liferay工作流開發(JBPM亂碼)

省過配置直奔主題,如果你第一次開發工作流或者沒有用過JBPM,見意你先去下載JBPM,他裏面有一個和JBOSS綁好的service,啓動,先感受一下工作流,這個過程網上有很多的文檔,我這裏就省過,這個對你在liferay中開發工作流很重要。
JBPM-WEB不能導出到ext工程裏,這個很鬱悶,在liferay源碼中開發,他eclipse完全把這些文件當作是普通的文件,報錯提示什麼也沒有,錯了也不知道,我的做法是先在外面建一個普通的WEB工程,然後把JBPM-WEB下面的src拷到我面的WEB工程裏然後把要的包導進來,這樣開發起來就舒服多了,其他的工作和JBPM普通的開發一樣了,先寫一個工作流文件,你也可以裝上jbpm-designer插件來畫圖,然後把工作流文件貼到workflow新增工作流的輸入框裏,保存就生成了一個工作流了,如果你要寫上actionHandler就在外面的web工程裏寫好再把文件貼到liferay裏面來,保存發佈就可以了。
正常情況下是生成instance然後在觸發一些事件,而我這幾天開發的是在liferay原有的日誌文章的工作流,在文章增加的時候生成一個事例,這樣屬於反向驅動工作流,liferay裏面本身是封了所有JBPM的API的,只能通過他給的接口來操作工作流,他所提供的操作API全在com.liferay.portlet.workflow.service.impl這個包下面,一共四個,應該能滿足我們的操作,他自已定了WorkflowTask,WorkflowInstance,WorkflowDefinition,WorkflowToken這幾個和JBPM提供的ProcessDefinition ,ProcessInstance ,Token ,Task是沒有關係的,不要受他表面的迷惑。
JBPM在輸入中文的時候會出現亂碼,解決方案是com.liferay.util.Http
556行改:
method.addRequestHeader(
"Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
645行改:
return new String(URLtoByteArray(location, cookies, parts, post),"UTF-8");
打包放在mule-web和jbpm-web下面,ROOT/WEB-INF下面要不要換就看你本身liferay操作是不是亂碼。還有在eclipse下面啓動,操作工作流會報SocketTimeOutException,不管他,刷新就OK,用tomcat啓動是沒有這個問題的。
最後我有個鬱悶的地方,在寫實現ActionHandler類的時候,在裏面操作一些持久化操作的時候,總是報權限不足,明明是同一個用戶在別的portlet中操作這個持久化操作就可以成功,到這工作流裏面也操作這個持久化的操作他就會報權限錯誤,鬱悶。希望有經驗的朋友不吝賜教。謝謝!!
發佈了6 篇原創文章 · 獲贊 0 · 訪問量 2963
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章