`
weiwu83
  • 浏览: 191332 次
  • 来自: ...
社区版块
存档分类
最新评论

基于开源工作流引擎OSWorkflow的业务系统实例——请假审批系统2

阅读更多
java 代码
  1. package com.qiny.leave;   
  2.   
  3. import java.util.Map;   
  4. import com.opensymphony.module.propertyset.PropertySet;   
  5. import com.opensymphony.workflow.FunctionProvider;   
  6. import com.opensymphony.workflow.spi.WorkflowEntry;   
  7.   
  8. import com.qiny.dao.LeaveDAO;   
  9. import org.apache.log4j.Logger;   
  10.   
  11. public class ApplyFunction implements FunctionProvider {   
  12.   
  13.   private static Logger logger = (Logger) Logger.getInstance(ApplyFunction.class);   
  14.   
  15.   public void execute(Map transientVars, Map args, PropertySet ps) {   
  16.     logger.info("execute ......");   
  17.     WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry");   
  18.     long wfid = entry.getId();   
  19.     int actionId = ((Integer) transientVars.get("actionId")).intValue();   
  20.     logger.info("execute actionId=" + actionId);   
  21.     String applicant = (String) transientVars.get("applicant");   
  22.     String reason = (String) transientVars.get("reason");   
  23.     int dayCount = ((Integer) transientVars.get("dayCount")).intValue();   
  24.     LeaveApply leaveApply = new LeaveApply(applicant, reason, dayCount);   
  25.     leaveApply.setWfid(wfid);   
  26.     LeaveDAO leaveDao = new LeaveDAO();   
  27.     leaveDao.addLeaveApply(leaveApply);   
  28.     ps.setInt("dayCount", dayCount);   
  29.     logger.info("execute leaveDao has added leaveApply!");   
  30.   }   
  31. }   
  32.   
  33.   
  34.   
  35.   
  36. package com.qiny.leave;   
  37.   
  38. import java.util.Map;   
  39. import com.opensymphony.module.propertyset.PropertySet;   
  40. import com.opensymphony.workflow.FunctionProvider;   
  41. import com.opensymphony.workflow.spi.WorkflowEntry;   
  42.   
  43. import com.qiny.dao.LeaveDAO;   
  44. import org.apache.log4j.Logger;   
  45.   
  46. public class ApproveFunction implements FunctionProvider {   
  47.   
  48.   private static Logger logger = (Logger) Logger.getInstance(ApproveFunction.class);   
  49.   
  50.   public void execute(Map transientVars, Map args, PropertySet ps) {   
  51.     logger.info("execute ......");   
  52.     WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry");   
  53.     long wfid = entry.getId();   
  54.     int actionId = ((Integer) transientVars.get("actionId")).intValue();   
  55.     logger.info("execute actionId=" + actionId);   
  56.     int applyID = ((Integer) transientVars.get("applyID")).intValue();   
  57.     String approver = (String) transientVars.get("approver");   
  58.     int opinion = ((Integer) transientVars.get("opinion")).intValue();   
  59.     LeaveApprove LeaveApprove = new LeaveApprove(applyID, approver, opinion);   
  60.     LeaveDAO leaveDao = new LeaveDAO();   
  61.     leaveDao.addLeaveApprove(LeaveApprove);   
  62.     ps.setInt("opinion", opinion);   
  63.     logger.info("execute leaveDao has added leaveApprove!");   
  64.   }   
  65. }   
  66.   
  67.   
  68. package com.qiny.leave;   
  69.   
  70. public class LeaveApply {   
  71.   
  72.   private int applyID; //申请ID 主键   
  73.   private String applicant; //申请人   
  74.   private String reason; //原因   
  75.   private String applyTime; //申请时间,为简单起见用字符串表示   
  76.   private int dayCount; //申请天数,在某种业务逻辑下,用作流程判断   
  77.   private long wfid; //所属工作流实例id   
  78.   
  79.   public LeaveApply(){   
  80.   }   
  81.   
  82.   public LeaveApply(String applicant,String reason,int dayCount){   
  83.     this.applicant = applicant;   
  84.     this.reason = reason;   
  85.     this.dayCount = dayCount;   
  86.   }   
  87.   
  88.   public int getApplyID() {   
  89.     return applyID;   
  90.   }   
  91.   
  92.   public String getApplicant() {   
  93.     return applicant;   
  94.   }   
  95.   
  96.   public String getReason() {   
  97.     return reason;   
  98.   }   
  99.   
  100.   public String getApplyTime() {   
  101.     return applyTime;   
  102.   }   
  103.   
  104.   public int getDayCount() {   
  105.     return dayCount;   
  106.   }   
  107.   
  108.   public long getWfid() {   
  109.     return wfid;   
  110.   }   
  111.   
  112.   public void setApplyID(int applyID) {   
  113.     this.applyID = applyID;   
  114.   }   
  115.   
  116.   public void setApplicant(String applicant) {   
  117.     this.applicant = applicant;   
  118.   }   
  119.   
  120.   public void setReason(String reason) {   
  121.     this.reason = reason;   
  122.   }   
  123.   
  124.   public void setApplyTime(String applyTime) {   
  125.     this.applyTime = applyTime;   
  126.   }   
  127.   
  128.   public void setDayCount(int dayCount) {   
  129.     this.dayCount = dayCount;   
  130.   }   
  131.   
  132.   public void setWfid(long wfid) {   
  133.     this.wfid = wfid;   
  134.   }   
  135.   
  136. }   
  137.   
  138.   
  139. package com.qiny.leave;   
  140.   
  141. public class LeaveApprove {   
  142.   
  143.   private int applyID;  //申请id   
  144.   private String approver;  //批准人   
  145.   private String approveTime;  //批准时间,简单起见用字符串表示   
  146.   private int opinion;  //意见 1:批准; 2:拒绝   
  147.   
  148.   public LeaveApprove(){   
  149.   }   
  150.   
  151.   public LeaveApprove(int applyID,String approver,int opinion){   
  152.     this.applyID = applyID;   
  153.     this.approver = approver;   
  154.     this.opinion = opinion;   
  155.   }   
  156.   
  157.   public String getOpinionString(){   
  158.     return opinion == 1 ? "批准" : "拒绝";   
  159.   }   
  160.   
  161.   public int getApplyID() {   
  162.     return applyID;   
  163.   }   
  164.   
  165.   public String getApprover() {   
  166.     return approver;   
  167.   }   
  168.   
  169.   public String getApproveTime() {   
  170.     return approveTime;   
  171.   }   
  172.   
  173.   public int getOpinion() {   
  174.     return opinion;   
  175.   }   
  176.   
  177.   public void setApplyID(int applyID) {   
  178.     this.applyID = applyID;   
  179.   }   
  180.   
  181.   public void setApprover(String approver) {   
  182.     this.approver = approver;   
  183.   }   
  184.   
  185.   public void setApproveTime(String approveTime) {   
  186.     this.approveTime = approveTime;   
  187.   }   
  188.   
  189.   public void setOpinion(int opinion) {   
  190.     this.opinion = opinion;   
  191.   }   
  192.   
  193.   
  194. }   
  195.   
  196.   
  197.   
  198.   
  199. package com.qiny.dao;   
  200.   
  201. import java.util.List;   
  202. import java.util.ArrayList;   
  203.   
  204. import java.sql.Connection;   
  205. import java.sql.Statement;   
  206. import java.sql.ResultSet;   
  207. import java.sql.SQLException;   
  208. import javax.sql.DataSource;   
  209.   
  210. import javax.naming.InitialContext;   
  211. import javax.naming.NamingException;   
  212.   
  213. import com.qiny.leave.LeaveApply;   
  214. import com.qiny.leave.LeaveApprove;   
  215.   
  216. public class LeaveDAO {   
  217.   
  218.   protected static DataSource ds = null;   
  219.   
  220.   public LeaveDAO() {   
  221.     if (ds == null) {   
  222.       try {   
  223.         InitialContext ic = new InitialContext();   
  224.         ds = (DataSource) ic.lookup("java:JSQLConnectDB_LeaveApply");   
  225.       } catch (NamingException ne) {   
  226.         throw new RuntimeException("NamingException while looking");   
  227.       }   
  228.     }   
  229.   }   
  230.   
  231.   public void addLeaveApply(LeaveApply leaveApply) {   
  232.     try {   
  233.       String exeSql = ""  
  234.           + " INSERT INTO bus_leaveApply (applicant,reason,applyTime,dayCount,wfid)"  
  235.           + " VALUES ('" + leaveApply.getApplicant() + "','" + leaveApply.getReason()   
  236.           + " ',CONVERT(VARCHAR(20),GETDATE(),121 ),'" + leaveApply.getDayCount()   
  237.           + " '," + leaveApply.getWfid() + ")";   
  238.       Connection connection = ds.getConnection();   
  239.       Statement statement = connection.createStatement();   
  240.       statement.execute(exeSql);   
  241.       statement.close();   
  242.       connection.close();   
  243.     } catch (SQLException ex) {   
  244.       throw new RuntimeException("DAO addLeaveApply failed!\n" + ex.getMessage());   
  245.     }   
  246.   }   
  247.   
  248.   public void addLeaveApprove(LeaveApprove leaveApproval) {   
  249.     try {   
  250.       String exeSql = ""  
  251.           + " INSERT INTO bus_leaveApprove (applyID,approver,approveTime,opinion)"  
  252.           + " VALUES ('" + leaveApproval.getApplyID() + "','" + leaveApproval.getApprover()   
  253.           + " ',CONVERT(VARCHAR(20),GETDATE(),121 )," + leaveApproval.getOpinion() + ")";   
  254.       Connection connection = ds.getConnection();   
  255.       Statement statement = connection.createStatement();   
  256.       statement.execute(exeSql);   
  257.       statement.close();   
  258.       connection.close();   
  259.     } catch (SQLException ex) {   
  260.       throw new RuntimeException("DAO addLeaveApprove failed!\n" + ex.getMessage());   
  261.     }   
  262.   }   
  263.   
  264.   public LeaveApply getLeaveApply(long wfid) {   
  265.     LeaveApply leaveApply = new LeaveApply();   
  266.     try {   
  267.       String querySql = ""  
  268.           + " SELECT applyID,applicant,reason,applyTime,dayCount,wfid "  
  269.           + " FROM bus_leaveApply WHERE wfid=" + wfid;   
  270.       Connection connection = ds.getConnection();   
  271.       Statement statement = connection.createStatement();   
  272.       ResultSet rs = statement.executeQuery(querySql);   
  273.       if (rs.next()) {   
  274.         leaveApply.setApplyID(rs.getInt("applyID"));   
  275.         leaveApply.setApplicant(rs.getString("applicant"));   
  276.         leaveApply.setReason(rs.getString("reason"));   
  277.         leaveApply.setApplyTime(rs.getString("applyTime"));   
  278.         leaveApply.setDayCount(rs.getInt("dayCount"));   
  279.         leaveApply.setWfid(rs.getLong("wfid"));   
  280.       }   
  281.       rs.close();   
  282.       statement.close();   
  283.       connection.close();   
  284.     } catch (SQLException ex) {   
  285.       throw new RuntimeException("DAO getLeaveApply failed!\n" + ex.getMessage());   
  286.     }   
  287.     return leaveApply;   
  288.   }   
  289.   
  290.   public List getLeaveAprovals(int applyID) {   
  291.     List approvals = new ArrayList();   
  292.     try {   
  293.       String querySql = ""  
  294.           + " SELECT applyID,approver,approveTime,opinion "  
  295.           + " FROM bus_leaveApprove WHERE applyID=" + applyID;   
  296.       Connection connection = ds.getConnection();   
  297.       Statement statement = connection.createStatement();   
  298.       ResultSet rs = statement.executeQuery(querySql);   
  299.       while (rs.next()) {   
  300.         LeaveApprove leaveApproval = new LeaveApprove();   
  301.         leaveApproval.setApplyID(rs.getInt("applyID"));   
  302.         leaveApproval.setApprover(rs.getString("approver"));   
  303.         leaveApproval.setApproveTime(rs.getString("approveTime"));   
  304.         leaveApproval.setOpinion(rs.getInt("opinion"));   
  305.         approvals.add(leaveApproval);   
  306.       }   
  307.       rs.close();   
  308.       statement.close();   
  309.       connection.close();   
  310.     } catch (SQLException ex) {   
  311.       throw new RuntimeException("DAO getLeaveAprovals failed!\n" + ex.getMessage());   
  312.     }   
  313.     return approvals;   
  314.   }   
  315.   
  316. }   
  317.   
分享到:
评论
1 楼 peantf 2008-06-06  
能不能给点详细的说明啊.都不怎么明白...... 

相关推荐

    OSWorkflow——请假审批系统(代码全,数据库mysql)

    这个开源项目为开发者提供了灵活的工作流定义和执行能力,使得在系统中实现如请假审批这样的业务流程变得简单。在这个"OSWorkflow——请假审批系统(代码全,数据库mysql)"中,我们能看到一个基于OSWorkflow实现的请假...

    OsWorkflow工作流实例

    OsWorkflow是一款开源的工作流引擎,它为应用程序提供了一种灵活且可扩展的方式来管理业务流程。在本实例中,我们将深入探讨OsWorkflow的核心概念、主要功能以及如何创建和测试一个工作流实例。 工作流引擎是软件...

    osworkflow eclipse+mysql 请假审批流程 完整示例

    这个示例提供了一个完整的osworkflow与Eclipse结合的请假审批流程,它不仅展示了osworkflow的工作流管理能力,还演示了如何将工作流引擎与实际业务逻辑相结合,为实际的企业应用提供了参考。通过学习和实践这个示例...

    OSworkFlow工作流请假流程实例

    OSworkflow(OpenSymphony Workflow)是一个开源的工作流管理系统,它提供了强大的流程定义和执行的能力,广泛应用于企业级应用中,如请假流程等业务场景。在本实例中,我们将深入探讨如何利用OSworkflow来实现一个...

    OSWorkFlow 请假实例

    OSWorkFlow是一个强大的工作流引擎,它在IT领域中被广泛应用来实现业务流程自动化。工作流,简单来说,就是一系列相互关联的任务,按照特定的顺序执行,以完成一个业务过程。OSWorkFlow作为开源的工作流解决方案,为...

    osworkflow请假实例

    osWorkflow(简称OSW)是一个开源的工作流引擎,它允许开发者在应用程序中定义、管理和执行工作流程。这个实例是基于OSW的请假申请流程,使用了Tomcat 6.0作为应用服务器,Oracle数据库作为数据存储,并且可以方便地...

    工作流 osworkflow 例子和原理

    OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...

    yy.rar_DEMO_demo osworkflow_流程引擎_请假流程引擎

    标题提到的"yy.rar_DEMO_demo osworkflow_流程引擎_请假流程引擎"是一个基于osWorkflow的工作流引擎的演示项目,专门设计用来展示如何实现请假流程。osWorkflow是一款开源的工作流引擎,它允许开发者定义、执行和...

    基于osworkflow框架的OA系统demo

    通过基于osworkflow的OA系统DEMO,我们可以学习到如何利用工作流引擎实现业务流程自动化,提高办公效率。同时,osworkflow的灵活性和强大功能,使其成为构建复杂OA系统时的理想选择。理解并掌握osworkflow的使用,...

    Osworkflow 入门级例子

    Osworkflow 是一个开源的工作流引擎,它为应用程序提供了一种灵活的方式来管理业务流程。这个入门级的例子将带你了解 Osworkflow2.8 的基本概念和如何在项目中简单地实现工作流。 Osworkflow 提供了一个强大的框架...

    osworkflow开发指南

    2. **osWorkFlow架构**:了解osWorkFlow的设计原理和组件,如流程定义、流程实例、任务服务、持久化机制等,这有助于你构建和维护工作流系统。 3. **流程定义**:学习如何使用XML或图形工具(如FlowDesigner)来...

    osworkfolw 工作流demo

    osWorkflow 是一个开源的工作流引擎,它主要用于设计和执行复杂的业务流程。这个“osworkflow 工作流demo”提供了一个具体的应用示例,演示了如何使用 osWorkflow 实现请假审批这样的工作流程。osWorkflow 提供了...

    osworkflow2.8基于Spring+Hibernate

    osworkflow是一款开源的工作流引擎,它提供了灵活的工作流程定义和执行管理功能。在Java应用中,osworkflow常常与Spring和Hibernate这两个主流的框架结合使用,以实现业务流程的自动化处理。本篇文章将深入探讨如何...

    osworkflow_leaveApprove_mysql

    在"osworkflow_leaveApprove_mysql"项目中,我们看到的是一个基于OSWorkflow的请假审批流程示例,专为初学者设计,帮助他们快速理解和掌握工作流系统的运作原理。 MySQL作为全球最受欢迎的开源关系型数据库管理系统...

    osworkflow中文手册

    OSWorkflow 是一个开源的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。这个中文手册是为了解决中文用户在理解和使用OSWorkflow时的语言障碍,提供详细的指南和实例解析。 工作流引擎是软件系统中一个...

    osworkflow简单实现

    OSWorkflow,全称为OpenSymphony Workflow,是一款开源的工作流引擎,用于在应用程序中实现复杂的业务流程。这个项目由OpenSymphony Group开发,现在已经并入到Atlassian的Confluence产品中。OSWorkflow提供了一种...

    OSWorkflow 可以请假小例子(mysql+tomcat)

    OSWorkflow 是一个强大的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。在这个"可以请假的小例子"中,我们将探讨如何使用OSWorkflow与MySQL数据库、Tomcat应用服务器以及Eclipse开发环境集成,来创建一...

    OSWorkFlow入门

    OSWorkflow 是一个开源的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。这个框架提供了灵活的流程定义、状态跟踪、任务分配以及事件通知等功能,使得开发人员能够轻松地创建和管理动态工作流程。本文将...

    osworkflow-chinese-manual.rar_manual_osworkflow

    osWorkflow是一款开源的工作流管理系统,专为Java环境设计,用于处理业务流程中的任务分配、状态跟踪以及流程控制。它提供了强大的API和灵活的配置,使得开发者能够轻松地在应用程序中集成工作流功能。这份...

Global site tag (gtag.js) - Google Analytics