1.1 创建项目
1.2 添加Jar包
1.3 更改配置文件
1.3.1 连接数据库
1.3.2 Spring文件的配置
2 项目配置
applicationContext-dao.xml
<bean id="employeeDao" class="cn.itcast.ssh.dao.impl.EmployeeDaoImpl" parent="baseDao">
</bean>
<bean id="leaveBillDao" class="cn.itcast.ssh.dao.impl.LeaveBillDaoImpl" parent="baseDao">
</bean>
这里说明一下:
parent=”baseDao”等同于
<bean id="baseDao" abstract="true">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
applicationContext-service.xml
<bean id="employeeService" class="cn.itcast.ssh.service.impl.EmployeeServiceImpl">
<property name="employeeDao" ref="employeeDao"></property> <!-- 员工-->
</bean>
<bean id="leaveBillService" class="cn.itcast.ssh.service.impl.LeaveBillServiceImpl">
<property name="leaveBillDao" ref="leaveBillDao"></property> <!-- 请假单-->
</bean>
<bean id="workflowService" class="cn.itcast.ssh.service.impl.WorkflowServiceImpl">
<property name="repositoryService" ref="repositoryService"></property>
<property name="runtimeService" ref="runtimeService"></property>
<property name="taskService" ref="taskService"></property>
<property name="formService" ref="formService"></property>
<property name="historyService" ref="historyService"></property>
<property name="leaveBillDao" ref="leaveBillDao"></property>
</bean>
applicationContext-action.xml
<bean id="loginAction" class="cn.itcast.ssh.web.action.LoginAction" scope="prototype">
<property name="employeeService" ref="employeeService"></property>
</bean>
<bean id="leaveBillAction" class="cn.itcast.ssh.web.action.LeaveBillAction" scope="prototype">
<property name="leaveBillService" ref="leaveBillService"></property>
</bean>
<bean id="workflowAction" class="cn.itcast.ssh.web.action.WorkflowAction" scope="prototype"><!--MVC默认是单例,改为多例-->
<property name="workflowService" ref="workflowService"></property>
<property name="leaveBillService" ref="leaveBillService"></property>
</bean>
activiti-context.xml,配置activiti表和事物以及service 不用创建流程引擎 直接引入就可以
<!-- spring负责创建流程引擎的配置文件 -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置事务管理器,统一事务 -->
<property name="transactionManager" ref="transManager" />
<!-- 设置建表策略,如果没有表,自动创建表 -->
<property name="databaseSchemaUpdate" value="true" />
</bean>
<!-- 创建流程引擎对象 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!--
相当于下面的代码
RepositoryServicie repositoryService = processEngine.getRepositoryService();
RuntimeServicie repositoryService = processEngine.getRuntimeServicie();
TaskServicie taskServicie = processEngine.getTaskServicie();
HistoryServicie historyServicie = processEngine.getHistoryServicie();
-->
<!-- 由流程引擎对象,提供的方法,创建项目中使用的Activiti工作流的Service -->
<!--静态注入 定义processEngine可以点出来service
-->
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
struts的配置
<struts>
<!-- 配置模式为开发模式,自动加载struts.xml和显示错误提示信息 -->
<constant name="struts.devMode" value="true" />
<!-- 设置页面主题为简单主题,去掉struts2开发提供的样式 -->
<constant name="struts.ui.theme" value="simple" />
<package name="default" namespace="/" extends="struts-default">
<!-- 拦截器配置 -->
<interceptors>
<!-- 定义了一个用于拦截器登录的拦截器 -->
<interceptor name="loginInterceptor" class="cn.itcast.ssh.utils.LoginInteceptor"></interceptor>
<!-- 定义一个拦截器栈 -->
<interceptor-stack name="systemStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="loginInterceptor" />
</interceptor-stack>
</interceptors>
<!-- 定义系统默认拦截器 全局 -->
<default-interceptor-ref name="systemStack" />
<!-- 全局结果视图 -->
<global-results>
<result name="login" type="redirect">
login.jsp
</result>
</global-results>
<action name="loginAction_*" class="loginAction" method="{1}">
<result name="success">WEB-INF/views/main.jsp</result>
<result name="top">WEB-INF/views/top.jsp</result>
<result name="left">WEB-INF/views/left.jsp</result>
<result name="welcome">WEB-INF/views/welcome.jsp</result>
</action>
<action name="leaveBillAction_*" class="leaveBillAction" method="{1}">
<result name="home">WEB-INF/views/leaveBill/list.jsp</result>
<result name="input">WEB-INF/views/leaveBill/input.jsp</result>
<result name="save" type="redirectAction">
<param name="actionName">leaveBillAction_home.action</param>
</result>
</action>
<action name="workflowAction_*" class="workflowAction" method="{1}">
<result name="list" type="redirectAction">
<param name="actionName">workflowAction_deployHome.action</param>
</result>
<result name="deployHome">WEB-INF/views/workflow/workflow.jsp</result>
<result name="task">WEB-INF/views/workflow/task.jsp</result>
<result name="image">WEB-INF/views/workflow/image.jsp</result>
<result name="listTask" type="redirectAction">
<param name="actionName">workflowAction_listTask.action</param>
</result>
<result name="viewTaskForm" type="redirectAction">
<param name="actionName">/workflowAction_audit.action</param>
</result>
<result name="taskForm">WEB-INF/views/workflow/taskForm.jsp</result>
<result name="viewHisComment">WEB-INF/views/workflow/taskFormHis.jsp</result>
</action>
</package>
</struts>
配置数据库表
3 流程图