liferay 上集成JBPM Workflow工作流配置

网上很多流传着这样一种配置方式,我照着这样配置完成还是不能使用,这只是配置的一部分,因为我用了JBPM工作流..相应还需要修改修改里面的Java文件...调整了很长时间才搞通..

1.Liferay官方网站下载liferay-portal-jbpm-web-5.2.3.war,liferay-portal-servicemix-web-5.3.3.war或者liferay-portal-muel-web-4.3.2.war.(我用的是4.3.2,你下自已用的版本,不能错)
2.三个包都放到/webapps下面,liferay启动后会自动的解压,或者用WINRAR也可以解压。
3.webapps\ROOT\WEB-INF\classes\portal-ext.properties增加jbi.workflow.url=http://localhost:8080/servicemix-web/workflow或jbi.workflow.url=http://localhost:8080/mule-web/workflow注意端口号要和自已的相同。
4.如果要修改端口号那么还要修改webapps\mule-web\WEB-INF\mule-config.xml下<property name="url" value="http://localhost:8082/jbpm-web/servlet" />端口号;webapps\servicemix-web\WEB-INF\applicationContext.xml下<property name="url" value="http://localhost:8082/jbpm-web/servlet" />端口号。
5.webapps\jbpm-web\WEB-INF\classes\hibernate.cfg.xml,先择自已用到的数据库类型并配置, webapps\jbpm-web\WEB-INF\sql下面有各种数据库脚本,选择自已的导入库中。


第二部分:修改的文件;
After you have deployed following components (version 5.2.0.1) under liferay 5.2.3,
- workflow-portlet
- mule-web
- jbpm-web

please replace two classes
- mule-web
WEB-INF\classes\com\liferay\jbi\mule\util\URLTransformComponent.class
- workflow-portlet
WEB-INF\classes\com\liferay\workflow\service\impl\WorkflowDefinitionServiceImpl.class

and the workflow with jbpm should be ok.
-------

Please find the source code files in the attachement, corresponding to the classes in last mail.

- workflow-portlet
src\com\liferay\workflow\service\impl\WorkflowDefinitionServiceImpl.java

- mule-web
src\com\liferay\jbi\mule\util\URLTransformComponent.java

对应的Java类对应如下:

package com.liferay.jbi.mule.util;

import com.liferay.portal.kernel.util.Http;
import com.liferay.portal.kernel.util.HttpUtil;

import java.io.IOException;
import java.util.Map;

import javax.servlet.http.Cookie;

import org.mule.components.simple.LogComponent;
import org.mule.umo.UMOEventContext;

/**
* <a href="URLTransformComponent.java.html"><b><i>View Source</i></b></a>
*
* @author Charles May
*
*/
public class URLTransformComponent
extends LogComponent implements URLTransformService {

public String getUrlResult(Map parameters, String url) {
String xml = "<result />";

try {
//
// Method signature changed(add one Http.Auth) in new version.
// public static String URLtoString(
// String location, Cookie[] cookies, Http.Auth auth,
// Map<String, String> parts, boolean post)
//throws IOException {...}
//
//xml = HttpUtil.URLtoString(url, null, parameters, true);
xml = HttpUtil.URLtoString(url, null, null, parameters, true);
}
catch (Exception e) {
}

return xml;
}

public Object onCall(UMOEventContext context)
throws Exception {

super.onCall(context);

Map parameters = (Map)context.getTransformedMessage();

String url = (String)context.getMessage().getProperty("url");

return getUrlResult(parameters, url);
}

}
---------------------------------------------------------

package com.liferay.workflow.service.impl;

import com.liferay.documentlibrary.DuplicateDirectoryException;
import com.liferay.documentlibrary.NoSuchFileException;
import com.liferay.documentlibrary.service.DLServiceUtil;
import com.liferay.portal.PortalException;
import com.liferay.portal.SystemException;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.model.CompanyConstants;
import com.liferay.portal.model.GroupConstants;
import com.liferay.portal.model.User;
import com.liferay.portal.service.ResourceLocalServiceUtil;
import com.liferay.workflow.NoSuchDefinitionException;
import com.liferay.workflow.model.WorkflowDefinition;
import com.liferay.workflow.service.base.WorkflowDefinitionServiceBaseImpl;

import java.util.Date;

/**
* <a href="WorkflowDefinitionServiceImpl.java.html"><b><i>View Source</i></b>
* </a>
*
* @author Brian Wing Shun Chan
*
*/
public class WorkflowDefinitionServiceImpl
extends WorkflowDefinitionServiceBaseImpl {

public WorkflowDefinition addDefinition(
String xml, boolean addCommunityPermissions,
boolean addGuestPermissions)
throws PortalException, SystemException {

return addDefinition(
xml, Boolean.valueOf(addCommunityPermissions),
Boolean.valueOf(addGuestPermissions), null, null);
}

public WorkflowDefinition addDefinition(
String xml, String[] communityPermissions,
String[] guestPermissions)
throws PortalException, SystemException {

return addDefinition(
xml, null, null, communityPermissions, guestPermissions);
}

public WorkflowDefinition addDefinition(
String xml, Boolean addCommunityPermissions,
Boolean addGuestPermissions, String[] communityPermissions,
String[] guestPermissions)
throws PortalException, SystemException {

// Deploy xml

User user = getUser();

long definitionId = GetterUtil.getLong(
workflowComponentService.deploy(xml));

// File

long companyId = user.getCompanyId();
String portletId = CompanyConstants.SYSTEM_STRING;
long groupId = GroupConstants.DEFAULT_PARENT_GROUP_ID;
long repositoryId = CompanyConstants.SYSTEM;
String dirName = "workflow/definitions";
String fileName = dirName + "/" + definitionId + ".xml";
long fileEntryId = 0;
String properties = StringPool.BLANK;
Date modifiedDate = new Date();
String[] tagsEntries = new String[0];
byte[] bytes = xml.getBytes();

try {
DLServiceUtil.addDirectory(companyId, repositoryId, dirName);
}
catch (DuplicateDirectoryException dde) {
}

//
// The method changed with signature
// public static void addFile(
// long companyId, String portletId, long groupId, long repositoryId,
// String fileName, long fileEntryId, String properties,
// Date modifiedDate, String[] tagsCategories, String[] tagsEntries,
// byte[] bytes)
// throws PortalException, SystemException {
// ...
// }
//
// DLServiceUtil.addFile(
// companyId, portletId, groupId, repositoryId, fileName, fileEntryId,
// properties, modifiedDate, tagsEntries, bytes);
//
DLServiceUtil.addFile(
companyId, portletId, groupId, repositoryId, fileName, fileEntryId,
properties, modifiedDate, null, tagsEntries, bytes);

// Resources

if ((addCommunityPermissions != null) &&
(addGuestPermissions != null)) {

addDefinitionResources(
user, definitionId, addCommunityPermissions.booleanValue(),
addGuestPermissions.booleanValue());
}
else {
addDefinitionResources(
user, definitionId, communityPermissions, guestPermissions);
}

return getDefinition(definitionId);
}

public void addDefinitionResources(
User user, long definitionId, boolean addCommunityPermissions,
boolean addGuestPermissions)
throws PortalException, SystemException {

ResourceLocalServiceUtil.addResources(
user.getCompanyId(), 0, user.getUserId(),
WorkflowDefinition.class.getName(), definitionId, false,
addCommunityPermissions, addGuestPermissions);
}

public void addDefinitionResources(
User user, long definitionId, String[] communityPermissions,
String[] guestPermissions)
throws PortalException, SystemException {

ResourceLocalServiceUtil.addModelResources(
user.getCompanyId(), 0, user.getUserId(),
WorkflowDefinition.class.getName(), definitionId,
communityPermissions, guestPermissions);
}

public WorkflowDefinition getDefinition(long definitionId)
throws PortalException, SystemException {

try {
long companyId = getUser().getCompanyId();
long repositoryId = CompanyConstants.SYSTEM;
String dirName = "workflow/definitions";
String fileName = dirName + "/" + definitionId + ".xml";

String xml = new String(
DLServiceUtil.getFile(companyId, repositoryId, fileName));

WorkflowDefinition definition =
(WorkflowDefinition)workflowComponentService.getDefinition(
definitionId);

definition.setXml(xml);

return definition;
}
catch (NoSuchFileException nsfe) {
throw new NoSuchDefinitionException();
}
}

}

这样修改后,应该就可以使用了..只需要自己写JBPM definition.xml 文件..工作流系统就可以使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值