Liferay Portal 內建工作流引擎支援 jBPM,但預設未啟用。本文記錄在 Tomcat 環境下,使用 HSQLDB 內嵌資料庫快速部署並驗證 jBPM 工作流功能的完整步驟。
portal-ext.propertiesliferay-portal-servicemix-4.2.1.warliferay-portal-jbpm-4.2.1.war# 1. 重新命名 WAR 檔(避免衝突)
mv liferay-portal-jbpm-4.2.1.war jbpm-web.war
mv liferay-portal-servicemix-4.2.1.war servicemix-web.war
# 2. 部署到 Tomcat
cp jbpm-web.war servicemix-web.war $TOMCAT_HOME/webapps/
# 3. 初始化 jBPM 資料庫結構
cp $TOMCAT_HOME/webapps/jbpm-web/WEB-INF/sql/hsqldb.create.jbpm.3.1.sql \
$TOMCAT_HOME/bin/jbpm.script
# 4. 啟動 Tomcat
$TOMCAT_HOME/bin/startup.sh
https://localhost:8080/,使用 test@liferay.com / test 登入<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="Example Process">
<start-state name="start">
<task>
<assignment class="com.liferay.jbpm.handler.IdentityAssignmentHandler">
<companyId>liferay.com</companyId>
<type>user</type>
<name>test@liferay.com</name>
</assignment>
<controller>
<variable name="text:color" />
<variable name="text:size" />
</controller>
</task>
<transition name="to_t" to="t"/>
</start-state>
<task-node name="t">
<task name="t">
<controller>
<variable name="text:color" access="read" />
<variable name="text:size" access="read"/>
</controller>
<assignment class="com.liferay.jbpm.handler.IdentityAssignmentHandler">
<companyId>liferay.com</companyId>
<type>user</type>
<name>test@liferay.com</name>
</assignment>
</task>
<transition name="to_end" to="end"/>
</task-node>
<end-state name="end"/>
</process-definition>
<controller> 定義任務表單欄位,access="read" 表示唯讀傳遞jbpm.script 放入 bin/ 目錄,Tomcat 啟動時自動執行| 現象 | 原因 | 解決 |
|---|---|---|
| 工作流 Portlet 不顯示 | jbpm-web.war 未正確部署 | 檢查 Tomcat log、確認 WAR 解壓縮無誤 |
| 流程部署失敗 | JPML 語法錯誤或命名空間不符 | 對照 jBPM 3.1 XSD 驗證 XML |
| 任務指派失效 | 使用者不存在或 companyId 不匹配 | 確認 Liferay 使用者資料與指派設定一致 |
| 資料表不存在 | jbpm.script 未被執行 | 手動在 HSQLDB 執行建表 SQL |
TaskController 介面,支援複雜表單渲染與驗證portal-ext.properties 指向 MySQL/PostgreSQL/Oracle,並下載對應 JDBC 驅動完成上述配置後,Liferay 即具備完整的工作流引擎能力,可支援表單審核、文件簽核、業務流程自動化等企業級應用場景。