背景:通过接口将销售订单一次性通过接口完成所有业务操作(保存,提交,审核),而不调用多次接口
下面代码实现的内容:销售订单进行保存,提交,审核一次完成
问题:当开启事物后,审核存在异常(例如信用额度不够),审核事件就会长时间不响应,产生数据库锁。
但是如果审核没有异常,事物的整体控制正常。
另,不开启事物,逐个的进行保存,提交,审核,也不会锁定事物
//开启事物控制
using (KDTransactionScope trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
{
try
{
//保存数据
ISaveService saveService = Kingdee.BOS.App.ServiceHelper.GetService
IOperationResult ir = saveService.Save(this.KDContext.Session.AppContext, formMetaData.BusinessInfo, new DynamicObject[] { obj });
if (ir.IsSuccess)
{
//提交单据
long billID = (long)dt.Properties["Id"].GetValue(obj);
ISubmitService submitService = ServiceHelper.GetService
ir = submitService.Submit(this.KDContext.Session.AppContext, info, new object[] { billID }, "Submit");
if (ir.IsSuccess)
{
List
KeyValuePair
//审核单据,业务存在异常(信用额度不够,该事件长时间锁定)
ISetStatusService auditService = ServiceHelper.GetService
ir = auditService.SetBillStatus(this.KDContext.Session.AppContext, info, lstKeyValuePairs, null, "Audit");
}
}
推荐阅读