#region 生产订单
/// <summary>
/// 生产订单核准
/// </summary>
public override object Do(object obj)
{
var responses = new List<ResultDTOData>();
var list = new List<Customer>();
list.Add(new Customer()
{
Code = "ABC01"
});
list.Add(new Customer()
{
Code = "ABC02"
});
list.Add(new Customer()
{
Code = "ABC03"
});
// 进行委托调用
using (UBFTransactionScope scope = new UBFTransactionScope(TransactionOption.RequiresNew))
{
try
{
InvokeHandler<ResultDTOData> invokeHandler = CreateCustomer;
responses = ParallelHelper.Run<ResultDTOData, Customer>(invokeHandler, ParallelOption.InitBPContext | ParallelOption.ConcurrencyRetry, list);
if (responses.Exists(p => p.Success == false))
{
foreach (var item in responses)
{
if (item.Success)
{
item.Success = false;
item.Message = "其他数据有错,当前数据回滚!";
}
}
throw new Exception("有问题!");
}
scope.Commit();
}
catch (Exception e)
{
scope.Rollback();
}
}
return responses.FirstOrDefault();
}
/// <summary>
/// 并行运算
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private ResultDTOData CreateCustomer(object obj)
{
var cc = obj as Customer; ;
var response = new ResultDTOData();
using (UBFTransactionScope scope = new UBFTransactionScope(TransactionOption.Required))
{
try
{
using (Session session = Session.Open())
{
Thread.Sleep(5000); // 5秒,查看是否超过15秒
Customer customer = Customer.Create();
customer.Code = cc.Code;
customer.Name = cc.Code;
customer.Org = UFIDA.U9.Base.Context.LoginOrg;
customer.Effective = new UFIDA.U9.Base.PropertyTypes.Effective { IsEffective = true, EffectiveDate = DateTime.Today, DisableDate = new DateTime(2030, 1, 1) };
session.Commit();
if (cc.Code == "ABC03") {
Thread.Sleep(1000);
throw new Exception("主动测试报错");
}
}
scope.Commit();
return new ResultDTOData
{
Data = cc.Code,
Success = true
};
}
catch (Exception e)
{
scope.Rollback();
return new ResultDTOData
{
Data = cc.Code,
Success = false,
Message = e.Message
};
}
}
}
#endregion