对近期“工作流”方面的一些总结
2010-12-21 11:51
323 查看
工作流有四个重要组成部分:
1.物件:也称实体或资源,是工作流程中的“被关注或被操作的对象”。在一个公文审批流程中,公文就是物件。在休假申请流程中,假条就是物件。
2.参与者:是流程中各个步骤上的负责人。它可能是具体的人也可能是某个部门或自动化设备。
3.流程定义:对整个流程一个描述,指明流程应该按照怎样的方式一步步推进执行。
4.工作流引擎:根据流程定义驱动参与者从一个流程到下一下流程的一套机制。
关于Activiti中一些概念的解释:
首先:对于Task来说,它指的是当前正等待执行的Activity,也就是一个进行中的流程所处的当前节点。所以Task表中是没有结束时间的,一旦这个Task完成,它就不再是一个Task,它将从Task表中删除。而在activity_instance表中则会出现一条新记录,用于记录刚刚完成的那个task,也就是说对于每个activity,只要执行一次就会生成一个instance,这与process的处理机制是一至的.
activiti支持任何类型的变量以序列化的方式存入数据库,下次可以通过反系列化取出。也就是说你可以将任何对象做为变量存入activiti的数据库,下次使用时能从数据库中直接该对像取出。
对于Activiti查询性能的担忧:
Activiti的实体类只存储关联对象的ID,如果需要得到关联对象时,需要获得ID后重新通过Query查询。如果需要返回一组集合时,就有可能生成N条sql,这与hibernate中存在的N+1次查询非常相似。
例如:想要得到一个ProcessInstance的name,只能从ProcessDefinition中获得:
org.activiti.engine.repository.ProcessDefinition processDefinition =
repositoryService.createProcessDefinitionQuery().processDefinitionId(activitiProcessInstance.getProcessDefinitionId()).singleResult();
processInstance.setName(processDefinition.getName());
而想要得到一个ProcessInstance当前Task的名字,只能从Task中获得:
String executionId = activitiProcessInstance.getId();
org.activiti.engine.task.Task currentTask = taskService.createTaskQuery().executionId(executionId).singleResult();
processInstance.setCurrentTaskName(currentTask.getName());
1.物件:也称实体或资源,是工作流程中的“被关注或被操作的对象”。在一个公文审批流程中,公文就是物件。在休假申请流程中,假条就是物件。
2.参与者:是流程中各个步骤上的负责人。它可能是具体的人也可能是某个部门或自动化设备。
3.流程定义:对整个流程一个描述,指明流程应该按照怎样的方式一步步推进执行。
4.工作流引擎:根据流程定义驱动参与者从一个流程到下一下流程的一套机制。
关于Activiti中一些概念的解释:
首先:对于Task来说,它指的是当前正等待执行的Activity,也就是一个进行中的流程所处的当前节点。所以Task表中是没有结束时间的,一旦这个Task完成,它就不再是一个Task,它将从Task表中删除。而在activity_instance表中则会出现一条新记录,用于记录刚刚完成的那个task,也就是说对于每个activity,只要执行一次就会生成一个instance,这与process的处理机制是一至的.
activiti支持任何类型的变量以序列化的方式存入数据库,下次可以通过反系列化取出。也就是说你可以将任何对象做为变量存入activiti的数据库,下次使用时能从数据库中直接该对像取出。
对于Activiti查询性能的担忧:
Activiti的实体类只存储关联对象的ID,如果需要得到关联对象时,需要获得ID后重新通过Query查询。如果需要返回一组集合时,就有可能生成N条sql,这与hibernate中存在的N+1次查询非常相似。
例如:想要得到一个ProcessInstance的name,只能从ProcessDefinition中获得:
org.activiti.engine.repository.ProcessDefinition processDefinition =
repositoryService.createProcessDefinitionQuery().processDefinitionId(activitiProcessInstance.getProcessDefinitionId()).singleResult();
processInstance.setName(processDefinition.getName());
而想要得到一个ProcessInstance当前Task的名字,只能从Task中获得:
String executionId = activitiProcessInstance.getId();
org.activiti.engine.task.Task currentTask = taskService.createTaskQuery().executionId(executionId).singleResult();
processInstance.setCurrentTaskName(currentTask.getName());
相关文章推荐
- 关于工作流设计方面的一些经验总结
- 近期学习javascript和jquery遇到一些问题的技巧知识总结
- 关于HR工作流的一些总结
- 近期工作中遇到的一些问题总结
- 总结一些近期反思的问题
- 近期Qt编程的一些总结
- 关于近期面试的一些总结
- 近期的一些总结和安排
- 近期学习javascript和jquery遇到一些问题的技巧知识总结
- 一些asp.net方面的工作流资料
- 提供下载:一些asp.net方面的工作流资料
- 7个方面总结:审批工作流设计
- 近期对提高java代码质量的一些经验总结
- web安全方面的一些小总结
- 近期学习javascript和jquery遇到一些问题的技巧知识总结
- 工作流方面的一些牛人
- 测试方面的一些自己的总结
- 准备近期写一些TAPI/TSP开发的有关的文章,希望弥补国内在这方面的空白
- 转“近期nodejs-web开发的一些总结”,大家都差不多
- 关于这两天看CBR方面的论文的一些总结