速成班101
10 模块
5 周数

自定义记录器

点击复制

创建你自己的记录仪


在上面列出的查找错误的工具不够用的情况下,你总是可以制作自己的记录器,并在其中实现你的所有需求。例如,让我们创建一个记录器,除了事件的一般描述外,还将添加触发该事件的用户及其访问级别的信息。

记录器数据模型

要做到这一点,让我们先在数据库中创建一个模型。我们需要一个非常简单的模型,有三个必填字段。

  • info (text)- 事件的一般信息
  • user (integer)- 用户ID
  • access (array string) - 用户组(可能有几个)


记录仪业务流程

之后,我们将创建一个业务流程,用于向数据库写入日志。它的任务将是接收任何事件的信息,用关于用户的信息来补充,并将最终结果保存在数据库中。

为了获得用户的信息,使用 Auth: Get current user块。请注意,只有在以下情况下,它才能将结果表示为一个用户模型 Middleware Token Auth是在启动其执行的端点上启用的。


我们使用 Expand User来扩展结果并获得所需的字段。在我们的例子中,这些是IDLogin 、和Groups 。使用前两个是很平常的,你只需要把Login 从邮件格式转换为标准的String (To String块)。

在用户组的情况下,情况就有点复杂了。它们是以 Enum格式。这是一个枚举类型,在数据库中只存储一个标识符的列表,而不是它们的文本值。在我们的例子中,值1对应于管理员组(Admins),值2对应于用户组(Users)。

我们的任务是解密这个标识符,并将结果以方便的文本数据的形式写入。为此,你需要。

  • 声明一个变量,关于用户组的文本信息将被写入其中。让我们使用 String ArraySet Variable块。
  • For each loop块开始循环。它将接收一个用户组的数组,然后,在每次迭代中,将下一个组转换为其文本值并将其添加到数组中。
  • 使用该 Switch块,检查用户组,并根据结果,进一步引导这个过程。
  • 使用 StringSet Variable块,将用户组的所需值存储在一个变量中。
  • 使用 Append ArraySet Variable块将结果添加到一个数组中,并将其存储在循环开始前声明的一个变量中。


循环完成后,你应该使用 Concat Strings (Multiple)块从分散的数据中形成一个最终的字符串,这个字符串将被转换为 Text并写到日志中。


最后要做的事情是生成 log模型并将其写入数据库。


结果的BP应该是这样的。


记录器端点

业务流程已经准备好了。现在我们需要为它创建一个端点。要做到这一点,我们将用刚刚创建的业务流程替换系统中的 POST /log/端点的系统业务流程,替换为刚刚创建的业务流程。


现在我们自己的日志已经完全准备好了。你可以回到模块的最开始,回到 Basic functions业务流程,用你自己制作的日志替换标准日志。


现在,每次开始计算时,一个特殊的日志不仅会记录这个事件的事实信息,而且会记录哪个用户做了这个事件。我们可以在下面检查结果 Swagger.


很好,我们的日志真的起作用了。现在它包含了关于事件、用户的登录和他的访问权限的信息。

可能的错误和建议的行动

结果是,我们构造了可能的错误变体和纠正错误的行动。

  • 业务流程本身的错误。建议使用日志进行分步验证。因此,你可以检查启动某个业务流程块的事实以及该块使用的所有参数,包括输入和输出。
  • 向服务器发送请求时出现的错误。要做到这一点,请在浏览器中使用Developer Tools 。你可以检查请求被发送的事实,解析其结构,并查看收到的响应。
  • 请求是畸形的。建议使用Swagger ,进行彻底的测试,检查各种查询选项,以及参数组合。
  • 请求的结果没有被正确解析。发生的情况是,我们在不应该的地方等待结果。例如,我们向数据库添加数据,但在显示这些数据的表中没有更新它们。记住,每个组件都需要一个相应的业务流程,并确保这个流程配置正确。
Was this article helpful?
还在寻找答案吗?
加入社区