Sugarcrm支持 产品指南 糖开发人员 糖开发人员指南10.3 建筑学 糖逻辑
此版本仅适用于Sugarcloud客户。

糖逻辑

概述

糖逻辑 是所有糖产品中的功能,可以在服务器和客户端上轻松创建,管理和重用自定义业务逻辑。

糖逻辑由彼此构建的多个组件组成,并且在每一步都是可扩展的。基部组分是甘油配方发动机,其解析和评估人可读性3d彩吧论坛。依赖项是由可以表达自定义业务逻辑的触发器和操作组成的单位。每个依赖关系定义了根据触发3d彩吧论坛的结果执行的动作列表。

术语

  • 3d彩吧论坛 :符合3d彩吧论坛引擎语法的表达式,由嵌套功能和现场变量组成
  • 功能 :一种可以在3d彩吧论坛中调用的方法
  • 扳机 :当更新等式中的字段或检索记录时,评估为true或false的3d彩吧论坛
  • 行动 :一种修改当前记录或布局以某种方式修改的方法
  • 依赖性 :一个完整​​的逻辑单元,包括触发器和一个或多个动作

糖配方发动机

3d彩吧论坛

基本对象称为3d彩吧论坛。可以使用糖逻辑解析器对给定记录进行评估3d彩吧论坛。

一些示例3d彩吧论坛是:

基本补充:

add(1, 2)

布尔值:

not(equal($billing_state, "CA"))

计算:

multiply(number($employees), $seat_cost, 0.0833)

类型

糖逻辑有几种基本类型: 数字 , 细绳 , 布尔基 , 和 枚举 (名单)。函数可以采用这些类型或其组合中的任何一种,并作为输出其中一个类型。字段通常也可能将其值设置为仅为某种类型。

数字类型

数字类型基本上代表任何实数(包括正,负和十进制数)。它们可以明显地键入任何功能。例如,操作(10 + 10 +(15-5))可以如下进行:

add(10, 10, subtract(15, 5))
字符串类型

字符串类型非常类似于大多数编程语言的字符串。但是,它只能在双引号中声明。例如,考虑此函数,返回输入字符串的长度:

strlen("Hello World")

该功能将适当返回值11。

布尔类型

布尔类型很简单。它可以是两个值之一:“真实”或“假”。此类型主要充当标志,指示是否满足了条件。例如,此函数包含两个字符串作为输入,如果第一个字符串包含第二个字符串,或“false”,则返回“true”:否则:

and(contains("Hello World", "llo Wo"), true)

该函数将适当地返回值“true”。

枚举类型(列表)

枚举类型是项目的集合。这些项目不需要全部相同类型,它们可以变化。可以使用枚举功能声明枚举,如下所示:

 枚举 ("hello world!", false, add(10, 15))

Alternatively, the createList() function (an alias to enum) can be used to create enums in a formula.

createList("hello world!", false, add(10, 15))

此功能将适当地返回包含“Hello World!”,false和25作为其元素的枚举类型。

链接表示关系的一侧,用于访问相关记录。例如,Contacts的帐户链接字段用于访问与联系人相关的帐户的Account_type字段:

related($accounts, "account_type")

对于大多数开箱关系,链接以小写字母命名为相关模块的名称。

请按照以下步骤查找不遵循上面“公约”的关系的链接字段的名称:

  1. 打开您正在处理的模块的Vardef文件: ./cache/modules/{module}/{module}vardefs.php
  2. 找到与您正在寻找的关系匹配的链接字段。

功能

功能 are methods to be used in formulas. Each function has a function name, a parameter count, a parameter type requirement, and returns a value. Some functions such as add() can take any number of parameters. For example: add(1), add(1, 2) , 和 add(1, 2, 3) are all valid formulas. Functions are designed to produce the same result whether executed on the server or client.

触发

触发器是一个对象侦听字段值的更改,并且在发生更改后,触发关联的 行动 在一个 依赖性 .

行动

操作是以某种方式修改目标的函数,并且在触发器为真时被触发。大多数操作需要至少两个参数:目标和3d彩吧论坛。例如,样式操作将基于传递的字符串3d彩吧论坛更改字段的样式。值操作将通过评估3d彩吧论坛中传递的字段更新字段的值。

不起作用

不应是以某种方式修改目标的函数,并且在触发器为false时被解雇。不记录是可选的,如果没有定义,则在触发为false时不会启动任何内容。大多数不记录需要至少两个参数:目标和3d彩吧论坛。例如,样式操作将基于传递的字符串3d彩吧论坛更改字段的样式。值操作将通过评估3d彩吧论坛中传递的字段更新字段的值。

依赖性

依赖性基于触发器和一组操作描述了一组规则。示例包括一个字段,其属性必须动态更新,或者在未选择下拉下降值时必须隐藏的面板。当触发依赖项时,它将适当地执行它所设计的动作。基本依赖性是当字段的值取决于评估表达式的结果时。例如,考虑一个带有五个字段的页面,它是“a”,“b”,“c”,“d”和“sum”。通过使用将它们链接在一起的表达式,可以在“和”和其他四个字段之间创建通用依赖关系,在这种情况下,在这种情况下添加表达式。所以我们可以以这种方式定义表达式:'添加($ a,$ b,$ c,$ d)',其中每个字段ID以美元($)符号为前缀,以便动态更换该字段的值执行表达的时间。

更自定义依赖项的示例是当字段的样式必须以某种方式更新到某个值。例如,具有ID“TEMP”的DIV必须彩色蓝色。在这种情况下,我们需要更改“TEMP”的背景颜色属性。因此,在这种情况下,我们定义了一个方法,并将其传递它,需要执行的字段ID和样式更改,并且当触发时,它将改变我们指定的对象的样式。

基于糖逻辑的特征

计算的字段

现在可以从Studio和模块构建器中创建具有计算值的字段。该值是基于糖逻辑3d彩吧论坛计算的。这些3d彩吧论坛用于创建在编辑视图和服务器端在客户端执行的新依赖项。3d彩吧论坛保存在各种因素或Vardef扩展中,并可直接创建和编辑。例如,机会中简单计算的佣金领域的元数据可能如下所示:

'commission_c' => array(
    'name' => 'commission_c',
    'type' => 'currency',
    'calculated' => true,
    'formula' => 'multiply($amount, 0.1)',
    //enforced causes the field to appear read-only on the layout
    'enforced' => true
),

依赖的领域

当相关3d彩吧论坛对布尔值为True的结果时,依赖字段将仅出现在布局上。目前这些无法通过Studio创建,并且必须使用自定义VARDEF或VARDEF扩展手动启用。 “依赖性”属性包含在应可见此字段时定义的表达式。仅在帐户年收入超过一百万时出现的示例字段。

'dep_field'=> array(
    'name' => 'dep_field',
    'type' => 'varchar',
    'dependency' => 'greaterThan($annual_revenue, 1000000)',
),

依赖下降

依赖下拉目是下拉下拉下降,当触发下拉下拉目中所选值更改时,选项会更改。元数据在VARDEF中定义,包含两个主要组件,一个“触发”ID,它是触发下拉字段的名称和“可见性网格”,它定义了触发下拉列表中每个键可用的选项集。例如,您可以在可用值依赖于行业字段的帐户中定义子行业字段。

'sub_industry_c' => array(
    'name' => 'sub_industry_c',
    'type' => 'enum',
    'options' => 'sub_industry_dom',
    'visibility_grid'=> array(
        'trigger' => 'industry',
        'values' => array(
            'Education' => array(
                'primary', 
                'secondary', 
                'college'
            ),
            'Engineering' => array(
                'mechanical', 
                'electrical', 
                'software'
            ),
        ),
    ),
),

清除糖逻辑缓存

The ./updatecache.php script traverses the Expression directory for every file that ends with "Expression.php" (ignoring a small list of excepted files) and constructs both a PHP and a JavaScript functions cache file which resides in ./cache/Expressions/functions_cache.js and ./cache/Expressions/functionmap.php. If you create your custom expressions, you will need to rebuild the sugar logic functions by navigating to:

Admin > Repair > Rebuild Sugar Logic Functions

主题

最后修改:2021-01-06 23:28:41