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 审批流流转到已停用的域账号导致审批流停止的更多相关文章

  1. USB硬件远程共享解决iphone已停用

    悲剧的在iphone拆过电池之后,再开机显示iphone已停用,请在23000000分钟后再试一次 算算这得45年了,可以留给孙子用了... 网上除了刷机和有同步过的电脑貌似没有别的办法了 因是旧系统 ...

  2. iPhone 已停用

    如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的  iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...

  3. 为什么手机连接wifi会显示已停用?

    1.通常导致手机连接WiFi显示“已停用”故障的原因是由于无线路由器“安全模式”设置不当造成的,对此我们可以通过以下方法来解决: 2.根据无线路由器背面的信息(包括路由器IP地址,登陆用户名和密码), ...

  4. 【03】Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办?

    [03] Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办? 刚好也遇上了这个问题,百度了一下,以下是解决方法,亲测可行: 1.首先把需要安装的第三方插件,后缀.c ...

  5. ipad已停用 连接itunes怎么办

    问题描述: ipad 开机密码多次输入出错后,提示 ipad已停用 连接itunes 解决方法: 参考: https://jingyan.baidu.com/article/fb48e8bee9ef4 ...

  6. 对“demo!demo.Index+HookProc::Invoke”垃圾收集的类型已委托回调。这可能会导致应用程序崩溃、损坏和数据丢失。当传递委托给非托管代码,托管应用程序必须让这些委托保持活着

    对"demo!demo.Index+HookProc::Invoke"垃圾收集的类型已委托回调.这可能会导致应用程序崩溃.损坏和数据丢失.当传递委托给非托管代码,托管应用程序必须承 ...

  7. Chrome谷歌浏览器已停用不支持的扩展程序解决方法

    在不能上外网的情况下解决该问题: http://www.liu16.com/post/Chrome_2447.html

  8. Hosts 长期更新【已停】

    修改hosts篇 [2018.1.3] 由于google的对应的hosts更新过于频繁,再加上上次(18+1)大之后,国家政策原因,网上hosts更新基本上都停了,github的项目也陆续挂掉了. 还 ...

  9. AIO5程序中审批跳转条件:超过某一个值必须总经理审批

    以实际需求为例看下系统中如何设置: 客户需求:采购订单中对总金额进行限制,超过20000的话必须要经过总经理审批含税金额<20000:采购部门某个员工发起→直接主管批→财务主管知会含税金额≥20 ...

随机推荐

  1. jQuery 实现菜单

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. SPFA算法学习笔记

    一.理论准备 为了学习网络流,先水一道spfa. SPFA算法是1994年西南交通大学段凡丁提出,只要最短路径存在,SPFA算法必定能求出最小值,SPFA对Bellman-Ford算法优化的关键之处在 ...

  3. 《Java中的自动装箱和拆箱功能.》

    //Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...

  4. javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    原因很简单:因为在js中{}表示一个语句块(代码段),所有加上"()"表示表达式

  5. 纯CSS3实现轮播切换效果

    使用纯css3实现与轮播器一样的功能. HTML代码: <div class="slide-container"> <input type="radio ...

  6. 图数据库(graph database)资料收集和解析 - daily

    Motivation 图数据库中的高科技和高安全性中引用了一个关于图数据库(graph database)的应用前景的乐观估计: 预计到2017年,图数据库产业在数据库市场的份额将从2个百分点增长到2 ...

  7. CSS——几个最新解决方案

    一.重置默认样式 normalize.css ①不像其他CSSreset,它保存了一些有用的默认样式. ②规范了大量样式,纠正了一下bug与表现形式. ③有详细的注释解释代码的作用. 二.清除浮动 / ...

  8. ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  9. Oracle创建、删除表空间、用户

    1.创建临时表空间 create temporary tablespace linshi tempfile 'e:\linshi.dbf' size 50m autoextend on next 50 ...

  10. mysql出现启动不了问题

    查询日志后是‘ Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist’此错误(less ...