Activiti基础介绍-helloworld

   最近需要实现一个采用工作流来实现一个业务流程,下面是小编自己做的一个关于helloworld的实现流程
  一、配置文件:activiti.cfg.xml
        在工作流已经是一个很成熟的框架了,关于流程引擎配置需要在配置文件中完成映射,并且该文件是默认读取的:
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
</bean>  
 二、配置完流程文件,我们需要需要在数据库中创建创建工作流的23张表,这里采用XML创建:
         需要在 activiti.cfg.xml的bean processEngineConfiguration 创建数据库连接属性:
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/itcast0711?useUnicode=true&characterEncoding=utf8"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="123456"/>  
   建立好库连接之后,我们需要做最后一个设定,当数据库中的23张表不存在的时候我们需要创建,存在的时候就不能再创建了,这是我们需要做的是添加数据库更新属性:
<property name="databaseSchemaUpdate" value="true"></property> 
      这样我们的配置文件就写好了,因为  activiti.cfg.xml 自动识别,所以在程序运行的时候数据库表就会自动创建好。
三、画流程图:
         (1)在src/main/resources下的diagrams包下右键添加新的Activiti D iagram
          

         (2)这时候有一张空的流程图画板,我们需要在上面添加对象,对象需要在右面选择上拖入到左边画板即可:
          Activiti基础介绍-helloworld_第1张图片

        (3)在画流程图的时候还要设置节点的ID和name
        

        此外还需要在Main config里面设置节点操作者是个人还是团体,Assignee是单人操作,第三个为用户组操作
         Activiti基础介绍-helloworld_第2张图片

       (4)画好流程图后需要保存一下,就会生成一张png格式的图片:
         

 四、流程图建好之后我们就需要部署流程了:
public void deploymentProcessDefinition(){
        //与流程定义和部署对象相关的Service
        Deployment deployment = processEngine.getRepositoryService()
                        //创建一个部署对象
                        .createDeployment()
                        //添加部署的名称
                        .name("helloworld入门程序")
                        //从classpath的资源中加载,一次只能加载一个文件
                        .addClasspathResource("diagrams/helloworld.bpmn")
                        //从classpath的资源中加载,一次只能加载一个文件
                        .addClasspathResource("diagrams/helloworld.png")
                        //完成部署
                        .deploy();
        
    } 
 五、启动流程:
 public void startProcessInstance(){
        //获取流程第的key值,及流程图的ID
        String processDefinitionKey = "helloworld";
        //与正在执行的流程实例和执行对象相关的Service
        ProcessInstance pi = processEngine.getRuntimeService()
                //使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
                        .startProcessInstanceByKey(processDefinitionKey);
        System.out.println("流程实例ID:"+pi.getId());//流程实例ID    101
        System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID   helloworld:1:4
    }
 六、最后完成任务查询:
public void findMyPersonalTask(){
           
            String assignee ="王五";
            List<Task> list = processEngine.getTaskService()
                        .createTaskQuery()
                        .taskAssignee(assignee)
                        .list();
            
            if(list!=null && list.size()>0){
                for(Task task:list){
                    System.out.println("任务ID:"+task.getId());
                    System.out.println("任务名称:"+task.getName());         
                    System.out.println("任务的创建时间:"+task.getCreateTime());
                    System.out.println("任务的办理人:"+task.getAssignee());
                    System.out.println("流程实例ID:"+task.getProcessInstanceId());
                    System.out.println("执行对象ID:"+task.getExecutionId());
                    System.out.println("流程定义ID:"+task.getProcessDefinitionId());
                    System.out.println("########################################################");
                }
            }
        } 
总结:
工作流更多的是他的框架封装的特别好,对于开源的Activiti,我们可以很快的上手,这只是初级的demo,之后还会有更新,希望能够帮到大家!

你可能感兴趣的:(Activiti基础介绍-helloworld)