关于J2EE项目中存在的问题,请各位给与解惑,先谢了!

05-07-10 liaowufeng
问题是这样的:

系统简化的可分为三个角色:

1 学生用户

2 院系用户

3 研院用户

每一种角色用户至少有10人以上。

那请问以下:

1 由于院系的工作人员有10人,每个人都有登录系统的帐号,同可以在不同的工作区同进登录

且每个人都可以给同一个学生填写审核结果,那么,

当院系A工作人员正在给一名学生填写审核结果,还没有提交(指没有提交给服务端)时,

有院系B工作人员又给同一名学生填写审核结果,

当A工作人员这时将审核结果为“通过”提交。

那B工作人员再提交,将会复盖过A工作人员的结果,要避免这种情况,

那我的业务罗辑程序的代码是不是要这么写呢?

方式1 填写院系审核结果逻辑

院系审核结果变量=从数据库中取出院系审核结果

IF 院系审核结果变时 != 空 THEN

将院系审核结果(用户提交的)更新到数据库

ELSE

Throws new 业务异常(“已有院系填写了审核结果,你不能再填写”)

END IF

方式2 填写院系审核结果逻辑

将院系审核结果(用户提交的)更新到数据库

哪一种比较好呢?

问题2 ,由于,院系工作人员一次审核很多学生,所以我们在做系统界面时,将

在页面上有多个学生的输入框,一次向服务器提交多个学生的审核结果,

那当有多个院系工作人员同时使用系统,一次对多个学生提交审核结果,

也会出现复盖结果的情况,我们的代码又如何写呢?有两种方式

方式1 对院系的一次提交的多个学生审核结果作如下操作

FOR 多个学生审核结果

院系审核结果变量=从数据库中取出院系审核结果

IF 院系审核结果变时 != 空 THEN

将院系审核结果(用户提交的)更新到数据库

ELSE

记录哪些学生审核不成功

END IF

END FOR

返回给用户,哪些已有院系填写了审核结果,你不能再填写

方式2 FOR 多个学生审核结果

将院系审核结果(用户提交的)更新到数据库

END FOR

哪一种比较好呢?

第一种方式的编程是最好的,那么,将出现要两访操作表问题,我每一次在更新前都得先访问一次数据库,得到数据库的的记录最新的数据,再根据数据的状态,决定操作。

第二种,就直接更接操作,但会出现复盖数据的情况。

问一下,各位,你们在做这类的系统时,是如何解决这种,多个角色下多个用户,操作同一个数据的业务问题。

万分感谢!

    

banq
2005-07-11 08:38
提供参考,你这属于应用事务问题,这类似CVS服务器原理,当有老师对学生写评定时,就进行锁定,别的老师再准备写审核时,会禁止其操作,提示其等待其他老师操作完毕,可显示其他老师联系方式等。

这是一个粗粒度的,如果为了方便,再需要细化。总之,需要锁定,锁定可以是一个流程,也可以是,某些字段。

liaowufeng
2005-07-12 08:50
谢谢老师的指教,那再请问一下,有什么具体的方法来处理,是不是使用数据库的的锁定呀,还是有其他更好的技术,如果使用我上面所说的第二种方法来处理,应该也是可以的吗?

另外,再请问一下,老师写的那个Jdon架构可以解决这种问题吗,可以我想研究一下,目前,我只要快解决这种问题就可以,还有老师的Jdon架构是免费的吗?谢谢了!

liaowufeng
2005-07-12 08:51
说错了,使用我上面提到的第一种写法处理,应该可以的吗?

banq
2005-07-12 10:25
使用支持事务的框架就可以,或者在你的方案上自己加上事务就可以。

Jdon框架是Open soucre,但是不解决这个问题的。

猜你喜欢
2Go 1 2 下一页