#删除数据库
 DROP DATABASE activiti
 #创建数据库
 CREATE DATABASE activiti DEFAULT CHARACTER SET utf8 ;
 #使用数据库
 USE activiti;
 #查看数据库表
 SHOW TABLES;单机版学习activiti-API
 1.环境搭建
 2.流程图设计
 3.流程部署一、设计流程图
 1.开始事件 结束事件
 2.任务task
 设置代办人:
 assigne流程图的id:就是流程的key3.activiti表达式${userName}
 4.activiti的监听器ProcessEnginer 流程引擎对象[核心对象]
二、发布流程图
 发布流程图,也可以叫着流程部署单文件部署 、 zip 压缩部署文件
deployment 部署
RepositoryService 仓库服务
Deployment 部署对象.
流程取名字:helloworld入门程序
 流程图中设置的ID值,可以理解成流程的key部署流程,activiti操作的表:
act_re_deployment 部署对象表,存放流程定义的显示名和部署时间,没部署一次增加一条记录.
 其中的’name’字段的值,就是我们在部署流程的时候设置的name的值act_re_procdef 流程定义表 key_ 就是我们画流程图的时候设置流程图的ID的值
act_ge_bytearray 资源文件表代码:
 /**• 部署流程
 */
 public class Demo01 {
 public static void main(String[] args) {
 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 Deployment deployment = processEngine.getRepositoryService().createDeployment()
 .addClasspathResource(“diagram/HelloWorld.bpmn”)
 .addClasspathResource(“diagram/HelloWorld.png”)
 .name(“hellworld入门程序”).key(“myprocess”).deploy();System.out.println("流程部署的name:"+deployment.getName());
 System.out.println("流程部署的ID:"+deployment.getId());
 System.out.println("流程部署key:"+deployment.getKey());}
 }相关名称:
1.相关概念:
 1.流程定义----创建.bpmn流程文件
 使用 activiti 流程建模工具(activity-designer)定义业务流程(.bpmn 文件) 。
 .bpmn 文件就是业务流程定义文件,通过 xml 定义业务流程
 2.流程定义部署 -----好比java中创建一个类
 使用 activiti 提供的 api 向 activiti 中部署.bpmn 文件3.启动流程实例----->好比java中创建一个对象

	启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请
	假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影
	响,就好比定义一个 java 类,实例化两个对象一样,部署的流程就好比 java 类,启动一个流程
	实例就好比 new 一个 java 对象。三、启动流程实例
流程定义的key来启动一个流程【流程定义的key就是我们画流程图,给流程图设置的ID的值,在act_re_procdef表中字段’key_’】
ProcessEngine对象获取RuntimeService服务对象,得到一个ProcessInstance实例对象.
启动一个流程实例会涉及的表:
act_hi_procinst 流程实例历史表 【这个表的ID 就是流程当前流程实例的ID】act_ru_execution 流程实例的执行对象表 [这个表中的proc_inst_id 字段记录流程实例ID,
 同时有一个字段很关键business_key,和我们也为进行关联,从而业务和工作流进行关联]act_ru_task 当前活动(节点)任务表。默认act_ru_task 和 act_ru_execution 是一对一的关系
/**
• 启动流程
 */
 public class Demo02 {
 public static void main(String[] args) {
 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 ProcessInstance processInstance = processEngine.getRuntimeService()
 .startProcessInstanceByKey(“helloworld”);//根据流程定义的key ,启动一个流程实例.System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
 System.out.println("流程实例ID:"+processInstance.getProcessInstanceId());}
 }三、查看任务
TaskService 任务对象
 根据代表人查询当前个人任务任务返回可以 是集合 或者是单个任务.
 还有根据条件查询、排序等操作操作的表:act_re_task表
 /**• 查询个人任务
 */
 public class Demo03 {
public static void main(String[] args) {
 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee("小乔").list();

 if(list !=null && list.size()>0){
     for (Task task : list) {
         System.out.println("任务ID:"+task.getId());
         System.out.println("流程定义ID:"+task.getProcessDefinitionId());
 		System.out.println("流程实例ID:"+task.getProcessInstanceId());
         System.out.println("代办人:"+task.getAssignee());
 		System.out.println("执行对象ID:"+task.getExecutionId());
         System.out.println("任务创建时间:"+task.getCreateTime());
         System.out.println("任务名称:"+task.getName());
     }
 }}
}
任务ID:2505
 流程定义ID:helloworld:1:4
 流程实例ID:2501
 代办人:小乔
 执行对象ID:2502
 任务创建时间:Sat Aug 08 10:07:18 CST 2020
 任务名称:提交申请/*
流程实例ID
 查看这个表:act_hi_procinst 流程实例历史表 中的ID字段
 或者act_run_execution 流程实例的执行对象表中的proc_inst_id 字段
 或者act_ru_task 当前活动(节点)任务表 中proc_inst_id流程定义ID:
 查看 act_re_procdef表ID流程定义的key:
 查看 act_re_procdef表key ,其实就是画流程图给流程图设置的全局ID的值。任务ID:查看act_ru_task表中的ID
 */四、完成任务
 根据任务ID 完成任务/**
• 完成任务
 */
 public class Demo04 {
 public static void main(String[] args) {
 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
 processEngine.getTaskService()
 .complete(“7502”);
 System.out.println(“完成任务~~~~~~~~~~~~~~~~~~~~~~~~~~”);
 }
 }act_ru_task` 这个表只记录当前任务。当前任务完成就会删除,然后记录下一次任务作为当前任务。
查看历史任务 act_hi_task 历史任务表记录任务执行情况
/*
act_re_deployment 部署对象表,存放流程定义的显示名和部署时间,没部署一次增加一条记录. 其中的’name’字段的值,就是我们在部署流程的时候设置的name的值
act_re_procdef 流程定义表 key_ 就是我们画流程图的时候设置流程图的ID的值
act_ge_bytearray *//*
act_hi_procinst 流程实例历史表
act_ru_execution 流程实例的执行对象表
act_ru_task 当前活动(节点)任务表。默认act_ru_task 和 act_ru_execution 是一对一的关系
act_hi_task 历史任务表记录任务执行情况
*/
RepositoryService 管理流程定义
 RuntimeService 执行管理、包括启动、推进、删除流程实例等操作
 TaskService 任务管理器HistoryService 历史管理(执行完成的数据的管理)
 IdentityService 组织机构管理
 FormService 一个可选服务,任务表单管理五、zip打包部署流程图文件
 /**• 部署一个流程会涉及的表:
act_re_deployment  部署信息act_re_procdef     流程定义的一些信息  需要关注流程定义的key。其实就是bpmn 文件的idact_ge_bytearray   流程定义的bpmn文件及png文件*/
 public class ActivitiDeloyement {
 public static void main(String[] args) {
 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();

    //通过zip压缩包文件进行部署
   /* InputStream inputStream = ActivitiDeloyement.class
            .getClassLoader().getResourceAsStream("holiday.zip");
    ZipInputStream zipInputStream = new ZipInputStream(inputStream);

    repositoryService.createDeployment().addZipInputStream(zipInputStream).name("请假流程").deploy();*/
    Deployment deployment = repositoryService.createDeployment()
                            .addClasspathResource("diagrams/holiday.bpmn")
                            .addClasspathResource("diagrams/holiday.png")
                            .name("请假流程").
                            deploy();

    System.out.println("流程部署id:"+deployment.getId());
    System.out.println("流程部署名称:"+deployment.getName());
}}