package com.lifiti.portlet;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.osgi.service.component.annotations.Component;
import com.liferay.portal.kernel.servlet.ServletResponseUtil;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.lifiti.util.ActivitiUtils;
import com.lifiti.util.FilenameUtils;
@Component(immediate = true, property = { "com.liferay.portlet.display-category=category.sample",
"com.liferay.portlet.instanceable=true", "javax.portlet.display-name=Process List",
"javax.portlet.init-param.template-path=/", "javax.portlet.init-param.view-template=/process/processList.jsp",
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user" }, service = Portlet.class)
public class ProcessListPortlet extends BpmBasePortlet {
@Override
public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException {
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().list();
request.setAttribute("processDefinitionList", processDefinitionList);
super.render(request, response);
}
public void deployUploadAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception{
UploadPortletRequest upr = PortalUtil.getUploadPortletRequest(actionRequest);
String fileFieldName = "file";
if (upr.getSize(fileFieldName) == 0)
{
throw new Exception("空文件!");
}
String fileName = upr.getFileName(fileFieldName);
try {
// 得到输入流(字节流)对象
InputStream fileInputStream = upr.getFileAsStream(fileFieldName);//file.getInputStream();
// 文件的扩展名
String extension = FilenameUtils.getExtension(fileName);
// zip或者bar类型的文件用ZipInputStream方式部署
DeploymentBuilder deployment = repositoryService.createDeployment();
if (extension.equals("zip") || extension.equals("bar")) {
ZipInputStream zip = new ZipInputStream(fileInputStream);
deployment.addZipInputStream(zip);
} else if (extension.equals("xml")){
// xml类型的文件
deployment.addInputStream(fileName, fileInputStream);
}
deployment.deploy();
_log.info(fileName +" deploy success!");
} catch (Exception e) {
_log.error(fileName + " error on deploy process, because of file input stream");
}
String message = "BPMN file upload success!";
actionRequest.setAttribute("RETURN_MESSAGE", message);
}
public void imageAction(ActionRequest actionRequest, ActionResponse actionResponse) {
System.out.println("$$$$ begin $$$$ ");
processEngine = ActivitiUtils.getProcessEngine();
repositoryService = processEngine.getRepositoryService();
String processDefinitionId = ParamUtil.getString(actionRequest, "pdid");
String diagramResourceName = ParamUtil.getString(actionRequest, "diagramResourceName");
System.out.println("$$$$ pdid = $$$$ " + processDefinitionId);
System.out.println("$$$$ diagramResourceName = $$$$ " + diagramResourceName);
ProcessDefinitionQuery pdq = repositoryService.createProcessDefinitionQuery();
ProcessDefinition pd = pdq.processDefinitionId(processDefinitionId).singleResult();
// 通过接口读取
InputStream resourceAsStream = repositoryService.getResourceAsStream(pd.getDeploymentId(), diagramResourceName);
HttpServletResponse httpServletResponse = (HttpServletResponse) PortalUtil
.getHttpServletResponse(actionResponse);
HttpServletRequest httpServletRequest = (HttpServletRequest) PortalUtil.getHttpServletRequest(actionRequest);
// 另存输出
//ByteArrayOutputStream baos;
try {
// baos = inputStream2ByteArrayOutputStream(resourceAsStream);
httpServletResponse.reset();
httpServletResponse.setHeader("Expires", "0");
httpServletResponse.setHeader("Pragma", "public");
httpServletResponse.setHeader("cache-Control", "must-revalidate,post-check=0,pre-check=0");
httpServletResponse.setHeader("Content-disposition", "inline=filename=temp.png");
httpServletResponse.setContentType("image/png");
// httpServletResponse.setContentLength(baos.size());
ServletResponseUtil.sendFile(httpServletRequest, httpServletResponse, "temp.png", resourceAsStream,
"image/png");
// ServletResponseUtil.sendFile(httpServletRequest,
// httpServletResponse,
// "temp.png", baos.toByteArray());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户、组的同步需求非常重要,用来实现签收组的概念,比如指定签收组、会签、抢签都需要用到。 Activiti可以通过自定义实现SessionFactory,实现customUserManager和customRoleManager的方式集成第三方的用户关系。 这里我介绍一个方法,可以借助Liferay的实体监听器来做用户、组、用户-组成员关系的三种同步。其实实现原理非常简单,用户组的同步,就是实现 BaseModelListener 泛型接口 详情见:http://www.cnblogs.com/starcrm/p/6200674.html
资源推荐
资源详情
资源评论
收起资源包目录
Liferay7门户集成Activiti BPM用户组同步 (125个子文件)
bnd.bnd 57B
ProcessListPortlet.class 7KB
ProcessListPortlet.class 7KB
FirstPortlet.class 5KB
FirstPortlet.class 5KB
ProcessToDoPortlet.class 5KB
ProcessToDoPortlet.class 5KB
IdentifyHelper.class 5KB
IdentifyHelper.class 5KB
ViewResourceRenderCommand.class 5KB
ViewResourceRenderCommand.class 5KB
BPMNRenderCommand.class 4KB
BPMNRenderCommand.class 4KB
RepositoryHelper.class 4KB
RepositoryHelper.class 4KB
UserListener.class 4KB
UserListener.class 4KB
ProcessHelper.class 3KB
ProcessHelper.class 3KB
RuntimeHelper.class 3KB
RuntimeHelper.class 3KB
ToDo.class 3KB
ToDo.class 3KB
BpmBasePortlet.class 2KB
BpmBasePortlet.class 2KB
UserGroupListener.class 2KB
UserGroupListener.class 2KB
DeployUploadAction.class 2KB
DeployUploadAction.class 2KB
MapUtil.class 2KB
ProcessStartUpPortlet.class 2KB
ProcessStartUpPortlet.class 2KB
MapUtil.class 2KB
ActivitiUtils.class 1KB
ActivitiUtils.class 1KB
DeployCommand.class 1KB
DeployCommand.class 1KB
DeployPortlet.class 662B
DeployPortlet.class 662B
FilenameUtils.class 654B
FilenameUtils.class 654B
EngineConfig.class 566B
EngineConfig.class 566B
BpmPortalKeys.class 538B
BpmPortalKeys.class 538B
BpmWebKeys.class 430B
BpmWebKeys.class 430B
.classpath 672B
.gitignore 15B
build.gradle 2KB
com.lifiti.bpm-1.0.0.jar 43KB
ProcessListPortlet.java 5KB
RepositoryHelper.java 4KB
FirstPortlet.java 4KB
BPMNRenderCommand.java 4KB
ViewResourceRenderCommand.java 4KB
ProcessToDoPortlet.java 4KB
IdentifyHelper.java 3KB
UserListener.java 3KB
ToDo.java 3KB
RuntimeHelper.java 2KB
BpmBasePortlet.java 2KB
ProcessHelper.java 2KB
ProcessStartUpPortlet.java 2KB
DeployUploadAction.java 1KB
UserGroupListener.java 1KB
ActivitiUtils.java 1KB
DeployCommand.java 701B
MapUtil.java 555B
DeployPortlet.java 483B
EngineConfig.java 341B
BpmPortalKeys.java 300B
FilenameUtils.java 289B
BpmWebKeys.java 243B
processList.jsp 2KB
processList.jsp 2KB
processList.jsp 2KB
processDone.jsp 1KB
processDone.jsp 1KB
processDone.jsp 1KB
processToDo.jsp 952B
processToDo.jsp 952B
processToDo.jsp 952B
processStartUp.jsp 866B
processStartUp.jsp 866B
processStartUp.jsp 866B
deploy.jsp 511B
deploy.jsp 511B
deploy.jsp 511B
init.jsp 469B
init.jsp 469B
init.jsp 469B
view.jsp 123B
view.jsp 123B
view.jsp 123B
bpmn.jsp 119B
bpmn.jsp 119B
bpmn.jsp 119B
viewResource.jsp 33B
viewResource.jsp 33B
共 125 条
- 1
- 2
资源评论
昕友软件
- 粉丝: 91
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功