2017-02-22 69 views
1

我正在着手一個軟件項目,我對如何攻擊它有一些想法,但真的很感謝一些關於獲取一般技巧,建議或指導任務完成。項目如下:項目建議:將ERP/SQL交易數據推送到Slack

我的公司有一個ERP(企業資源規劃)系統,用於記錄我們所有的業務活動(即創建採購訂單,接收貨件,創建銷售訂單,管理庫存等)。所有這些活動都是將數據輸入到存儲在SQL Server數據庫中的ERP系統中。

我想通過短信將此活動推送到某些Slack頻道。

例如,當運輸部門在ERP系統中創建'收貨條目'(他們在一個包裹中收到)時,生產團隊會在他們的Slack渠道中收到一條文字說'已收到物品X'。

我現在的餐巾紙素描是:

對於給定的商業活動,創建執行一個SQL查詢返回的最新數據條目的功能。

將其存儲在我自己的外部數據庫中。

定期執行這些調用(也許創建一個Windows調度程序來執行一個程序,該程序每隔30分鐘左右運行一次所有函數??),它將查詢中的數據與上次保存在我的外部數據庫中的數據進行比較。

如果相同,則什麼也不做。但如果它們不同:

用這個新數據替換外部數據庫中的數據,然後使用Slacks API將這個新數據的消息發佈到Slack。

我不太確定執行程序的機制,以檢查ERP系統中的新活動,也不確定是否使用第二個數據庫作爲記憶之前發送給Slack的內容的手段。任何建議將不勝感激。

謝謝! Josh

回答

1

您應該研究觸發器和隊列。您可以將觸發器添加到SQL Server表中,將消息放在隊列上,然後在隊列的另一端有一個服務將消息寫入Slack API。

https://support.microsoft.com/en-us/help/555070

+0

有趣的東西,我會看看他們謝謝。我沒有太多的控制SQL Server結構或表..我基本上只是從他們讀。但儘管如此,也許我可以利用觸發器。隊列是一個好主意,不知道我能否在程序運行後存儲信息 –

+0

由於Slack的速率限制爲每秒1條消息(是的,它很低),因此在隊列末尾有很大的意義。所以你需要一個隊列來存儲你的消息,而你的服務將它們發送到Slack。 –

2

的Epicor ERP內置了一個強大的擴展系統。

我會給ReceiptEntry.Update業務流程方法(BPM)。這不會檢查添加的行,但更具體地說,Recieved標誌已更改爲設置的位置。這會防止您每次用戶保存不完整的記錄時都收到多個通知。

在BPM中,您可以引用外部程序集並從那裏調用Slack API。

強烈建議您避免嘗試在數據庫級別而不是應用程序級別執行此操作。模式可以改變,如果有人向數據庫中添加代碼,維護系統就會變得更加困難。如果沒有仔細執行,它可能會破壞Epicor管理控制檯中的數據模型再生,並阻止您添加UD字段或升級數據庫。

+0

啊偉大的洞察力!我還沒有探索過BPM。聽起來像我需要更多地研究BPM和外部程序集,你知道有什麼好的資源可以更多地瞭解這個嗎? –

+0

BPMs是Epicor特有的,因此大多數優秀資源位於epicweb.epicor.com上,但您需要一個帳戶才能進入此頁面。 –