日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】Dynamics 365中的事件框架与事件执行管道(Event execution pipeline)

發(fā)布時(shí)間:2023/12/10 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Dynamics 365中的事件框架与事件执行管道(Event execution pipeline) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文介紹了Microsoft Dynamics 365(以下簡稱D365)中的兩個(gè)概念,事件框架(Event Framework)與事件執(zhí)行管道(Event execution pipeline)。

本文適用于:Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

注意:本文的一些內(nèi)容可能已經(jīng)不適用于最新的D365,翻譯只為參考、學(xué)習(xí)。

?

本文鏈接:https://www.cnblogs.com/hhelibeb/p/11086723.html?

原文鏈接:https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg334361(v=crm.8)

事件框架(Event Framework)

在D365中你可以通過集成自定義業(yè)務(wù)邏輯(代碼)來擴(kuò)展或自定義服務(wù)器的功能。你可以自定義產(chǎn)品來支持自己公司的業(yè)務(wù),可以向產(chǎn)品添加新的特性。事件框架技術(shù)允許你將自開發(fā)代碼集成到D365系統(tǒng)中。

事件框架允許你創(chuàng)建豐富的垂直和水平解決方案,它通過支持可靠、便攜的開發(fā)與集成自定義業(yè)務(wù)邏輯實(shí)現(xiàn)這點(diǎn)。你的自定義邏輯在集成到系統(tǒng)中后,可以作為D365主要執(zhí)行路徑的一部分被同步執(zhí)行,也可以在一個(gè)托管隊(duì)列中異步執(zhí)行。業(yè)務(wù)數(shù)據(jù)可以傳輸?shù)侥愕淖远x代碼中,可以根據(jù)數(shù)據(jù)的性質(zhì)執(zhí)行相應(yīng)的action,或者直接修改數(shù)據(jù)。

事件框架提供以下關(guān)鍵特性:

  • 一個(gè)改進(jìn)的業(yè)務(wù)處理子系統(tǒng)。該子系統(tǒng)提供了執(zhí)行plugin和workflow的統(tǒng)一方法,改善了了可靠性、提供了增強(qiáng)的特性集和plugin的可移植性。
  • 事件框架API。可以以plugin和workflow的形式擴(kuò)展D365平臺。
  • 一個(gè)用于部署plugin和workflow到數(shù)據(jù)庫的API。它使你可以將plugin和workflow自動(dòng)分發(fā)到數(shù)據(jù)中心的所有相關(guān)服務(wù)器上。
  • 同步和異步的plugin執(zhí)行。同步plugin作為主要的D365事件處理的一部分以預(yù)定義的順序執(zhí)行,異步plugin被隊(duì)列化并獨(dú)立執(zhí)行。

只有D365 server和Outlook客戶端支持事件框架。有關(guān)擴(kuò)展D365 Web應(yīng)用的信息,可以參考Customize Microsoft Dynamics 365 applications

事件執(zhí)行管道(Event execution pipeline)

D365的事件處理子系統(tǒng)會(huì)基于消息管道處理模型執(zhí)行plugin。由plugin或其它應(yīng)用調(diào)用的用戶action、SDK方法會(huì)產(chǎn)生一個(gè)消息,發(fā)送給organization?Web Service。消息包含業(yè)務(wù)實(shí)體信息和核心操作信息。消息被傳遞給事件執(zhí)行管道,通過管道,消息可以被平臺核心和其它任何注冊的plugin讀取。

注意:雖然D365平臺托管了多個(gè)Web Service,只有由organization和OData端觸發(fā)的事件會(huì)導(dǎo)致plugin執(zhí)行。

架構(gòu)和相關(guān)組件

?下圖是D365平臺中有關(guān)異步和同步事件處理的整體架構(gòu),

事件執(zhí)行管道要么同步處理事件,要么異步處理事件。平臺核心操作和同步執(zhí)行的plugin會(huì)立即執(zhí)行。同步的plugin以定義好的順序執(zhí)行。異步執(zhí)行的插件由異步隊(duì)列代理(Asynchronous Queue Agent)隊(duì)列化,并在晚些時(shí)候由異步服務(wù)執(zhí)行。

注意:不管是異步還是同步執(zhí)行的plugin,都有一個(gè)2分鐘的執(zhí)行時(shí)間限制。如果執(zhí)行超時(shí),就會(huì)產(chǎn)生System.TimeoutException異常。對于需要超過2分鐘的執(zhí)行時(shí)間的情況,考慮使用workflow或其它后臺處理方式實(shí)現(xiàn)。2分鐘限制只對在部分信任下注冊的的plugin有效,也就是只對被部署到沙箱的plugin有效。更多信息:?Plug-in isolation, trusts, and statistics

管道階段 (Pipeline stages)

管道分為4個(gè)階段,其中3個(gè)可以用于自定義開發(fā)或者第三方plugin。在階段內(nèi)注冊的多個(gè)plugin可以進(jìn)一步在階段內(nèi)排序。

Event

Stage name

Stage number

Description

Pre-Event

Pre-validation

10

在主系統(tǒng)操作前執(zhí)行的階段。有可能在數(shù)據(jù)庫事務(wù)外執(zhí)行。

?安全注意事項(xiàng)

這個(gè)階段比安全檢查要早,安全檢查是指對調(diào)用的檢驗(yàn)或用戶執(zhí)行權(quán)限檢查日志。

Pre-Event

Pre-operation

20

在主系統(tǒng)操作前執(zhí)行的階段。在數(shù)據(jù)庫事務(wù)內(nèi)執(zhí)行。

Platform Core Operation

MainOperation?

30

系統(tǒng)主操作事務(wù),比如創(chuàng)建更新刪除等等。自定義plugin無法使用這個(gè)階段。它只用于內(nèi)部使用。

Post-Event

Post-operation? ? ? ? ? ? ? ? ?

40

在主系統(tǒng)操作后執(zhí)行的階段。在數(shù)據(jù)庫事務(wù)內(nèi)執(zhí)行。

消息處理

無論何時(shí),當(dāng)應(yīng)用代碼或workflow調(diào)用D365 Web service方法的時(shí)候,系統(tǒng)中會(huì)發(fā)生狀態(tài)變化,觸發(fā)一個(gè)事件。信息作為參數(shù)傳輸給web service方法,會(huì)在內(nèi)部被包裝到一個(gè)OrganizationRequest消息,由管道處理。在OrganizationRequest消息中的信息被傳輸?shù)降谝粋€(gè)為當(dāng)前事件注冊的plugin,可以被讀取和修改,然后再傳輸給第二個(gè),以此類推...plugin以傳遞給它的Execute方法中的context的形式接收消息信息。消息也會(huì)傳遞給平臺核心操作。

Plugin注冊

Plugin可以被注冊為在核心平臺操作前/后運(yùn)行。Pre-event plugin可以首先接收OrganizationRequest,并在它傳輸?shù)胶诵暮诵牟僮髑皩ζ溥M(jìn)行修改。核心平臺操作完成后的消息被稱為OrganizationResponse。Response被傳遞給post-event plugin。?Post-event plugin可以在消息副本被傳遞給異步plugin前修改消息。最終,響應(yīng)返回給調(diào)用原始web service方法的應(yīng)用或workflow。

數(shù)據(jù)庫事務(wù)

Plugin有可能在數(shù)據(jù)庫事務(wù)內(nèi)執(zhí)行,也有可能不在,這取決于管道如何處理消息請求。你可以通過讀取?IsInTransaction屬性來檢查這點(diǎn)。IsInTransaction繼承自IPluginExecutionContext,會(huì)被傳遞給plugin。如果plugin在數(shù)據(jù)庫事務(wù)內(nèi)執(zhí)行,并傳輸異常給平臺,整個(gè)事務(wù)將回滾。階段20和40保證是數(shù)據(jù)庫事務(wù)的一部分,而10有可能是其一部分。

任何在數(shù)據(jù)庫事務(wù)內(nèi)執(zhí)行的注冊的plugin返回異常的時(shí)候,平臺會(huì)取消核心操作,導(dǎo)致核心操作回滾。此外,任何注冊到pre-event或post event的plugin都將不運(yùn)行,任何被相同事件觸發(fā)的workflow亦然。

?

參考:http://ashishmahajancrm.blogspot.com/2012/07/microsoft-dynamics-crm-2011-event.html

轉(zhuǎn)載于:https://www.cnblogs.com/hhelibeb/p/11086723.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的【转】Dynamics 365中的事件框架与事件执行管道(Event execution pipeline)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。