2011-07-14 13 views
3

我正在製作一個API,用於在我們公司和電話捕獲公司(接受來自我們客戶的電話並捕獲他們的輸入(密鑰,語音信息等))的公司之間進行溝通。如何將電話工作流程存儲在數據庫中,還是有更好的方法?

如何將工作流存儲在數據庫中?我希望能夠爲每個呼叫提供唯一的ID,以便在下次請求時識別它,請求提示,捕獲數據/語音,在第N次錯誤嘗試後返回到工作流程中的某個位置像GOTO)和jumt在成功輸入,結束呼叫的情況下,下一步,等

我想才達到的操作數,如:
- IF(可能多的choise,不只是Y/N,也1,2,3,4 ......,選項)
- 當(N次嘗試)
- GOTO(跳轉到不同的一步 - 不是未來)

我知道,我的解釋太模糊了,我很抱歉。你們都知道自動電話是什麼,以及在這期間會發生什麼。

我很想爲每個新手機捕獲項目分別設置一個工作流程處理類。這樣,如果有人向項目1的step1請求API,代碼將知道它應該將請求傳遞給項目類。 API將具有一個主類(調度程序),它將讀取工作流表並處理將請求提供給所需的項目類。

我想做出靈活而簡單的事情。有沒有人有想法,例子或建議?

這是我的想法。存儲工作流程表

CREATE TABLE `projects_workflow` (
`flow_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`project_id` INT NOT NULL , 
`name` VARCHAR(20) NOT NULL , 
`prompt` VARCHAR(20) NOT NULL , 
`capture` VARCHAR(20) NOT NULL , 
`attempts` INT NOT NULL , 
`success` VARCHAR(20) NOT NULL , 
`error` VARCHAR(20) NOT NULL 
); 

flow_id - 主ID,PROJECT_ID - 項目ID,因爲我們將有不同的項目,名稱 - 工作流節點的名稱(項目編號和名稱作出的唯一密鑰),提示 - 呼叫者會聽到什麼(一個可疑消息),捕獲 - 系統捕獲什麼(入口(6,6,),VOICE,NONE),嘗試 - 在很多時間可以重複,然後再算作錯誤,成功和失敗錯誤導致下一個節點。

可能的工作流程可能是:

flow_id project_id name  prompt capture attempts sccess error 
1  1   capture1 01  6,6  1   endcall error1 
2  1   error1  02  NONE  4   capture1 capture2 
3  1   capture2 03  VOICE  1   endcall 
4  1   endcall 04  ENDCALL 1 

如果在工作流與錯誤事件/節點順利通過誤差種臺將被重置。

所以有人打電話時,如果錯誤將被回覆(4次),他/她會被要求輸入6位數字,然後去捕獲來電語音信息。如果成功,通話將結束。我將記錄數據庫中的每一步。

我可以並且可能會excange與節點,而不是他們的名字

P.S.的ID的研製成功和錯誤列對不起,這個問題的描述很糟糕。

+2

您的問題太寬泛無法回答。嘗試縮小它,並提出每個主題的問題,並具體說明:'我有這個用例......,這是我對數據庫結構的想法有沒有更好的方式來佈置我的數據庫? '那麼當你有你的數據庫時,試着寫一些代碼,如果你被困住了,就你遇到的問題問一個具體的問題。 – Johan

+0

我試圖解釋得更好,併發布到目前爲止我的想法。希望有所幫助。 –

回答

1

您將需要一大堆表格。每個varchar字段都應該是查找表的外鍵。您最終需要的信息超過您可以存儲在該varchar字段中的信息。

也寫下你的各個領域可以採取並繪製狀態轉換圖的所有狀態。然後,您可以識別狀態轉換所依賴的字段。然後,您的工作流表將包含這些字段+一些關聯的操作外鍵。

+0

您能否提供一些鏈接到實施您提案的文章或解決方案? –

+0

我沒有任何鏈接。這只是我在開發電話應用程序時所獲得的個人經驗,這部分電話應用程序部分是爲了做你想做的事。 – MicSim

+0

好的,你至少可以提供更多細節,方案,表格結構等等嗎?我不明白你的答案 –

相關問題