团队合作导致主动刷新表

发表在2018年8月14日

Smartsheet Engineering培养了一种客户体验为王的文化,团队的每个成员都以确保Smartsheet产品使用起来令人愉快而自豪。ob欧宝娱乐app手机下载

这些令人愉快的功能是通过多个团队的合作建立起来的。来自开发、设计、测试和产品管理的团队都在为客户准备功能方面发挥着作用。ob欧宝娱乐app手机下载来自每一个团队的反馈对于制作高质量的功能是至关重要的。ob欧宝娱乐app手机下载

当自动化团队的首席软件开发工程师Imran Khawaja和质量保证工程师Djordje Savovic一起工作完成一项任务时,就发生了这样的情况,他们只意识到为了构建一个真正有用的解决方案,他们需要转向。

Imran的团队负责编写当表单中发生事件时自动触发的规则,他的团队最近被要求编写的一个规则是,当该行发生某些更改时锁定该行。团队签入了一个解决方案,但当它到达Djordje进行测试时,Djordje指出,锁定行将使与此同时在表中的其他合作者的生活变得困难。

“除非我们主动刷新工作表,”Djordje说,“自动锁定行对用户来说并不是特别有用,因为共享用户可以一直编辑工作表,直到刷新为止。”

Djordje知道应用程序代码中的这种行为,因为他以前做过一些研究——与当前任务无关。他对Smartsheet应用程序的安全性感到好奇,并了解了表格保存过程是如何工作的。

Smartsheet Engineering的各个团队之间的工作关系鼓励对话,Djordje喜欢在一个重视他的投入的地方工作。

“这就是这家公司的好处,”Djordje说。“没有人会抛弃你的观点。他们总是会考虑到这一点。”

当Djordje和Imran在计划行锁功能的测试阶段时,知道表格保存过程是如何工作的就派上了用场。

Djordje Savovic

在Djordje指出签入解决方案将如何影响共享用户之后,Imran和开发团队进行了头脑风暴,想出了一个疯狂的想法。为什么不“伪造”它呢?

“我们疯狂的想法是,”伊姆兰说,“我们能否在不进行真正刷新的情况下,让其他合作者获得最新的更改?我们开始研究它,我们的第一个想法是做一个“假的”合并保存。我们将调用所有与合并保存相同的逻辑,但我们不会真正保存到数据库,只是将响应发送回客户机。

“因为我们的应用已经存在了10-12年,保存过程的东西都很好用。这其中包含了很多逻辑,以确保我们获得所有最新的信息,而不会丢弃其他用户刚刚保存的任何东西。”

自动化团队并不是轻易做出这个决定的,也不是他们的第一个想法。他们的第一个想法是比较床单的两种状态,本质上执行差异。

伊姆兰说:“由于我们合并事物的方式,这种方法被证明是幼稚的。”

因此,伊姆兰和他的团队决定从小处着手,然后采取渐进的方法来解决问题。

“我们采用了安全的方法,”伊姆兰说。“我们正在处理对现有行上现有单元格的更改。每当我们看到表单中出现这些更改时,我们就将这些更改发送回其他共享用户。

“我们将采用我们所知道的最安全的方法,即对现有行的现有单元格进行更改,然后在此基础上进行开发。这就是我们的策略,这样我们就可以确保这个系统能够规模化。”

团队不仅从触发自动更新的事件开始,而且还将表单中的活跃用户数量限制在5个。因此,只要有五个或更少的用户同时查看工作表,并且对现有单元格进行了更改,工作表就会为所有人主动刷新。如果有更多的用户在查看一个表单,那么每个人都将收到通知更改的toaster消息——这就是应用程序在激活刷新功能之前的行为。

伊姆兰主席

伊姆兰解释说:“我们通过查询找到了最活跃的表单以及在指定时间段内有多少用户,得出了这个数字。”“有15个——所以我把限制设置为1/3。如果系统性能良好,我们将提高这个数字。”

因此,如果在给定的时间内工作在一个工作表上的合作者少于5个,那么下面是活动刷新发生的事件顺序。

用户A和用户B都在一个工作表中工作。用户A做了更改,然后他们的数据就会被保存。此时,服务器上的协作服务通过web套接字将消息发送到用户B的客户端。该消息传递工作表的最新修改时间戳。

然后,用户B将消息中的时间戳与自己的时间戳进行比较。如果用户B过期,它将检查服务器,看是否可以主动刷新。活动刷新过程首先进行检查,以确保对工作表的更改只存在于现有行中的现有单元格中。

“如果是这样的话,”伊姆兰说,“它就会创建和我们现在一样的JavaScript包,然后把它发回给用户。”

如果由于某种原因,表不能主动刷新,则记录事件和原因,以供开发团队分析和优先考虑接下来要提供哪些事件。

Smartsheet工程师明白,要使他们的软件稳定且好用,就需要团队合作——考虑来自各方的输入,不断迭代问题以找到最佳解决方案,并以一种为未来功能开发提供强大基础的方式构建东西。

评论

评论