⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baoxiaobus.java

📁 jbpm3[1].1.4完整报销例子,jbpm3[1].1.4完整报销例子,jbpm3[1].1.4完整报销例子,
💻 JAVA
字号:
package com.business;

import java.sql.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.JbpmException;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.msg.Message;
import org.jbpm.msg.db.TextMessage;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
import org.springmodules.workflow.jbpm31.JbpmCallback;
import org.springmodules.workflow.jbpm31.JbpmTemplate;

import com.dao.DaoService;
import com.po.TbApprove;
import com.po.TbBaoxiao;
import com.po.TbBaoxiaoItem;
import com.po.TbUser;
import com.struts.form.ApproveForm;
import com.struts.form.BaixiaoitemForm;
import com.struts.form.BaoxiaoForm;
import com.struts.form.MessageForm;
import com.struts.form.TaskForm;
import com.workflow.util.Constants;

public class BaoxiaoBus {

	private DaoService daoService;

	private JbpmConfiguration jbpmConfiguration;
	public JbpmConfiguration getJbpmConfiguration() {
		return jbpmConfiguration;
	}

	public void setJbpmConfiguration(JbpmConfiguration jbpmConfiguration) {
		this.jbpmConfiguration = jbpmConfiguration;
	}

	public DaoService getDaoService() {
		return daoService;
	}

	public void setDaoService(DaoService daoService) {
		this.daoService = daoService;
	}
	
	
	public boolean save(Object obj)
	{
		BaoxiaoForm form=(BaoxiaoForm) obj;
		TbBaoxiao po=new TbBaoxiao();
		po.setBaoxiaoTitle(form.getBaoxiaotitle());
		po.setBaoxiaoFlag(new Byte("0"));
		po.setBaoxiaoMemo(form.getBaoxiaomemo());
		po.setBaoxiaoDate(new Date(System.currentTimeMillis()));
		String [] item=form.getItems();
		String [] money=form.getMoney();
		Set baoxiaoitme=new HashSet();
		for (int i = 0; i < item.length; i++) {
			TbBaoxiaoItem tbi=new TbBaoxiaoItem();
			tbi.setItemMoney(money[i]);
			tbi.setItemName(item[i]);
			tbi.setTbBaoxiao(po);
			baoxiaoitme.add(tbi);
		}
		po.setTbBaoxiaoItems(baoxiaoitme);
		TbUser tbuser=daoService.getUserDao().findById(Integer.parseInt(form.getUserid()));
		po.setTbUser(tbuser);
		boolean flag=daoService.getBaoxiaoDao().save(po);
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		ProcessDefinition pd=jbpmContext.getGraphSession().findLatestProcessDefinition("baoxiao");
		//如pd为空,则可能是未发布流程到数据库中.
		ProcessInstance pi=pd.createProcessInstance();
		System.out.println("tzh:after createProcessInstance()!");
		
		pi.getContextInstance().setVariable(Constants.ISSUE_USER, form.getUserid());
		TaskInstance ti=pi.getTaskMgmtInstance().createStartTaskInstance();
		//tzh:创建任务实例后会马上执行流程中的<tast>中的代码.如<task>中的<assignment>.
		//也就是说创建任务实例后会把<start-state name="start">中的<task name="填写报销单">任务给执行了.
		System.out.println("tzh:after createTaskInstance!");
		ti.setActorId(form.getUserid());
		ti.setVariable("baoxiaoId", po.getBaoxiaoId().toString());
		System.out.println("tzh:before TaskInstance.end(),开始一个流程,并设置一个任务实例!");
		ti.end();
		//tzh:在ti.end()这一方法中会去执行ManagerAssignment.java中的方法,设置下一次由哪此处理人员处理.
		//也就是说调用ti.end()后会把 <task-node name="部门主管审核">中的<task name="主管审核">任务给执行了.
		jbpmContext.close();
	
		return flag;
	}
	
	public Vector findTaskListByUserId(String userid)
	{
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		List temp=jbpmContext.getTaskMgmtSession().findTaskInstances(userid);
		//tzh:本方法只从JBPM_TASKINSTANCE表中查找"actorid_"为"userid"的任务实例.
		List gxlist=jbpmContext.getTaskMgmtSession().findPooledTaskInstances(userid);
		//tzh:本方法只从JBPM_TASKINSTANCE表中查找"isopen_"等于用户类型的值,且"actorid_"为"null"的任务实例.
		
		temp.addAll(gxlist);
		Vector userlist=new Vector();
		for (Iterator iter = temp.iterator(); iter.hasNext();) {
			TaskInstance el = (TaskInstance) iter.next();
			TaskForm form=new TaskForm();
			form.setActorId(el.getActorId());
			form.setDescription(el.getDescription());
			form.setTaskid(String.valueOf(el.getId()));
			form.setTaskname(el.getName());
			form.setDate(el.getCreate().toLocaleString());
			form.setTokenid(String.valueOf(el.getToken().getId()));
			userlist.add(form);
		}
		jbpmContext.close();
		return userlist;
	}
	
	public Vector findUseTaskListByUserId(String userid)
	{
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		List temp=daoService.getMyJbpmDao().findAllTaskInstanceByUserId(userid);
		Vector userlist=new Vector();
		for (Iterator iter = temp.iterator(); iter.hasNext();) {
			TaskInstance el = (TaskInstance) iter.next();
			TaskInstance tt=jbpmContext.getTaskMgmtSession().getTaskInstance(el.getId());
			if(!tt.getToken().getProcessInstance().hasEnded()&&el.getName().equals("填写报销单"))
			{
				TaskForm form=new TaskForm();
				form.setActorId(el.getActorId());
				form.setDescription(el.getDescription());
				form.setTaskid(String.valueOf(el.getId()));
				String baoxiaoid=(String) tt.getVariable("baoxiaoId");
				TbBaoxiao tb=daoService.getBaoxiaoDao().findById(Integer.parseInt(baoxiaoid));
				form.setTaskname(tb.getBaoxiaoTitle());
				form.setDate(el.getCreate().toLocaleString());
				form.setTokenid(String.valueOf(tt.getToken().getId()));
				userlist.add(form);
			}
		}
		jbpmContext.close();
		return userlist;
	}
	
	public Vector findUserMessageByUsername(String username)
	{
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		Vector mess=new Vector();
		List list=jbpmContext.getMessagingSession().findMessages(username);
		for (Iterator iter = list.iterator(); iter.hasNext();) {
			TextMessage el = (TextMessage) iter.next();
			MessageForm form=new MessageForm();
			form.setId(String.valueOf(el.getId()));
			form.setContext(el.getText());
			mess.add(form);
		}
		return mess;
	}
	
	public boolean pullTask(String taskid,String userid)
	{
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		try {
			TaskInstance ti=jbpmContext.getTaskInstance(Long.parseLong(taskid));
			ti.setActorId(userid);
			jbpmContext.close();
			return true;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return false;
	}
		
	public Object findBaoxiaoById(String tid)
	{
		JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
		if(jbpmContext==null)
		{
			jbpmContext=jbpmConfiguration.createJbpmContext();
		}
		TaskInstance ti=jbpmContext.getTaskInstance(Long.parseLong(tid));

		String baoiaoid=(String) ti.getVariable("baoxiaoId");
		TbBaoxiao bx=daoService.getBaoxiaoDao().findById(Integer.parseInt(baoiaoid));
		BaoxiaoForm form=new BaoxiaoForm();
		form.setBaoxiaodate(bx.getBaoxiaoDate().toString());
		form.setBaoxiaoflag(bx.getBaoxiaoFlag().toString());
		form.setBaoxiaoId(bx.getBaoxiaoId().toString());
		form.setBaoxiaomemo(bx.getBaoxiaoMemo());
		form.setBaoxiaotitle(bx.getBaoxiaoTitle());
		form.setUserid(bx.getTbUser().getUserId().toString());
		form.setUsername(bx.getTbUser().getUserName());
		String [] items =new String[bx.getTbBaoxiaoItems().size()];
		String []money=new String[bx.getTbBaoxiaoItems().size()];
		int i=0;
		int j=0;
		Vector baoxiaovc=new Vector();
		for (Iterator iter = bx.getTbBaoxiaoItems().iterator(); iter.hasNext();) {
			TbBaoxiaoItem el = (TbBaoxiaoItem) iter.next();
			BaixiaoitemForm biform=new BaixiaoitemForm();
			biform.setItemiame(el.getItemName());
			biform.setItemmoney(el.getItemMoney());
			baoxiaovc.add(biform);
			items[i++]=el.getItemName();
			money[j++]=el.getItemMoney();
		}
		form.setItems(items);
		form.setMoney(money);
		form.setBaoxiaoitem(baoxiaovc);
		jbpmContext.close();
		return form;
	}
	
	public boolean audit(Object obj,String tid)
	{
		
			ApproveForm form=(ApproveForm) obj;
			TbApprove approve=new TbApprove();
			approve.setApproveDate(new Date(System.currentTimeMillis()));
			approve.setApproveMemo(form.getMemo());
			
			String result="";
			if(form.getResult().equals("1"))
			{
				result="主管同意";
			}
			else if(form.getResult().equals("2"))
			{
				result="主管不同意";
			}
			else
			{
				result="要求修改";
			}
			System.out.println("============================"+result);
			approve.setApproveResult(result);
			TbBaoxiao baoxiao=daoService.getBaoxiaoDao().findById(Integer.parseInt(form.getBaoxiaoId()));
			approve.setTbBaoxiao(baoxiao);
			TbUser user=daoService.getUserDao().findById(Integer.parseInt(form.getUserid()));
			approve.setTbUser(user);
			daoService.getApproveDao().save(approve);
			JbpmContext jbpmContext=jbpmConfiguration.getCurrentJbpmContext();
			if(jbpmContext==null)
			{
				jbpmContext=jbpmConfiguration.createJbpmContext();
			}
			try {
			TaskInstance ti=jbpmContext.getTaskMgmtSession().getTaskInstance(Long.parseLong(tid));
			if(result=="主管同意"||result=="主管不同意")
			{
				ti.end("主管同意");
			}
			else
			{
				ti.end("要求修改");
			}
			
			return true;
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			jbpmContext.close();
		}
		return false;
	}
	
	public List findTaskInstance()
	{
		 Object obj=new JbpmTemplate().execute(new JbpmCallback(){
			public Object doInJbpm(JbpmContext jbpmContext) throws JbpmException {
				
				return null;
			}
		});
		return null;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -