jbpm自定义活动

一、流程图

jbpm自定义活动_第1张图片


二、代码实现

1>

[java]  view plain copy print ?
  1. package com.njupt.custom;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import org.jbpm.api.activity.ActivityExecution;  
  6. import org.jbpm.api.activity.ExternalActivityBehaviour;  
  7.   
  8. public class ExternalActivityBehaviourImpl implements ExternalActivityBehaviour {  
  9.   
  10.     // 到达活动后要执行的代码,这就是本活动的行为。  
  11.     // 默认是执行完后就使用默认的Transition离开本活动。  
  12.     @Override  
  13.     public void execute(ActivityExecution execution) throws Exception {  
  14.         System.out.println("---> ExternalActivityBehaviourImpl.execute()");  
  15.   
  16.         System.out.println("已经发短信通知所有员工.");  
  17.   
  18.         // // 使用默认的Transition离开本活动(这也是默认行为)  
  19.         // execution.takeDefaultTransition();  
  20.   
  21.         // 使用指定的Transition离开本活动  
  22.         // execution.take(transitionName);  
  23.   
  24.         // 在本活动等待,直到外部调用signalExecution()时才离开本活动  
  25.         execution.waitForSignal();  
  26.     }  
  27.   
  28.     // 在离开活动前会被调用的代码,本方法名如果叫做beforeSignal()就好理解了。  
  29.     // 在外部调用signalExecution()时,本方法才会执行。  
  30.     @Override  
  31.     public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {  
  32.         System.out.println("---> ExternalActivityBehaviourImpl.signal()");  
  33.     }  
  34.   
  35. }  

2>编写测试类

[java]  view plain copy print ?
  1. package com.njupt.custom;  
  2.   
  3. import java.io.InputStream;  
  4.   
  5. import org.jbpm.api.Configuration;  
  6. import org.jbpm.api.ProcessEngine;  
  7. import org.jbpm.api.ProcessInstance;  
  8. import org.junit.Test;  
  9.   
  10. public class ProcessTest {  
  11.   
  12.     private ProcessEngine processEngine = Configuration.getProcessEngine();  
  13.   
  14.     @Test  
  15.     public void test() throws Exception {  
  16.         // 1,部署流程定义  
  17.         InputStream in = getClass().getResourceAsStream("test.jpdl.xml");  
  18.         processEngine.getRepositoryService()//  
  19.                 .createDeployment()//  
  20.                 .addResourceFromInputStream("test.jpdl.xml", in)//  
  21.                 .deploy();  
  22.   
  23.         // 2,启动流程实例  
  24.         ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test");  
  25.     }  
  26.   
  27.     @Test  
  28.     public void testSingal() throws Exception {  
  29.         String executionId = "test.340007";  
  30.         processEngine.getExecutionService().signalExecutionById(executionId);  
  31.     }  
  32.   
  33. }  

你可能感兴趣的:(jbpm,自定义活动)