我有一个服务传递的方案是数据到AX,然后我们使用SysOperationFramework来处理该数据,而不会让服务客户端等待处理完成。
如果用户在处理过程中仍尝试打开外部应用程序中的记录,则会出现问题。
有没有办法,在X ++中,所以看看当前正在执行哪些作业(并且进一步查看传入的参数),以便我们可以发送一个我们可以处理给用户的错误?
答案 0 :(得分:2)
有一种方法,是的。您要查找的数据存储在Batch
表中。
您会找到ClassNumber
和状态字段。只需选择与您的类具有状态执行匹配的记录。如果存在记录,则正在执行。
参数存储在容器的Parameters
字段中。您可以解压缩容器,创建类的实例并将其解压缩,就像这样(快速代码无法编译,但您明白了):
Batch batch;
SysOperationServiceController sysOperationServiceController;
YourDataContract yourDataContract;
select batch
where batch.ClassNumber = YourClassNumber
&& batch.Status == BatchStatus::Executing;
// todo: you might have to check the type of the object before assignment
// todo: also check if batch record has been found
sysOperationServiceController = batch.object();
if (sysOperationServiceController.unpack(batch.Parameters))
{
// todo: you might have to check the type of the object before assignment
yourDataContract = sysOperationServiceController.getDataContractObject('_theParemterNameOfyourDataContract');
// todo: here you can read the parameters from your contract
}
else
{
throw error("Unpack failed");
}