Determination Path

就Partner Determination,一直有个疑问:多个Partner Functions的determine次序是怎样的呢?我们知道Access Sequence有10,20,30的先后次序,但是在Partner determination procedure中我们没法指定Sold-to,Ship-to,Contact Person的次序。之所以有这样的疑问,是因为Partner function之间往往是有关联性的,比方说我们通过Sold-to决定Org,再通过Org Structure决定Responsible Employee。

就此深入研究,发现Partner Function的determine确实是有次序的,但是这个次序不是简单的从上到下,或者按字母、数字排序,而是根据Access Sequence的内容计算得来的。因为Access Sequence中的Details on the Source,Mapping/Restrictions等字段反映了Partner Function的相关性。

相应代码为Function Module: COM_PARTNER_DEADLOCK_CHECK_CB中的Form: DEADLOCK_CHECK_ON_FUNCTION。计算的结果就是Determination Path,当中的DETERM_LEVEL决定了determine的先后次序。

认识到这个机制的存在,我们可以放心的定义Partner Function和Access Sequence,先后次序的问题则交给系统考虑。同时也解释了为什么我们无法人为指定Partner Function的determine的次序。

题外话,Partner Determination是通过Event Handler触发的,Callback Function为:CRM_PARTNER_DETERM_INITIAL_EC。