2017-10-21 123 views
1

我正在編寫一個JS腳本來攔截並執行一些額外的驗證,當用戶移動到動態365在線的業務流程的下一個階段。如何在Dynamic 365 Online中觸發OnStageChange事件時判斷用戶是否正在轉向業務流程的下一個或上一個階段?

我將我的功能綁定到Dynamic 365的OnStageChange事件,但該事件不僅在用戶移動到下一個階段時觸發,而且還在他移回到前一個階段時觸發。

是否有任何方式來判斷用戶是否正在轉移到下一個或前一個階段?

+0

你能告訴我們你的代碼嗎? – OneNeptune

回答

1

您需要將OnStageChange的代碼更新爲getEventArgs,這將允許您查看getDirection是「下一個」還是「上一個」。

沒有看到您的代碼,我無法提供具體的實施建議,但是這會回答您的問題。

下面是如何處理`OnStageChange」事件的聯繫做進一步的瞭解:

https://msdn.microsoft.com/en-us/library/gg334481.aspx#BKMK_OnStageChange

+0

非常感謝。我沒有檢查該文檔,我不相信我錯過了關於getEventArgs的部分。 – tsukumogami

+0

@tsukumogami如果這是正確的答案,請標記它,以便將來有此問題的人能夠找到解決方案。你不是第一個遇到這個問題的人,也不會是最後一個!很高興我能幫上忙! – OneNeptune

1

感謝@OneNeptune,我設法解決我的問題如下。

const NEXT_STAGE_OPTION = "Next" 

function onAccountFormLoad (context) { 
    context.getFormContext().data.process.addOnStageChange(checkMoveStage); 
} 

function checkMoveStage(context) { 
    var targetStageName = context.getFormContext().data.process.getActiveStage().getName(); 
    var direction = context.getEventArgs().getDirection(); 
    console.log("Move to " + direction + " stage:" + targetStageName); 

    if (direction === NEXT_STAGE_OPTION) { 
     // Perform necessary validation when moving to next stage. 
    } 
} 

函數onFormLoad被添加到窗體的onLoad事件中,並且選中「傳遞執行上下文作爲第一個參數」選項。

相關問題