比如一个请假申请
起草请假单—部门主管审批—副经理审批—总经理审批—审批结束这个流程控制的思路是什么如何设计库?要求一旦进入流程,用户将不能再修改请假单,某一级审批不通过,可以退加到前一级节点或起草人处。

解决方案 »

  1.   

    id state                  id   name  ....  state
    0  审批结束                   1    小明   ....  4
    1  总经理审批                 2   小李    ....  0
    2  副经理审批
    3  部门主管审批
    4  起草请假单这样设计表应该可以了吧,小于4就不可以修改,审批不过就加1,就退回上一级了,根据状态码就可以知道该由谁来审批
      

  2.   

    每一个流程用一个流程配置文件(比如XML格式的),写明第一部到哪里,第二步到哪里。
      

  3.   

    liu_xhaoqf,那我怎么将公文和这个XML文件联系起来,你能举个例子吗?
      

  4.   

    对呀 这个为什么不用工作流呢...OSFlow,这个也就是工作流里的一个demo
      

  5.   

    看来一开始没看明白你的问题,我学了JAVA开发不久,接触的东西不太多,我也不会工作流,如果让我写的话
    id   state               id      name           id       name     ....     state type
    0     审批结束              1        请假条            1        小明      ....     4     1
    1     总经理审批            2        通知              2        小李      ....     0     2
    2     副经理审批                                       3        小王      ....     5     2
    3     部门主管审批 
    4     起草请假单 
    5     起草通知这样应该可以了,你再写个属性文件吧
    请假条=4-3-2-1-0
    通知=5-1-0方法是差了一点,不过应该也可以行得通,估计工作流应该也是把中间的那个表和属性文件编成XML文件的吧,没用过,猜的
      

  6.   

    如果liu_zhaoqf 说得是工作流的结构的话,我大概猜出来工作流是怎么运作的了,应该是前面用户提交一个公文类型,然后用工厂加载相应的类进行处理
    public class DocumentFactroy{
      private DocumentFactroy df=new DocumentFactroy();
      public static DocumentFactroy buildDocumentFactroy(){
         return df;
      }
      public Document getDocument(String typename,String XMLname){
        return (Document)Class.forName("oa.document"+typename).getConstructor(String.class).newInstance(XMLname,1);
      }
    }
    Document是所有公文的统一接口
    public Interface Document(){}package oa.document
    public class qingjiatiao implement Document{
        private String XMLname;
        public qingjiatiao(String XMLname){
          this.XMLname=XMLname;
        }
        .....
    }
    package oa.document
    public class tongzhi implement Document{
        private String XMLname;
        public tongzhi(String XMLname){
          this.XMLname=XMLname;
        }
        .....
    }
    ....
    然后写XML,不知道工作流是怎么定义的XML,我猜大概就是这样
    qingjiatiao.XML
    <xml ....>   //省略了一堆xml的定义
     <property name="起草请假单" order="1">
       <success order="2"/>
     </property>
     <property name="部门主管审批" order="2">
       <success order="3"/>
       <fail order="1"/>
     </property>
     <property name="副经理审批" order="3">
       <success order="4"/>
       <fail order="2"/>
     </property>
     <property name="总经理审批" order="4">
       <success order="5"/>
       <fail order="3"/>
     </property>
     <property name="审批结束" order="5"/> 
     </property>
    </xml>
    这样的结构应该就可以了,就算没用工作流,自己写一个这样的结构也不困难,应该可以实现你要的功能
    注:所有的代码都是随手写的,没有试过,结构应该没错了