Activiti explorer.war示例工程使用过程图解

工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

activiti官方提供了一个示例工程activiti-explorer.war,运行这个工程可以体验activiti的基本功能,了解工作流的基本使用。

本文中使用的是activiti-5.22.0的官方包,

下载地址

一、搭建开发环境

要运行示例工程,需要安装jdk8和tomcat。其中jdk需要jdk8或以上,tomcat我使用的是tomcat8,使用tomcat7时启动会报如下错误:

严重: Exception sending context initialized event to listener instance of class org.activiti.explorer.servlet.WebConfigurer
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoDataConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected org.activiti.engine.IdentityService org.activiti.explorer.conf.DemoDataConfiguration.identityService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'identityService' defined in class path resource [org/activiti/explorer/conf/ActivitiEngineConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.activiti.engine.IdentityService]: Factory method 'identityService' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngine' defined in class path resource [org/activiti/explorer/conf/ActivitiEngineConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.activiti.engine.ProcessEngine]: Factory method 'processEngine' threw exception; nested exception is java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngineFactoryBean': FactoryBean threw exception on object creation; nested exception is java.util.ServiceConfigurationError: org.activiti.engine.cfg.ProcessEngineConfigurator: org.activiti.management.jmx.JMXConfigurator not a subtype
  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
  at org.activiti.explorer.servlet.WebConfigurer.contextInitialized(WebConfigurer.java:40)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)
  at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020)
  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
  at java.base/java.lang.Thread.run(Thread.java:844)

不明白这个是什么原因造成的,但tomcat升级到8版本后可以正常启动.

二、运行示例工程

将 activiti-5.22.0 的官方包解压后复制其中的activiti-explorer.war到本地tomcat的webapps目录中,然后启动tomcat,浏览器中访问http://localhost:8080/activiti-explorer/,会出现如下的登录界面,可以使用默认的账户密码

kermit/kermit 进行登录

登录成功后,就可以在这个示例应用中体验activiti的基本功能。

三、示例工程功能演示

这个工程分为了四个功能模块:任务、流程、报表、管理

下面我按照一般的使用流程来讲解下这几个功能模块

1. 创建流程图

从工作流的定义,为了实现某个业务目标利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。可以知道使用工作流前我们需要先定义一个规则,在这里的规则指的就是流程图。

进入流程管理模块,按如下菜单选则新建一个流程模型

流程-->流程设计工作区 -->新建模型

然后在新的页面中绘制一个简单的请假流程并保存。绘制流程图时注意要在用户任务的属性中分配assignment为当前的登录人kermit,这样才能在代办中看到新的任务。

如下是新建好的请假流程

这样流程图就创建好了。

2. 部署流程图

画好的流程图经过部署后才可以使用。在流程设计工作区选定刚才新建的流程,处理模型选择部署,完成流程的部署

3. 启动流程

部署完成后就可以启动这个流程,创建任务。在"已部署流程定义"中选中刚部署的流程,点击"启动流程"就可以启动流程。流程启动后就会在“任务”模块的"代办任务"中出现一个新的任务"apply vacation",这就是我们在流程图中定义的第一个用户任务。

这里要注意如果在画流程图时没有指定用户任务的assignee属性,或者指定的不是当前登录人的id,这个任务就不会出现在登录人的代办任务中

4. 完成任务

在任务模块对任务进行操作。在代办列表中找到刚才启动流程产生的那个任务,点击完成任务,流程就会走到下一个节点,并创建一个manager agree的任务,再完成这个任务,刚才开启的流程就结束了。

5. 用户管理

在管理模块的用户选项卡下可以对用户进行管理。这里的用户可以作为流程图上配置的assignees,使用对应账号登录后就可以操作各自的任务。

四、数据持久化

需要注意的是这个示例工程默认使用的是h2数据库,数据没有持久化到硬盘上,所以如果关闭tomcat后刚才操作的所有数据都会丢失,如果需要把操作数据持久化到硬盘上,就需要配置数据库设置,让示例工程连接本机上的mysql数据库。需要以下两个步骤:

(1) 修改war包中的配置文件,activiti-explorer\WEB-INF\classes\db.properties中的内容为以下内容

db=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///activiti_explore
jdbc.username=root
jdbc.password=root

这样示例工程就连接上了本机上的mysql数据库

(2) 给该工程添加mysql的驱动jar包

该示例工程中是没有mysql的驱动的,所以这样配置后启动会报找不到数据库驱动的错误。复制一个驱动jar包到

activiti-explorer\WEB-INF\lib目录下,就完成添加。

重启tomcat,到数据库activiti_explore中查看,发现activiti自动了创建了需要的表结构,说明已经完成了数据持久化的配置。

五、总结

以上演示了如何使用activiti-5.22.0的示例工程 activiti-explorer.war如何使用。需要注意的是这个示例工程默认使用的是h2数据库,数据没有持久化到硬盘上,所以如果关闭tomcat后刚才操作的所有数据都会丢失。

如果需要把操作数据持久化到硬盘上,就需要配置数据库设置,让示例工程连接本机上的mysql数据库。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • android: targetSdkVersion升级中Only fullscreen activities can request orientation问题的解决方法

    前言 这几天同事跟我在升级Android target SDK和build tool版本的时候,碰到了一个非常搞笑的问题,基本可以算作是"坑"了!我在这里跟大家分享一下,希望对您有所帮助. 特征 当我们把targetSdkVersion升级到27,buildToolsVersion和相关的support library升级到27.0.1后,在Android 8.0(API level 26)上,部分Activity出现了一个莫名其妙的crash,异常信息如下: java.lang.Ru

  • Spring和activiti进行整合过程解析

    一.整合原理 activiti的配置文件本身就是一个spring的配置文件,但默认情况下只讲ProcessEngineConfiguration作为一个bean来使用,调用ProcessEngines.getDefaultProcessEngine()加载的就是配置文件中的这个bean.和spring整合后就可以把bean的管理让spring来进行,在代码中获取任意的bean. activiti提供了一个spring模块,在一个spring工程中引入这个模块就能够整合 <dependency>

  • Activiti开发环境的搭建过程详解

    本文中使用maven+eclipse搭建activiti-5.14的开发环境 一.创建maven工程 创建一个普通的java工程,pom文件的内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PO

  • SpringBoot2整合activiti6环境搭建过程解析

    这篇文章主要介绍了SpringBoot2整合activiti6环境搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d

  • SpringBoot整合Activiti7的实现代码

    Activiti7发布正式版之后,它与SpringBoot2.x已经完全支持整合开发.我们可以将Activiti7与SpringBoot整合开发的坐标引入到工程中,从而达到SpringBoot支持Activti7整合. 1.使用IDEA创建SpringBoot项目 在工程的pom.xml文件中引入相关的依赖,具体依赖如下所示 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht

  • Activiti流程引擎对象及配置原理解析

    流程引擎对象和其配置对象都是activiti的核心对象 一.activiti的简单使用流程 activiti在工作时,一般有以下几个步骤: 创建一个流程引擎配置对象ProcessEngineConfiguration对流程引擎进行配置 通过流程引擎配置对象来获取流程引擎对象ProcessEngine 通过流程引擎对象来部署流程图 启动流程 二.流程引擎配置对象ProcessEngineConfiguration的介绍 activiti用ProcessEngineConfiguration对象来配

  • 解决Springboot2.1.x配置Activiti7单独数据源问题

    1|1简介 最近基于最新的Activiti7配置了SpringBoot2. 简单上手使用了一番.发现市面上解决Activiti7的教程很少,采坑也比较多,在Activiti6配置数据源和Activiti7有所区别,基于Activiti6在Activiti7里是无法正常使用的.接下来让我们看下区别. 1|2问题 Activiti6多数据源配置 6的配置比较简单点. 先加入配置: # activiti 数据源 spring.datasource.activiti.driver=com.mysql.j

  • Activiti explorer.war示例工程使用过程图解

    工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档.信息或者任务. activiti官方提供了一个示例工程activiti-explorer.war,运行这个工程可以体验activiti的基本功能,了解工作流的基本使用. 本文中使用的是activiti-5.22.0的官方包, 下载地址 一.搭建开发环境 要运行示例工程,需要安装jdk8和tomcat.其中jdk需要jdk8或以上,tomcat我使用的是tomcat8,使用tomcat7时启动会

  • SpringCloud学习笔记之SpringCloud搭建父工程的过程图解

    目录 SpringCloud和SpringBoot版本选择 更详细的版本选择 相关技术选型 创建工程 创建父工程 新建maven工程 配置父工程的pom文件 SpringCloud是分布式微服务架构的一站式解决方案,十多种微服务架构落地技术的集合体,俗称微服务全家桶 SpringCloud和SpringBoot版本选择 自2019年以后官方建议使用2.0以后的版本 官网地址 在官网的页首可以看到最新版本以及对应的springboot版本 在官网可以看到官方推荐的springcloud与sprin

  • Springboot创建子父工程过程图解

    这篇文章主要介绍了Springboot创建子父工程过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.创建子父工程 2.添加pom配置文件 2.1 父工程pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo

  • jenkins配置python脚本定时任务过程图解

    这篇文章主要介绍了jekins配置python脚本定时任务过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.首先安装jekins环境,访问网页https://jenkins.io/zh/download/,下载长期稳定版如下: 2.下载安装包后直接运行,进行选择安装路径,傻瓜式安装.安装完成后,点Finished,弹出jekins输入密匙网页,根据网页提示路径,找到 对应的jekins密匙输入后,选择推荐插件安装即可.(也可以不安装插

  • Spring Cloud搭建eureka过程图解

    这篇文章主要介绍了Spring Cloud搭建eureka过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用 File - NewProject-Spring Initalizr 1.利用 https://start.spring.io 创建spring cloud eure

  • 基于Pycharm加载多个项目过程图解

    这篇文章主要介绍了基于Pycharm加载多个项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天在使用Pycharm工具练习Python时遇到一个疑问:在已存有项目A工程的前提下如何新建另一个项目B,且两者并存? 基本操作步骤: 在File下拉项中选择"New Project"弹出新界面点击"Pure Python"后创建即可,这是会弹出如图所示的提示框: 选择"Open in new win

  • Spring Boot运行部署过程图解

    这篇文章主要介绍了Spring Boot运行部署过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Main方法 直接运行启动类main方法 遵循应用程序入口点的Java约定的标准方法.我们的main方法SpringApplication通过调用委托给Spring Boot的类run. SpringApplication引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器.我们需要Example.class作为

  • springboot自定义starter实现过程图解

    这篇文章主要介绍了springboot自定义starter实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.创建一个Empty Project 2.在该工程中点击+,选择new module,新建一个maven工程 点击确定. 3.在该工程中点击+,选择new module,新建一个Spring Initializr工程 后面直接默认next,然后点击finishi. 两个都创建完毕之后点击apply,点击OK.得到如下结构: 4

  • SpringBoot配置类编写过程图解

    这篇文章主要介绍了SpringBoot配置类编写过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.编写properties文件 2.编写配置类 3.编译项目将target\classes\META-INF\spring-configuration-metadata.json文件copy到resources\META-INF目录 这样以达到配置文件中自动提示配置项 4.配置文件中配置 5.其他类中可自动注入使用 以上就是本文的全部内容,

  • String split方法实现过程图解

    这篇文章主要介绍了String split方法实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 String的split方法相信大家都不陌生,或多或少都用过它将字符串转成一个数组,但是就是这样一个简单的方法,里面也有一个不得不注意.不深不浅的小坑. 本地测试代码如下图所示: 图1 大家会发现split1跟split3的长度符合我们的预期,但是split2应该是长度为5,但实际长度却仍然为4.相信大家在遇到这种情况的时候, 应该能立马猜

随机推荐