近年来,越来越多地将Trello视为组织和计划的出色工具。 三年来,我们一直在公司中使用Trello计划许多流程,从休假,商务旅行和达成协议开始,以项目管理结束。
不幸的是,并不是Trello的一切都那么美。 您无法对其执行自定义工作流程。 也就是说,我们需要占用一名员工,将其双手拖到各个董事会中。 该员工如何转移到另一个更有趣,更有创造力的工作中?
当然,您说的是,您可以编写一个脚本来为我们完成所有这些工作。 但是有一个问题。 脚本只能由程序员或了解如何执行此操作的人编写。 他将必须维护脚本。 我们找到了一个更简单,更合乎逻辑的解决方案-这就是语义建模。
语义建模使您可以用自然语言在Trello中编写电路板的所有逻辑。
旅游和度假协调
采用最简单的过程:匹配旅行和假期。 根据我们的规定,每位计划休假或出差的员工都会向Trello发布请求。 该申请属于“待批准”表。

申请一经批准(实际上,这意味着该员工的负责人和/或财务部门的代表已选中该复选框),他们将被移至“同意旅行”列表。 休假的申请分别属于“约定休假”等。 在那之后,您需要通知该雇员他的申请已被同意。
假设我们要使该过程自动化,以便在批准后,应用程序自动移至所需的工作表,并且员工会收到有关应用程序状态更改的通知。 考虑一下我们为此需要的。
必备工具
为了开发模型,我们从Jetbrains MPS(元编程系统)中选择了ide。 作为建模语言,
使用了
d0SL语言-Delta0语义语言,它是基于语义(逻辑)模型创建的。
安装Jetbrains MPS和必要的插件的整个过程在此处进行了完整描述:
https :
//d0sl.imtqy.com/en/quick/installation/ 。
您可以通过以下链接安装完成的Trello电路板模型:
https :
//d0sl.imtqy.com/en/quick/trello/ 。
语义模型。 怎么了
让我们看看Trello板的最终语义模型是什么样的。 它包含我们的规则:
- 复选框是否已选中 -检查ID为id的卡中是否选中了名为requiredCheckBoxName的复选框。 这样我们可以检查我们的申请是否被批准。
- moveCard-将cardId卡移动到列表中,并为用户向应用程序添加评论

该模型有一个谓词checkBoard,该棋盘中的每个卡都会调用该谓词。 卡的标识符,对卡执行最后操作的用户的名称,从中移动了卡的纸张以及当前位于其中的纸张被传送到该纸张上。 进一步在checkBoard中,我们可以设置计划用来处理应用程序的规则。

请注意,语义建模允许您将所有逻辑业务规则放入一个文档中,并以主题区域的语言(模型用户的“本地语言”)编写这些规则。
TrelloBoard基本模型提供了对卡执行操作的能力,该模型如下所示:

如果我们运行模型,则“待批准”表中的应用程序一旦通过批准过程,

系统会将其移至适当的部分,并将申请状态的更改通知制卡商。

但是,如果尚未同意尝试手动移动应用程序,则系统会将其发送到该地点并写上愤怒的评论。
到底是什么?
基本的TrelloBoard模型本质上是我们用Java实现的接口(在本例中为com.gav.semanticTrelloBoard.TrelloBoardDSL类)。
看起来像这样:

我们使用装饰器定义函数名称并实现它们。
我们还具有AiTrelloBoard类,该类使我们可以使用Trello。 它包含功能的Java实现,例如start:

在trelloBoard.properties文件中,我们保留所有trello api参数(例如application_key,board_id等)和last_update_timestamp-上次更新的时间戳。
因此,无需花费太多精力,我们就可以在Trello中自动化必要的业务流程。 使用和维护此解决方案比程序代码方便得多。
显然,语义建模的可能性不仅限于解决这个问题。 确实,如果分析师采用经典的解决问题的方法来首先创建规范,然后由开发人员在此基础上实施架构并编写代码,那么当使用语义建模语言d0sl时,分析师可以使用形式逻辑语言创建任务的规范,这些规范无需人工干预即可转换为可执行代码。 这可以大大降低开发,部署和测试新服务的成本。
我们公开了使用Trello的解决方案,并将其放在
github上 。
我们不仅要提供Trello中流程现代化的工具,还要在这个简单的示例上展示使用诸如语义建模之类的现代方法的优势。 如果您能为此案添加自己的东西,并分享使用我们解决方案的经验,我们将非常高兴。
有用的链接
在此处阅读有关语义建模语言d0sl的更多信息。
这里概述了语义建模的数学基础。