- package test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.jbpm.JbpmConfiguration;
- import org.jbpm.JbpmContext;
- import org.jbpm.graph.def.ProcessDefinition;
- import org.jbpm.graph.exe.ProcessInstance;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import po.Document;
- /**
- * 部署流程
- * @author Administrator
- *
- */
- public class DeployProcess {
- static JbpmConfiguration jbpmConfiguration = null;
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- jbpmConfiguration = JbpmConfiguration.getInstance();
- }
- /**
- * 流程部署
- */
- @Test
- public void deploy(){
- ProcessDefinition pd = ProcessDefinition.parseXmlResource("processdefinition_1.xml");
- JbpmContext jbpmCtx = jbpmConfiguration.createJbpmContext();
- jbpmCtx.deployProcessDefinition(pd);
- jbpmCtx.close();
- }
- /**
- * 公文綁定流程 流程對應公文
- */
- @Test
- public void testBd(){
- Configuration cfg = new Configuration().configure();
- SessionFactory sf = cfg.buildSessionFactory();
- Session session = sf.openSession();
- JbpmContext jbpmCtx = jbpmConfiguration.createJbpmContext();
- jbpmCtx.setSessionFactory(sf);
- //jbpmCtx.getSession().beginTransaction();
- Document doc = new Document();
- doc.setDay(5);
- doc.setReason("北風請假");
- doc.setUname("北風");
- jbpmCtx.getSession().save(doc);
- //創建流程實例
- ProcessDefinition pd = jbpmCtx.getGraphSession().findLatestProcessDefinition("北風請假");
- ProcessInstance pe = new ProcessInstance(pd);
- jbpmCtx.save(pe);
- //公文設置流程實例ID (公文綁定流程)
- doc.setProcessInstanceID(pe.getId());
- //流程對應哪個公文?
- pe.getContextInstance().createVariable("document", doc.getDocID());
- jbpmCtx.close();
- }
- /**
- *
- */
- @Test
- public void testSubmit(){
- JbpmContext context = jbpmConfiguration.createJbpmContext();
- Configuration cfg = new Configuration().configure();
- SessionFactory sf = cfg.buildSessionFactory();
- context.setSessionFactory(sf);
- //取到公文
- Document doc = (Document)context.getSession().load(Document.class, 14);
- //得到公文對應的流程實例ID
- System.out.println(doc.getProcessInstanceID());
- //得到流程實例
- ProcessInstance processInstance = context.getProcessInstance(doc.getProcessInstanceID());
- //提交申請
- processInstance.getRootToken().signal();
- context.close();
- }
- public void findCurrentNode(){
- }
- }