請教各位:CTI IVR領域該應用那些設計模式?
一個呼叫中心的IVR系統,該用什麼模式呢? ivr系統應該是一個狀態機模型,裡面充斥著各種線路控制的狀態和事件(空閒,震鈴,掛機,放音,錄音,加入會議,離開會議,兩通道連線。。。。。)不過總的來說,線路部分的狀態和事件不會很多,並且是不會經常變化的,可以看成是固定的就那幾個。 然後,做應用的時候,業務邏輯引入的自定義狀態就不可預料了。如何進行解耦?如何保證底層線路控制部分的純潔不被業務邏輯所破壞?IVR系統是一個實時性要求很高的系統,同時也是一個併發量很高的系統(絕對不能用一個通道一個執行緒的方法,只能用狀態機輪詢)。IVR系統的底層可以是各個廠家的語音卡,可以是各個廠家的交換機,可以是來自IP的呼叫,甚至是簡訊,郵件等各種資源。這些應該要和業務邏輯完全分離。 我設想的是用分散式的程式來解耦。外圍的線路資源(如語音板卡)做成獨立的一個程式,不參與業務邏輯,做成一個只會做事,而不知道為什麼做的“傻瓜”。 業務邏輯單獨也是一個程式,和資料庫打交道的也單獨做成一個程式。。。。這樣,處理業務邏輯的程式就是一個依照業務邏輯發號命令,但是不知道如何具體實現這些命令的人(COMAND模式?),其他的各類資源閘道器都和這個業務程式打交道,各資源閘道器彼此之間不打交道(中介模式?)。 如此思路下,那麼一個業務流程的執行就大概如下了: 業務程式執行流程,發現需要對使用者放音,就發個包(SOCKET通訊)給板卡程式,發現需要執行一個儲存過程,就發個包給資料庫程式,發現需要發條簡訊,就發個包給簡訊程式,發現需要做****,就發個包給&&&&. 這樣,板卡程式就只管聽命令,對指定的通道放音,錄音,加入會議之類。然後把底層線路的變化事件發包給業務程式,資料庫程式也是,只管按要求執行儲存過程,然後把結果發包給業務程式,簡訊。。。。等等。這樣,整個系統就很容易擴充了,並且外圍的程式也很容易編寫,用三匯卡,就作個三匯卡函式封裝的板卡程式,用AVAYA交換機,就做個對應的交換機程式。要IP應用,就做個IP閘道器程式等等。 然後,問題就是,這個最核心的業務程式怎麼設計啊?該用那些模式來例項化業務流程?如何維護每個例項的狀態?等等,期待大家的討論,謝謝
相關文章
- 你應該使用領域驅動設計嗎? - codeopinion
- 領域驅動設計戰術模式--領域事件模式事件
- 領域驅動設計戰術模式--領域服務模式
- 停止教條式的領域驅動設計 - CodeOpinion
- nodejs應用領域NodeJS
- Linux 應用領域Linux
- 領域驅動設計--戰術模式簡介模式
- 領域驅動設計戰術模式--值物件模式物件
- 有關theano配置問題想請教各位大佬
- DDD領域驅動設計:領域事件事件
- 戲說領域驅動設計(九)——架構模式架構模式
- 網路安全應用領域有哪些?常見應用領域總結!
- 設計模式 | 策略模式及典型應用設計模式
- 六西格瑪設計在軟體研發領域的應用
- .NET領域驅動設計—看DDD是如何運用設計模式顛覆傳統架構設計模式架構
- 設計模式應用舉例設計模式
- javascript設計模式與應用JavaScript設計模式
- 遊戲設計裡的那些色彩應用遊戲設計
- 擴充 Swift 應用領域Swift
- 效能測試應用領域
- [提問交流]請教[段落]是指的什麼?這個該如何應用啊
- 戲說領域驅動設計(廿五)——領域事件事件
- 你應該知道的 5 種 TypeScript設計模式TypeScript設計模式
- 設計模式 | 中介者模式及典型應用設計模式
- 設計模式 | 外觀模式及典型應用設計模式
- 設計模式 | 模板方法模式及典型應用設計模式
- 設計模式 | 組合模式及典型應用設計模式
- 設計模式 | 享元模式及典型應用設計模式
- 戲說領域驅動設計(廿一)——領域服務
- 【DDD】《如何運用領域驅動設計》彙總
- 程式設計師應該怎樣和領導相處?程式設計師
- 領域驅動設計示例
- MasaFramework -- 領域驅動設計Framework
- DDD領域設計概念梳理
- 理解領域驅動設計
- 庫存系統:應用層、領域層、對接層的架構設計架構
- 萬能的python程式設計,這五大應用領域你知道嗎?Python程式設計
- 設計模式 | 觀察者模式及典型應用設計模式
- 設計模式 | 備忘錄模式及典型應用設計模式