最近要做一个项目,系统中的一个模块是要求不同用户登录系统后,可直接看到今天要做哪些事情,这些任务需要系统自动分配,根据自己的部门和职务(角色),看到的工作任务(一个客户资料有几个人不同阶段处理)也不一样,由于具体业务是分有先后顺序,前面工作的人的相关记录资料后面的工作的人员登录系统后要看得到,同时前面的工作人员处理完后这个客户资料要流到下一个部门去,前面部门的人员的任务盒子里不在有这个客户资料,就这样,客户资料一直根据不同部门往下流,当然一个部门每天可以拿到很多客户资料要处理,这时同一部门的人员的资料盒子要由系统自动分配相关资料给工作人员,这样一来,工作人员只要登录系统后就知道今天该干嘛干嘛了。
     用SSH框架+SQL SERVER 2005,由于存储过程不会写,也不知道具体怎么使用,所以在设计表时我准备设计多张相同结构的客户资料表,一个部门一张资料表,这样当资料进入公司总资料库后,分到A部门表,当A部门工作处理完后,资料入库到B部门表,同时清除A部门表的内容,一天工作结束后,当分配给A部门的工作人员的某些资料没有开始处理,这些资料还要丢到公司资料库中,正在处理但未处理完的还在自己的资料库中,来日继续处理,这样一直流下去直到客户资料完全处理完毕。我这样设计貌似可以实现需求,但是感觉这样设计不是怎么好,真要实现起来,估计写代码有一定的难度。各位同仁帮忙看看出出招。再此谢过。

解决方案 »

  1.   

    这个吗,用log4j吧,做下日志管理,单独的写到文件中,当下一个工作人员登录的时候,直接去查看日志
    就知道今天要做什么事了
      

  2.   

    我做过的项目中有一个审批程序,和你说的应该相似,但我没用过ssh(貌似这个和ssh应该也没关系吧)?
    首先,根据部门和职务区分业务的情况这需要设计一个入口(同时还要有权限设计)。
    设计一张业务模块对象映射表来完成各种不同的业务区分。
    业务流程内容可以统一设计成一张表,该表和上面所说的关联。
    还需要一张存储每个模块工作流程人员节点的表。光这样说可能标书不清楚,我的设计也许不合理,楼主可以再想想,这是一个需要仔细考虑的问题。
      

  3.   

    我的SSH是要做项目中的主要框架。9楼的这个想法我有过,不过我一位同事说就放在一张表里,多弄几个字段就好了,但我感觉还是不怎么好,是多几张表好还是多几个字段好呢?我以前有听说过业务流和工作流,但没有真正去接触研究过,所以只能是自己想象的试着解决,如果各位以前有做过类似的工作的,不妨都可以说说你们的经验嘛,咱们用着平台学习交流。
      

  4.   

    建议楼主去研究一下workflow的一些框架, 例如:
    http://java-source.net/open-source/workflow-engines这个问题太大, 不好 回答, 找些已经存在的框架, 可以有效的缩短开发时间。
      

  5.   

    实际上我是做的一个CRM,需要根据部门和职务来区分,同时需要根据角色来区分,还需要根据共享模块来区分,也有审批程序(应该就是和工作流差不多),这些都是可扩展的。
      

  6.   

    8楼说的用日志我目前的思路是也在一张表里多两个字段,一个时间(下次操作),一个操作情况(本次操作记录),这样应当可以实现,客户资料数据可能会很多,一年下来就有10多万条,如果每次都用一张表的话,恐怕到后来很麻烦,所以就想着用几个相同结构的表,当部门A的客户资料操作结束后,流到部门B表同时同步到总的数据表中,删除部门A表的记录。这样设想着,可能具体逻辑就得分开写了,感觉写在一个类里就太大 不好了。
      

  7.   

    看来真的还有很多东西要研究啊,Jbpm、workflow框架都没用过。
      

  8.   

    貌似以前一个同学公司做的,不知道算不算工作流在数据库中定义一个权限表,无限分级,树形结构,权限1,权限2,权限3
    各个权限从属于上一个权限然后对应每一个权限定义一个表,就是说可以进行拓展,
    就是说以后系统曾加部门了,也没有关系然后对应的表中就是相应部门的工作流,工作流之间靠权限关联,如,a员工日报(申请之类)->组长->部长->部门经理->......
    ......部门经理->部长->组长a->员工大概是这个意思,不知道是不是工作流,不知道对楼主有啥用没
      

  9.   

    推荐使用开源的工作流框架如 JBPM
      

  10.   

    strtus2+spring+hibernate 已经有成熟的例子了
      

  11.   

    lz是不有点复杂啊 ,其实很简单啊  你可以设个状态,到了不同阶段把状态改下不就行了吗
    根据你的描述,我认为你那个资料表可以独立出来
    资料表里有个状态    不同部门只能处理相应状态的资料
    你说的先后顺序可以通过程序的默认顺序来规定
      不知道lz有没有什么启发   希望对你有用
      

  12.   

    存储过程我还没有写过呢,也不会,还得学。
    JBPM刚才简单的看了一下,但还不会,具体到数据库表结构的设计。
    20楼的兄弟,我们要求客户资料表要备份,而且工作人员开发客户的所有信息都得记录下来,待流到下个部门是要参考那些备注(工作人员记录的各种)信息,后一个部门需要看到前面部门的相关工作记录,而前面部门工作人员登录系统后只能看到自己为处理和正在处理的。表中要有状态,可能一个还不够。客户资料太多,如果大家都操作同一张表的话怕跑的很累吧。客户资料的基本信息本来就很多个字段。
      

  13.   

    LZ终于加分了!!!等LZ在放分的时候我在来!!嘎嘎!!既然这样就放点水吧!!JBPM足够了!你那个是公文!!是公文扭转。字段名 是否主键 是否外键 TYPE CHECK COMMENT NULL ABLE
    DOC_ID 是 公文传输ID NOT
    DEPARTMENT_ID 发起部门ID NOT
    USER_ID 用户ID NOT
    STATUS 公文状态 NOT
    WORKFOLW_ID 流程ID NOT
    PROCESSINSTANCE_ID  处理流程实例ID NOT
    TITLE 公文标题 NOT
    NAME 公文名 NOT
    DESCRIPTION 公文描述 YES
    CREATED_DATE 创建日期 NOT
    CREATED_PRG_NAME 创建的子项目名 NOTPROCESSINSTANCE_ID 绑定JBPM流程实例ID
      

  14.   

    典型的工作流建议用JBPM。
      

  15.   

    现在好像只能加一次,不能加分了,没辙了,不过还是谢谢啦,你的意思是把客户资料看作公文,然后单独一张表即你列出来的作为处理公文(客户资料)的表。公文状态在这里有没有处理完,流程是指公文目前所处的流程? LZ你太坏了!!都说在放分的时候我在来,硬要拔我出来!!!这是原始公文表建制。在JBPM流程实例流动的时候关联每一个人的审批信息(审批信息表那可要再来200分呀!!嘎嘎!!)直到流程结束为止。每次审批(不同的人)给原始公文更改一下状态。不做也可以,加上自己的审批信息。状态有多少种就是你的事情了!!一般三四种就够用了。懒点就两种--开始,结束。
      

  16.   

    用日志管理去实现,就相当于去模仿oracle的日志管理一样,记录所做的操作,一旦发生错误现象可 
    根据日志可以进行恢复等操作。
      

  17.   

    之前也想过那样,我单独弄一张记录相关操作(就是日志吧)的表,不知道SQL SERVER 2005一张表最多能有多少条记录,假如资料表有1万条资料,对没条资料的操作记录保守估计不低于10次,那不就会有10多万条操作记录,但如果资料表有10条资料呢,那日志操作不就100多万了,感觉很大。再有就是他说各个部门资料要分离,A部门的可能在一台机子上,B部门的资料可能在另一台机子上,那要是这样的话,那我的spring配置文件里又该怎么写。
      

  18.   


    记住给我加分呀!!200 *2 =400分!!嘎嘎!!逗逗LZ吧!!每个部门根据不同情况衍生的字段不止5个吧!这就要动态表单。页面绑定动态表单。其次一个表40个字段跟SAP的一些系统比较起来还是小巫见大巫。170个都不多。其实数据提交形式是可以使用map形式提交的。
      

  19.   

    我也建议用JBPM,这样就应该比较容易实现你的设计
      

  20.   

    用JBPM是不是还要得有Ant工具等?
      

  21.   

    好好学习,过完端午就学SSH了
      

  22.   

    我以前做过类似的,是把各部门的状态字段都放在资料表里面,哪个部门做完了就改下状态,这样一来时间长了这个表里的数据会很多,然后定期把比较早的不经常操作的数据迁移到相同结构的新表中,翻旧账的时候可以按时间查,也可以同时查询几个表。没用过jbpm,明天学习下。 等更好的解决方法
      

  23.   

    按照他们的意思应当是那样的,如果有必要的话,他们可以架设多台DB服务器,或是同一台不同磁盘,因为他要求还要同步备份DB。数据量相对而言会很多。
      

  24.   

    QQ群 38692105 诚招中国IT精英 进群需笔试!~~
      

  25.   

    工作流:拿请销假流程来说吧,首先,出差的人填写一个请假单,请假单创建同时在请假单中创建隐藏字段,该字段中存储所有能够看到此单的人员列表,程序根据该人员列表来决定哪个用户登陆后能见到此单。单中还要创建一个标志该单状态(比如说已审批状态等等)的字段,以此来决定该工作流到了哪个节点。我以前是做Lotus的,这是lotus中工作流的做法,Java的没弄过,估计差不多吧!呵呵!希望对楼主有一点帮助,此方法不可行的话还望楼主莫见笑呀!
      

  26.   

    建议学习OSWORKFLOW工作流引擎,其实这个功能就是我们公司开发的一个软件的原型,是基于部门的工作流转,你可以研发下市场上的协同管理系统平台,都有这个样的引擎.
      

  27.   

    推荐用 JBPM 正在学习!