您的位置:首页 > 编程语言 > Java开发

java 实现一套流程管理、流转的思路(伪工作流)

2014-12-03 14:21 281 查看
  在做某个管理项目时,被要求实现一套流程管理,比如请假的申请审批流程等,在参考了很多资料,并和同事讨论后,得到了一个自主实现的流程管理。

  以下提供我的设计思路,知道了思路,实现起来就简单很多了。

  首先我设计了5个类来实现流程的自主设置,主要是对流程的定义和流程流转。

  

/**
*
*@Description:处理流程业务的Service
*@Author:lichao
*@Since:Oct 10, 201412:02:39 PM
*/
public interface FlowMainService {

/**
*
*@Description: 用于申请
*@Author: lichao
*@Since: Oct 10, 20143:19:07 PM
*@param applyable
*@return
* @throws Exception
*/
public void applyFlow(Applyable applyable) throws Exception;

/**
*
*@Description: 查找当前所处的流转信息
*@Author: medees
*@Since: Oct 13, 20148:56:00 AM
*@param applyid 申请源
*@param applytype 申请类别
*@return
*/
public FlowInfoMoving findNowMoving(Long applyid,Dictionary applyType);

/**
*
*@Description: 查找某一流程下的所有走过的流程 按创建时间升序排序
*@Author: lichao
*@Since: Oct 13, 20141:46:54 PM
*@param applyid 申请源
*@param applytype 申请类别
*@return
*/
public List<FlowInfoMoving> findAllMoving(Long applyid,Dictionary applyType);

/**
*
*@Description: 获取所有变换条件
*@Author: lichao
*@Since: Oct 13, 20144:27:41 PM
*@param nodeid 所处节点的id
*@return
*/
public List<String> findNextTransition(Long nodeid);

/**
*
*@Description: 得到此节点可以审核的所有用户
*@Author: lichao
*@Since: Oct 14, 201410:22:50 AM
*@param nodeid 节点id
*@param applyid 申请源
*@param applyUserId 申请人id
*@return
*/
public List<User> findNextAppUser(Long nodeid,String transition,Long applyUserId);

/**
*
*@Description: 分页查询自己所审批的流程
*@Author: lichao
*@Since: Oct 14, 20141:39:50 PM
*@return
*/
public Page<FlowInfoMoving> findMyMoving(Pageable pageRequest);

/**
*
*@Description: 进行审核的方法
*@Author: lichao
*@Since: Oct 15, 20142:11:18 PM
*@param moving
* @throws Exception 如果审核出错则抛出异常
*/
public boolean approval(FlowInfoMoving moving) throws Exception;

/**
*
*@Description: 查找一个流程的所有流转
*@Author: lichao
*@Since: Oct 16, 201411:04:03 AM
*@param applyid
*@param applytype
*@return
*/
public Page<FlowInfoMoving> findAllMoving(Long applyid,Long applytype,Pageable Pageable);

/**
*
*@Description: 重新申请
*@Author: lichao
*@Since: Oct 17, 20141:43:03 PM
*@return
*/
public void resetApply(Applyable applyable) throws Exception;

/**
*
*@Description: 是否需要重新申请
*@Author: lichao
*@Since: Oct 17, 20141:43:03 PM
*@return
*/
public boolean isNeedReset(Long applyid,Dictionary dic);

}


FlowMainService
申请源只要调用此接口中的applyFlow进行申请即可。

具体实现就不在提供了!

以上!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐