1,流程定义(ProcessDefinition):对整个流程步骤的描述.,相当于我们在编程过程过程用到的类,是个抽象的概念.
2.流程实例(ProcessInstance)代表着流程定义的特殊执行例子,相当于我们常见的对象.他是类的特殊化.
最典型的属性就是跟踪当前节点的指针.
3.流程引擎(ProcessEngine), 服务接口可以从ProcessEngine中获得, 它是从Configuration构建的,如下:
ProcessEngine processEngine = new Configuration()
.buildProcessEngine();
从流程引擎中可以获得如下的服务:
RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService managementService = processEngine.getManagementService();
4.部署流程(Deploying a process):
RepositoryService包含了用来管理发布资源的所有方法,
如下可以发布流程定义.
String deploymentid = repositoryService.createDeployment()
.addResourceFromClasspath("*.jpdl.xml")
.deploy();
这个id的格式是(key)-{version}.
5.删除流程定义:
repositoryService.deleteDeployment(deploymentId);
可以用级联的方式,也可以remove
6.启动一个新的流程实例:
ProcessInstance processInstance = executionService.startProcessInstanceByKey("key");
如果启动指定版本的流程定义,用下面的方法:
ProcessInstance processInstance =executionService.startProcessInstanceById("ID");
7.使用变量
当一个新的流程实例启动时就会提供一组对象参数。 将这些参数放在variables变量里, 然后可以在流程实例创建和启动时使用。
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("customer", "John Doe");
variables.put("type", "Accident");
variables.put("amount", new Float(763.74));
ProcessInstance processInstance =
executionService.startProcessInstanceByKey("ICL", variables);
8.执行等待的流向:
当使用一个state活动时,执行(或流程实例) 会在到达state的时候进行等待,
直到一个signal(也叫外部触发器)出现。 signalExecution方法可以被用作这种情况。
执行通过一个执行id(字符串)来引用。
executionService.signalExecutionById(executionId);
9.TaskService任务服务:
TaskService的主要目的是提供对任务列表的访问途径。 例子代码会展示出如何为id为johndoe的
用户获得任务列表:
List<Task> taskList = taskService.findPersonalTasks("johndoe");