跳到内容
All articles
配置

跨对象规则

定义这样一类规则:一个对象上的条件,触发另一个对象上的动作,可以拦住保存、创建一条记录,或者更新相关联的记录。这是一种保证数据完整性的自动化,在表单里写完,不用代码,也不用等某个定时流程。

有些业务规则装不进单个字段的校验里:金额超过一定数目的商机,没有附上方案就不能保存;每一个赢单商机都应当产生一条实施记录;改动一家客户的状态,需要反映到与之关联的合同上。跨对象规则表达的正是这件事:条件在一个对象上,效果落在另一个对象上。

如何创建

  1. 打开“设置”,在“自动化与流程”分组里点击“跨对象规则”。
  2. 填写规则名称,并选择来源对象,也就是要被观察的那类记录所属的对象。
  3. 在“何时”里,选择创建时、编辑时,或创建或编辑时。
  4. 在“条件(全部成立)”里点击“添加条件”,逐行搭建:字段、运算符和值。
  5. 选择动作:拦截、创建记录或更新关联记录。后两者还需要指定目标对象。
  6. 勾选“启用”,然后点击“保存”。

字段是从列表里选的,不是手输的,这样就不会写错内部名称。可用的运算符有等于、不等于、大于、大于或等于、小于、小于或等于、包含、为空和已填写。条件是叠加的:全部成立规则才会触发,而一条不带任何条件的规则则每次都会触发。

三种动作

  • 拦截:阻止保存,并显示你写的拦截提示语。校验发生在写入之前,所以不会留下写了一半的东西。
  • 创建记录:在目标对象上创建一条记录。在“新记录的数据”里,你搭建一组要填入的字段和值。
  • 更新关联记录:遍历目标对象中通过“关联字段”(来源对象上的一个关系字段)指向这条来源记录的那些记录,并把“新值”写进“要修改的字段”。
Example: 规则“大额生意必须附方案”。来源对象:商机。何时:创建或编辑时。条件:金额大于 50000,并且方案为空。动作:拦截,提示语为“金额超过 50,000 元的商机,请先附上方案再保存”。结果:谁想在没有方案的情况下保存,就会看到这条提示,而保存不会发生。

注意事项与边界

  • 由一条规则触发的动作,不会再去重新评估目标对象上的规则。这是有意为之:避免两条规则互相召唤形成死循环,把系统卡住。
  • 一条规则最多接受二十个条件。
  • 取消勾选“启用”会关掉规则而不删除它,这是验证某个怀疑时最稳妥的做法。
  • 会拦截的规则对所有人生效,包括走同一条写入路径的导入和集成。写提示语时,请想着读它的人。
  • 在“更新关联记录”里,“关联字段”是从来源对象的关系字段中选的。没有它、也没有“要修改的字段”,这条规则什么都不做。

谁可以操作

创建、编辑和删除规则需要管理配置的权限。但效果是所有人都会感受到的:任何人保存来源对象的一条记录,都要经过这条规则。

常见问题

  • 我的规则不触发:请确认它处于“启用”状态、触发时机覆盖了你测试的那种操作,并且所有条件在同一时刻都成立。
  • 数字和日期的比较:大于和小于这些运算符按数值比较;等于和包含按文本比较,其中包含不区分大小写。
  • 删掉规则会撤销它已经做过的事吗?不会。已创建的记录和已写入的值都留着;规则只是从此不再起作用。
  • 它和“校验”有什么区别?校验管的是记录本身,逐个字段。跨对象规则看的是一个对象,作用在另一个对象上。

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

免费创建账户
跨对象规则 · Sellio