阅读:2224
回复:7
|
工作流的事务控制问题
单据驳回后,在数据库里做一些update操作(如果操作失败,能否将单据驳回一起回滚?)
重载的方法好像也没用,除非连驳回的数据库操作一起重新写了。对不? public override void Reject(WorkSheet.MvcPostValue MvcPostValue, WorkSheet.MvcResult MvcResult) { //您发起的XX流程[流程号], 在[审批节点名称]节点被驳回 if (true) { base.Reject(MvcPostValue, MvcResult); } } |
1楼#
发布于:2017-07-28 08:15
MvcResult.Successful = false;不行。
因为是驳回后做操作,所以代码其实应该是这样 public override void Reject(WorkSheet.MvcPostValue MvcPostValue, WorkSheet.MvcResult MvcResult) { base.Reject(MvcPostValue, MvcResult); //先驳回,然后做其他数据库操作 if (MvcResult.Successful == true) { //数据库操作 } MvcResult.Successful = false把这个设为false,单据驳回后不会自己关闭,但是单据还是驳回了 |
|
2楼#
发布于:2017-07-28 09:10
那如果前面做了操作数据库的操作。驳回失败了,前面做的数据库操作还的手工全部做一遍,让数据恢复原样。
要实现的内容是这样: 想在单据【驳回】以后,通过在后台写数据库,自动将这个单据【关闭】。有没有啥好办法? 其他业务系统发起的多级审批例如:订单A,只有【提交】【驳回到开始】2个操作,驳回到开始既意味着审批失败,想让单据自动关闭,把审批结果返回到业务系统。如果不自动关闭,业务系统修改了订单A后,因为存在未关闭的审批流,将无法再生成新的审批流(如果让同时生成针对一张订单A的多个审批流,就出大问题了) |
|
4楼#
发布于:2017-07-28 15:11
谢谢
1、取消按钮需要人去点一下,有方法或者接口能取消的吗?(要把操作人员当小孩子看的,最好让他们少做) |
|