如何开发工作流

一、与业务表关联的实体bean应实现com.szboanda.platform.workflow.definition.Ibusiness接口或者继承其子类com.szboanda.platform.workflow.engine.AbstractBusiness类。Ibusiness接口中定义的一系列setter方法是为了把业务表中的数据写入到流程表中。应始终给businessId(业务编号)workflowId(流程实例编号)dwmc(单位名称) 这三个属性赋值。


部分示例代码:

  1. @TableAnnotation(tableName="T_HJJC_WTJCGZDJ",key="RWBH")
  2. public class TFsfxBusiness extends AbstractBusiness{

  3.     /** 任务编号 */
  4.     private String rwbh;

  5.     /** 办文编号 */
  6.     private String bwbh;
  7.    
  8.     /** 污染源编号 */
  9.     private String wrybh;

  10.     /** 受监测单位名称 */
  11.     private String sjcdwmc;
  12.    
  13.     public void setRwbh(String rwbh){
  14.        this.rwbh = rwbh;
  15.     }

  16.     public String getRwbh(){
  17.        return this.rwbh;
  18.     }

  19.     public void setBwbh(String bwbh){
  20.        this.bwbh = bwbh;
  21.     }

  22.     public String getBwbh(){
  23.        return this.bwbh;
  24.     }

  25.     public void setWrybh(String wrybh){
  26.         this.wrybh = wrybh;
  27.     }

  28.     public String getWrybh(){
  29.        return this.wrybh;
  30.     }

  31.     public void setSjcdwmc(String sjcdwmc){
  32.        this.sjcdwmc = sjcdwmc;
  33.     }

  34.     public String getSjcdwmc(){
  35.        return this.sjcdwmc;
  36.     }

  37.     @Override
  38.     public void setBusinessId(String businessId) {
  39.        this.rwbh = businessId;
  40.     }

  41.     @Override
  42.     public String getBusinessId() {
  43.        return getRwbh();
  44.     }

  45.     @Override
  46.     public void setWorkflowId(String workfloweId) {
  47.        this.bwbh = workfloweId;
  48.     }

  49.     @Override
  50.     public String getWorkflowId() {
  51.        return this.bwbh;
  52.     }

  53.     @Override
  54.     public void setDwmc(String dwmc) {
  55.        this.sjcdwdz = dwmc;
  56.     }

  57.     @Override
  58.     public String getDwmc() {
  59.        return this.sjcdwmc;
  60.     }
  61. }
复制代码


二、工作流实现类应继承com.szboanda.platform.workflow.engine.AbstractWorkflow类。我们可以在自己的工作流实现类中重写以下方法以处理自己的业务逻辑。

  1. /**
  2. * 流程创建时调用
  3. * @param workflow
  4. */
  5. void onStart(WorkflowEvent event);

  6. /**
  7. * 流程结束时调用
  8. * @param workflow
  9. */
  10. void onFinish(WorkflowEvent event);

  11. /**
  12. * 流程发生流转时调用
  13. * 可以通过WorkflowEvent对象获得流程信息getWorkflow(),当前发生流转的步骤信息getStep();
  14. * 也可以通过event.getStep().getChindrens()获得到下一步的步骤信息
  15. * @param workflow
  16. * @param result
  17. */
  18. void onTransition(WorkflowEvent event);

  19. /**
  20. * 流程发生删除之前调用
  21. * @param event
  22. */
  23. void beforeDelete(WorkflowEvent event);


  24. /**
  25. * 流程发生删除后调用
  26. * @param event
  27. */
  28. void onDelete(WorkflowEvent event);


  29. /**
  30. * 流程发生回退时调用
  31. * @param event
  32. */
  33. void onSendBack(WorkflowEvent event);
复制代码

三、在自己的Service类中开启流程。


部分示例代码如下:

  1. /**
  2.   * 业务逻辑处理,插入
  3.   * @param obj
  4. */
  5. public void insert(Object... obj) throws PlatformException {
  6.     TFsfxBusiness tmpTHjjcWtjcgzdj  = (TFsfxBusiness) obj[0];
  7.     JdbcDAO       dao       = new JdbcDAO();
  8.     StringBuffer sql     = new StringBuffer();   
  9.     if(StringUtils.isEmpty(tmpTHjjcWtjcgzdj.getRwbh())){
  10.        tmpTHjjcWtjcgzdj.setRwbh(getNextId());
  11.     }
  12.       
  13.     sql.append("INSERT INTO T_HJJC_WTJCGZDJ(RWBH,WRYBH,SJCDWMC,BWBH) VALUES(?,?,?,?)");
  14.     TransactionManager manager = null;
  15.     try {
  16.        manager = TransactionManager.getInstance();
  17.        manager.open();
  18.       
  19.        //调用开启流程的方法,传入业务对象及Connection
  20.        startWorkflow(tmpTHjjcWtjcgzdj,manager.getConnection());

  21.        QueryHelper  query    = new QueryHelper(sql.toString());
  22.        query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getRwbh());
  23.        query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getWrybh());         
  24.        query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getSjcdwmc());
  25.        query.addParameter(Types.VARCHAR,tmpTHjjcWtjcgzdj.getBwbh());
  26.       
  27.        dao.executeSQL(manager.getConnection(),query);
  28.        manager.commit();
  29.     } catch (Exception e) {
  30.        manager.rollBack();
  31.        e.printStackTrace();
  32.     }finally{
  33.        CloseUtils.closeConnections(manager.getConnection());
  34.     }      
  35. }

  36. /**
  37.   * 开启流程
  38.   * @param o
  39.   * @param con
  40. */
  41. protected void startWorkflow(Object o,Connection con) {
  42.     //获取流程类型
  43.     String flowType = getRequest().getParameter(WORKFLOW_TYPE);
  44.     //业务对象
  45.     TFsfxBusiness business = (TFsfxBusiness) o;
  46.     //创建一个新的工作流程
  47.     IWorkflow workflow = WorkflowFactory.createNewWorkflow(flowType);
  48.     //获取ActionHelper对象
  49.     ActionHelper helper = (ActionHelper) getRequest().getSession()
  50.         .getAttribute(Constants.SYSTEM_USER_IDENTITY);
  51.     //获取当前用户ID
  52.     String starter = helper.getId();
  53.     //获取工作流程的定义信息
  54.     IWorkflowDefinition deinition = workflow.getWorkflowDefinition();
  55.     //设置流程期限
  56.     deinition.setTimeLimit(30);
  57.     //初始化工作流程
  58.     workflow.init(business);
  59.     //启动工作流实例
  60.     workflow.start(con, starter);
  61.     //标识isAfterStartWorkflow为true
  62.     getRequest().setAttribute("isAfterStartWorkflow", "true");
  63. }
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值