package com.neusoft.workflow.leave.view;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DeployProcessController {
@Autowired
private RepositoryService repositoryService;
@Autowired
private ExecutionService executionService;
@RequestMapping("/deploy.do")
public ModelAndView deploy(HttpServletRequest request,
HttpServletResponse response) throws Exception {
this.loadProcessDefFile(request, response);
List list = this.getLatestProcessDefinition();
//String number = ServletRequestUtils.getStringParameter(request, "number");
ModelAndView mav = new ModelAndView("/deployProcess");
mav.addObject("processList", list);
return mav;
}
protected void loadProcessDefFile(HttpServletRequest request,
HttpServletResponse response) throws Exception {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List fileItems = upload.parseRequest(request);// 上传文件解析
Iterator iter = fileItems.iterator();// 枚举方法
if (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
System.out.println("name: " + name + " & size:" + size);
if (name != null && !name.equals("") && size > 0) {
// Deploying a process部署流程
repositoryService.createDeployment()
.addResourcesFromZipInputStream(
new ZipInputStream(item.getInputStream()))
.deploy();
}
}
}
}
@RequestMapping("/processDefView.do")
public ModelMap processDefView(){
List<ProcessDefinition> list = this.getLatestProcessDefinition();
return new ModelMap().addAttribute("processList",list);
}
/**
* 获取最新版本的流程定义
*/
protected List<ProcessDefinition> getLatestProcessDefinition(){
List<ProcessDefinition> processDefinitions = repositoryService
.createProcessDefinitionQuery().orderAsc(
ProcessDefinitionQuery.PROPERTY_NAME).list();
Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();
for (ProcessDefinition pd : processDefinitions) {
String key = pd.getKey();
ProcessDefinition definition = map.get(key);
if ((definition == null)
|| (definition.getVersion() < pd.getVersion())) {
map.put(key, pd);
}
}
return new ArrayList(map.values());
}
@RequestMapping("/processInstanceView.do")
protected ModelMap processInstanceView(@RequestParam("id")String pdId) {
List<ProcessInstance> list = getProcessInstanceById(pdId.trim()==""?null:pdId);
return new ModelMap().addAttribute("pi", list);
}
/**
* 根据流程定义ID获取流程实例
*/
protected List<ProcessInstance> getProcessInstanceById(String pdId) {
System.out.println("getProcessInstanceById - pdId=" + pdId);
return executionService.createProcessInstanceQuery()
.processDefinitionId(pdId).list();
}
@RequestMapping("/processDiagramView.do")
public void processDiagramView(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String managemark = request.getParameter("managemark");
if (managemark.equals("view")) {
String id = request.getParameter("id");// 流程定义ID
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery().processDefinitionId(id)
.uniqueResult();
// 获取流程图
InputStream io = repositoryService.getResourceAsStream(
processDefinition.getDeploymentId(), processDefinition
.getImageResourceName());
if (io != null) {
byte[] bytes = new byte[1024 * 4];
int size = 0;
// 输出流程图
while ((size = io.read(bytes, 0, 1024 * 4)) != -1) {
response.getOutputStream().write(bytes, 0, size);
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
jBPM4.1 workflow sample (240个子文件)
all-wcprops 5KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 809B
all-wcprops 770B
all-wcprops 629B
all-wcprops 601B
all-wcprops 601B
all-wcprops 573B
all-wcprops 382B
all-wcprops 345B
all-wcprops 169B
all-wcprops 163B
all-wcprops 154B
all-wcprops 146B
server.bat 68B
hsql_manager.bat 58B
.classpath 2KB
style.css 3KB
.cvsignore 7B
.cvsignore 4B
datatypes.dtd 6KB
entries 5KB
entries 2KB
entries 2KB
entries 1KB
entries 1KB
entries 919B
entries 751B
entries 629B
entries 617B
entries 615B
entries 603B
entries 457B
entries 438B
entries 389B
entries 304B
entries 298B
entries 289B
empty.gif 8KB
1-1.gif 5KB
4-1.gif 5KB
3-1.gif 5KB
4-2.gif 4KB
2-1.gif 4KB
3-2.gif 4KB
1-2.gif 4KB
2-2.gif 4KB
DeployProcessController.java 5KB
ManagerTaskController.java 4KB
FillLeaveFormController.java 4KB
DissentServlet.java 4KB
User.java 2KB
UserBean.java 2KB
Leave.java 2KB
LeaveDaoImpl.java 2KB
UserDaoImpl.java 2KB
UserServiceImpl.java 1KB
LeaveServiceImpl.java 1022B
SessionBean.java 976B
UserHr.java 724B
LeaveService.java 519B
UserService.java 423B
UserDao.java 419B
LeaveDao.java 385B
workflow.JPG 163KB
FillLeaveForm.jsp 6KB
managerTaskList.jsp 2KB
deployProcess.jsp 2KB
processDefView.jsp 1KB
checkTask.jsp 1KB
processInstanceView.jsp 1KB
login.jsp 1KB
func_menu.jsp 1015B
processDiagramView.jsp 565B
failed.jsp 432B
head4.jsp 232B
head.jsp 232B
head3.jsp 232B
head2.jsp 232B
index.jsp 218B
func_detail.jsp 0B
test-jbpm4-db.lck 16B
test-jbpm4-db.log 1.16MB
tb_logon.png 191KB
logon000.png 114KB
logon002.png 100KB
leave.PNG 21KB
test.png 13KB
compatib.png 8KB
org.eclipse.core.resources.prefs 88B
.project 443B
logging.properties 637B
log4j.properties 514B
test-jbpm4-db.properties 436B
jbpm.mail.properties 72B
test-jbpm4-db.script 18KB
create_table.sql 376B
共 240 条
- 1
- 2
- 3
资源评论
- liuyf8103222014-07-18怎么下不了啊。是资料问题还是网站问题?
gjhuai
- 粉丝: 95
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功