AX2012 审批流流转到已停用的域账号导致审批流停止
AX 2012 中当审批流流转到某个节点时,如果在该节点的审批人的域账号被停用,审批流将会停止,会报如图的错误:

要解决这个问题,得修改标准功能,需要修改SysWorkflow和SysWorkflowWorkItem两个类
public server static void fault(
Microsoft.Dynamics.AX.Framework.Workflow.Runtime.WorkflowContext _workflowContext,
WorkflowUser _user,
WorkflowFaultMessage _faultMessage)
{
UserConnection connection;
SysWorkflowFaultTable faultTable; setPrefix(classStr(SysWorkflow) + '-' + staticMethodStr(SysWorkflow, fault)); new InteropPermission(InteropKind::ClrInterop).assert(); if (CLRInterop::isNull(_workflowContext))
{
throw error(strFmt("@SYS104836", staticMethodStr(SysWorkflow, fault), varStr(_workflowContext)));
}
// CR <Hotfixed> VAR on 2016-07-26 at 15:04:07 Changed by Kim -Begin
if (SysWorkflowTable::find(CLRInterop::getAnyTypeForObject(_workflowContext.get_WorkflowCorrelationId())).RecId != )
// CR <Hotfixed> VAR on 2016-07-26 at 15:04:07 Changed by Kim -End
{
if (appl.ttsLevel() == )
{
SysWorkflow::internalFault(_workflowContext, _user, _faultMessage);
}
else
{
// We are in a nested transaction so we want to do the fault even if the outer transaction
// is rolled back so we do it on a sperate connection.
connection = new UserConnection();
faultTable.setConnection(connection);
if (!SysWorkflowFaultTable::exist(_workflowContext.get_RootCorrelationId()))
{
connection.ttsbegin();
faultTable.RootCorrelationId = _workflowContext.get_RootCorrelationId();
faultTable.FaultMessage = _faultMessage;
faultTable.User = _user;
faultTable.insert();
connection.ttscommit();
}
}
} CodeAccessPermission::revertAssert();
}
// EDD number Hotfix
// EDD description Hot fix
// Layer var
// Model VAR Model
//
// Developer Date Comments
// -------------- ----------------- ------------------------------
// Kim.Ding 三月-22-2016 13:46:01 Created
public static boolean TEC_checkADUser(UserId _userId)
{
xAxaptaUserManager mgr;
xAxaptaUserDetails det;
UserInfo userInfo;
boolean ok = true;
; mgr = new xAxaptaUserManager();
select userInfo where userInfo.Id == _userId;
det = mgr.getDomainUser(userInfo.NetworkDomain,userInfo.id);
if (det == null)
{
ok = false;
}
return ok;
}
/// <summary>
/// Microsoft internal use only.
/// </summary>
/// <param name="_workItemContext">
/// An instance of the <c>CLRObject</c> class.
/// </param>
/// <param name="_isClaimed">
/// A <c>WorkflowWorkItemClaimed</c> value.
/// </param>
/// <returns>
/// A <c>recId</c> value.
/// </returns>
private server static RecId create(
Microsoft.Dynamics.AX.Framework.Workflow.Runtime.WorkItemActivityContext _workItemContext,
WorkflowWorkItemClaimed _isClaimed)
{
..... userContext = _workItemContext.get_User();
user = userContext.get_UserId();
// CR <Hotfix> VAR on 2016-03-22 at 13:49:48 Changed by Kim -Begin
if (!SysWorkflowWorkItem::TEC_checkADUser(user))
{
return ;
}
// CR <Hotfix> VAR on 2016-03-22 at 13:49:48 Changed by Kim -End
autoDelegators = userContext.get_Delegators();
sysWorkflowDocument = SysWorkflowDocument::newDocument(
SysWorkflowConvert::toXppWorkflowContext(workflowContext),
versionTable.workflowTable().TemplateName,
user); .... }
AX2012 审批流流转到已停用的域账号导致审批流停止的更多相关文章
- USB硬件远程共享解决iphone已停用
悲剧的在iphone拆过电池之后,再开机显示iphone已停用,请在23000000分钟后再试一次 算算这得45年了,可以留给孙子用了... 网上除了刷机和有同步过的电脑貌似没有别的办法了 因是旧系统 ...
- iPhone 已停用
如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的 iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...
- 为什么手机连接wifi会显示已停用?
1.通常导致手机连接WiFi显示“已停用”故障的原因是由于无线路由器“安全模式”设置不当造成的,对此我们可以通过以下方法来解决: 2.根据无线路由器背面的信息(包括路由器IP地址,登陆用户名和密码), ...
- 【03】Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办?
[03] Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办? 刚好也遇上了这个问题,百度了一下,以下是解决方法,亲测可行: 1.首先把需要安装的第三方插件,后缀.c ...
- ipad已停用 连接itunes怎么办
问题描述: ipad 开机密码多次输入出错后,提示 ipad已停用 连接itunes 解决方法: 参考: https://jingyan.baidu.com/article/fb48e8bee9ef4 ...
- 对“demo!demo.Index+HookProc::Invoke”垃圾收集的类型已委托回调。这可能会导致应用程序崩溃、损坏和数据丢失。当传递委托给非托管代码,托管应用程序必须让这些委托保持活着
对"demo!demo.Index+HookProc::Invoke"垃圾收集的类型已委托回调.这可能会导致应用程序崩溃.损坏和数据丢失.当传递委托给非托管代码,托管应用程序必须承 ...
- Chrome谷歌浏览器已停用不支持的扩展程序解决方法
在不能上外网的情况下解决该问题: http://www.liu16.com/post/Chrome_2447.html
- Hosts 长期更新【已停】
修改hosts篇 [2018.1.3] 由于google的对应的hosts更新过于频繁,再加上上次(18+1)大之后,国家政策原因,网上hosts更新基本上都停了,github的项目也陆续挂掉了. 还 ...
- AIO5程序中审批跳转条件:超过某一个值必须总经理审批
以实际需求为例看下系统中如何设置: 客户需求:采购订单中对总金额进行限制,超过20000的话必须要经过总经理审批含税金额<20000:采购部门某个员工发起→直接主管批→财务主管知会含税金额≥20 ...
随机推荐
- excel列递增方法技巧
最近处理世界买家网100多万的数据,需要用到excel来对数据进行处理,其中有一项是对数据做一个排序,以方便数据导入时来对应唯一的id编号,之前都是 几万,最多也是30来万的数据,所以列递增就直接用鼠 ...
- C#实现右下角弹出窗口效果
/// <summary> /// 窗体动画函数 注意:要引用System.Runtime.InteropServices; /// </summary> /// <pa ...
- Mac下同时安装多个版本的JDK & Mac 可设置环境变量的位置、查看和添加PATH环境变量
http://ningandjiao.iteye.com/blog/2045955 http://elf8848.iteye.com/blog/1582137
- E1_1 用邻接矩阵存储有向图,并输出各顶点的出度和入度
参考书:图论算法理论.实现及应用(北京大学出版社) 输入数据:(test.txt) 程序: /* 邻接矩阵存储有向图 */ #include <cstring> #include < ...
- SendInput模拟Win(VK_LWIN)键的问题
使用SendInput模拟按键,代码如下: #include "stdafx.h" #include <windows.h> #include <conio.h& ...
- C++ 调用 java jni.h 的使用
JNI c++ 调用 java ----------------------------------------------c++----------------------------------- ...
- TCP/IP 协议:IP 协议
首先来看一下IP协议在实际中的位置: 我们只关系流程,不关系当前具体的服务类型 1.IP协议概述 作用: 从上图或从应用层->运输层->网络层->链路层来看,IP协议属于网络层,也就 ...
- CI框架引入外部css和js文件
首先在项目根目录下建立assets文件夹,在这个文件夹下再建立css和js文件夹分别放置css和js文件 然后,在项目根目录下建立.htaccess文件 内容如下: RewriteEngine on ...
- CSS值得关注的那些事?
CSS值得关注的那些事? CSS层叠样式表的出现,使得样式表现层与HTML结构层分离,CSS样式与HTML结构层次清晰,一目了然.给我们前端开发者带来诸多的便利,然而,在实际前端开发中,还是有相当多的 ...
- Windows 10 x64 安装 Visual Basic 6.0 SP6
原文是E文,E文好的可以直接看这里:http://www.fortypoundhead.com/showcontent.asp?artid=23993 原则上Windows 7 x64, Window ...