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中操作這個持久化操作就可以成功,到這工作流裏面也操作這個持久化的操作他就會報權限錯誤,鬱悶。希望有經驗的朋友不吝賜教。謝謝!!