【问题标题】:Project Advice: push ERP/SQL transaction data to Slack项目建议:将 ERP/SQL 事务数据推送到 Slack
【发布时间】:2017-02-22 14:43:25
【问题描述】:

我正在着手一个软件项目,我对如何攻击它有一些想法,但非常感谢一些关于完成任务的一般提示、建议或指导。项目如下:

我的公司有一个 ERP(企业资源规划)系统,我们用它来记录我们的所有业务活动(即创建采购订单、接收发货、创建销售订单、管理库存等)。所有这些活动都是将数据输入到存储在 SQL Server 数据库中的 ERP 系统中。

我想通过短信将此活动推送到某些 Slack 频道。

例如,当运输部门在 ERP 系统中创建“收货条目”(他们在包裹中接收)时,生产团队会在他们的 Slack 频道中收到一条文本说“项目 X 已收到”。

我目前的餐巾草图是这样的:

对于给定的业务活动,创建一个执行 SQL 查询以返回最新数据条目的函数。

将其存储在我自己的外部数据库中。

定期执行这些调用(也许创建一个 Windows 调度程序来执行一个程序,该程序每 30 分钟左右运行一次所有函数??),它将查询中的数据与上次保存在我的外部数据库中的数据进行比较。

如果相同,什么也不做。但如果它们不同:

用这个新数据替换我的外部数据库中的数据,然后使用 Slacks API 将这个新数据的消息发布到 Slack。

我不太确定执行程序以检查 ERP 系统中的新活动的机制,也不确定是否使用第二个数据库来记住以前发送给 Slack 的内容。任何建议将不胜感激。

谢谢! 乔什

【问题讨论】:

    标签: python sql architecture slack-api epicorerp


    【解决方案1】:

    Epicor ERP 内置了强大的扩展系统。

    我将为 ReceiptEntry.Update 创建一个业务流程方法 (BPM)。这不会检查添加的行,但更具体地说是已将 Recieved 标志更改为设置的位置。这将防止您在每次用户保存不完整记录时收到多个通知。

    在 BPM 中,您可以引用外部程序集并从那里调用 Slack API。

    强烈建议您避免尝试在数据库级别而不是应用程序级别执行此操作。如果有人一直在向数据库添加代码,则架构可能会更改,并且维护系统会更加困难。如果处理不当,可能会破坏 Epicor 管理控制台中的数据模型重新生成,并阻止您添加 UD 字段或升级数据库。

    【讨论】:

    • 啊,洞察力真好!我还没有深入研究 BPM。听起来我需要更多地研究 BPM 和外部程序集,你知道有什么好的资源来了解更多吗?
    • BPM 是 Epicor 特定的,因此大部分优质资源都在 epicweb.epicor.com 上,但您需要一个帐户才能进入。
    【解决方案2】:

    您应该调查触发器和队列。您可以将触发器添加到 SQL Server 表中,将消息放在队列上,然后在队列的另一端有一个服务将消息写入 Slack API。

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

    【讨论】:

    • 有趣的东西,我会研究一下,谢谢。我对 SQL Server 结构或表没有太多控制权。我基本上可以从它们中读取。但尽管如此,也许我可以使用触发器。队列是个好主意,想知道我是否可以在程序运行后存储信息
    • 最后有一个队列很有意义,因为 Slack 的速率限制为每秒 1 条消息(是的,它太低了)。因此,您需要一个队列来存储您的消息,而您的服务正在将它们发送到 Slack。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2019-10-01
    • 2017-07-10
    相关资源
    最近更新 更多