服务器端方法事件概述

七月 3, 201909:24:08 发表评论 111 浏览
广告也精彩
服务器端方法事件概述

所以你是一个安装了Aras Innovator的程序员,你已经构建了这个神奇的服务器端方法。您想要替换一些AML调用来做一件事,就像公司需要的那样......你如何将它附加到流程中?你设置了一个事件。

那么,这件事情是什么?

服务器(或客户端,但这是一篇不同的博客文章)事件是由特定系统操作触发的方法,无论是获取,编辑,保存等等。在这些事件上设置另一种方法将扩展或覆盖现有的系统功能。可以在Itemtype,Lifecycle,Workflow和其他级别设置事件。出于本博文的目的,我们将使用Itemtype Events。您可以从Itemtype的定义中从该名称的选项卡添加服务器事件

服务器端方法事件概述

此类别中有3种主要类型的事件:之前,之后和之后。事件通常用于验证之前。在将响应发送到客户端之后,事件用于扩展返回的AML语句的处理。事件覆盖标准系统行为,并且创建起来非常复杂,因为您必须完全替换您覆盖的行为,因为系统将不再使用这些事件的开箱即用方法。

通常,事件按以下顺序触发:

  1. 您打开或以其他方式与项目交互。
  2. 您可以在UI中单击该事件的按钮。(新项目,保存等)
  3. 调用OnBefore事件。
  4. 调用OnX系统函数,并将项目保存到DB或从DB请求。
  5. 调用OnAfter事件。
  6. 发生服务器响应,通常以SOAP消息的形式发生。

在关于事件版本的说明之后,让我们接下来按组讨论可能性:

关于事件版本

事件版本已添加到Aras版本11.版本1导致所有事件正常执行,但版本2进行了一些特定更改:

  1. 对OnAfterAdd,OnAfterUpdate和OnAfterVersion进行了修改,以便每次修改操作只运行一次,而不是每个项目列出一次。
  2. 与仅复制所选项目的正常用法相比,OnBefore和OnAfterCopy事件将克隆或版本化项目以及附加到它的关系

好的,回到活动,我在下面提供了一些例子来帮助理解它们:

  • OnBeforeAdd:
    • 这将用于验证,基本上,这个新项目是否包含所有请求的数据,然后才能保存?如果没有,请警告用户并且不要完成add语句。
  • OnAfterAdd:
    • 这里的一个简单示例是投入电子邮件通知,表明该项目已成功创建。
  • 使用onAdd:
    • 覆盖Add方法的可能情况是联合,并通过从另一个系统中提取相关数据来告知系统添加。

更新和版本

注意:如果启用,更新操作也将触发版本控制。

  • OnBeforeUpdate:
    • 原因:验证。那里有正确的东西吗?如果否,取消并通知用户。
  • OnAfterUpdate:
    • 格式化用户看到的数据需要与AML返回的数据不同。
  • 的OnUpdate:
    • 这在联合中用于将信息从外部源提取到Aras系统。
  • OnBeforeVersion:
    • 验证版本控制架构中是否还有数字要使用,否则取消操作并警告用户。
  • OnAfterVersion:
    • 写入当前用户在当前时间戳创建新版本的日志文件。

删除

  • OnBeforeDelete:
    • 这可以用于将删除的项目缓存到另一个系统,或者在删除发生后用于在电子邮件通知中输出(您可以使用OnAfterDelete方法发送电子邮件)。
  • OnAfterDelete中:
    • 这将用于系统可能遗漏的任何清理,可能删除间接绑定到项目但需要在项目时删除的相关项目或注释。
  • OnDelete:
    • 联合使用:从两个系统中删除项目。

得到

  • OnBeforeGet:
    • 在运行之前使用此选项来验证获取查询。特别是如果您使用某种形式的联合,则需要在查询之前确保数据存在。
    • 如果您需要超越标准权限模型,此处的另一个示例是验证某种外部访问权限甚至内部访问权限。
  • OnAfterGet:
    • 您可以使用它来显示响应页面或系统参数之外的返回项目计数。
  • 使用onGET:
    • 您可能希望覆盖get函数的唯一情况是在联合环境中,并且需要以非标准方式查询数据。

促进

  • OnBeforePromote:
    • 在允许状态更改之前验证数据是否存在。
  • OnAfterPromote:
    • 升级后,根据新状态将显示的表单更改为显示不同数据的另一个表单。
  • OnPromote:
    • 联合使用:更改两个数据库中项目的状态。

复制(AKA克隆或另存为...)

复制项目也会触发添加事件。

  • OnBeforeCopy:
    • 验证用户来自预期的权限组,否则取消操作并警告用户。
  • OnAfterCopy:
    • 附加注释以显示该项目从原始项目N分支。

锁定和解锁

  • OnBeforeLock:
    • 用户验证具有权限或项目处于正确的编辑状态。
  • OnAfterLock:
    • 写入当前用户在当前时间戳锁定项目的日志文件。
  • OnBeforeUnlock:
    • 验证用户最近是否已保存更改。
  • OnAfterUnlock:
    • 写入当前用户在当前时间戳解锁项目的日志文件。

方法

这些事件由AML语句触发,其中操作是自定义方法。另一方面,这个事件将触发任何自定义语句,代码中没有一些旁路逻辑。我将此案例留给需要它的专家用户。

特殊事件:GetKeyedName

最后一个事件是非标准事件:您可以覆盖GetKeyedName事件以指定您自己设计的键控名称。这将覆盖系统中的键控名称顺序(如果已设置)。每当添加或更新项目时都会发生此事件。

关于事件排序的注记

Event Ordering字段有自己的部分,因为它很容易破坏,我还需要介绍如何调试它。一般来说,您列出的事件将按列出的顺序执行。主要用法是,如果您有同一事件的多个实例并需要按特定顺序触发,例如特定Itemtype的OnBeforeUpdate方法,然后是组织中所有Itemtype的常规OnBeforeUpdate方法。奇怪的情况是触发多个操作的事件,例如更新和复制,它们也可以调用版本和添加事件。您可能需要非常具体地对它们进行排序,并且调试它们最好的方法是添加一个带有WriteDebug或StreamWriter调用的行来记录事件实际执行的顺序,然后通过字段更正排序错误。

转载于:https://community.aras.com/b/english/posts/an-overview-of-server-side-method-events

  • 微信
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信扫一扫
  • weinxin
admin

发表评论

您必须才能发表评论!