How To

创建自定义函数,并在规则中使用规则

该页面将详细介绍下列与自定义函数相关的主题:

先决条件


你应熟悉以下主题:

 

创建自定义函数并在规则中使用规则


你是否曾经编写过非常相似的一些业务规则?例如,也许你编写了利用常规表达式来从描述字段中删除文本的一个业务规则,还编写了另一个利用相同常规表达式来从标题字段删除该文本的另一个业务规则。或者你有可能编写了一个希望嵌入到另一个业务规则中的业务规则;例如:你创建了一个将你的品牌添加到标题中的规则,你想要将“这个”输出添加到你的描述中。在这两种情况下,你想出了一些、或者几条你想要重复利用的业务规则。这种做法就是创建一个自定义函数。

自定义函数是你所创建的特殊业务规则,并且可用在你的其它业务规则中。它们就像你所熟悉的内置函数一样,例如:IFCONCATENATEREPLACE等。也就是说,它们有一个或多个输入,并且输出一个值。在这篇文章中,我们将探讨如何创建并使用自定义函数。

看看这条业务规则:

using custom functions

注意:这条业务规则使用你从未见过的两个函数“CLEANUP”和“APPENDSKU”。这是两个为该账户创建的自定义函数。以下就是“CLEANUP”的定义:

 cleanup function


创建一个自定义函数


  • 通常,你决定创建一个自定义函数是因为你要一遍又一遍地反复编写业务规则的同一个部分。比方说我们有这两个业务规则:

REGEXREPLACE($itemtitle,"\{.+?\}","")
REGEXREPLACE($itemdescription,"\{.+?\}","")

  • 注意,这两个业务规则之间的唯一区别就是:一个使用的是$itemtitle,而另一个则使用的是$itemdescription。如果我们不予考虑这一区别:

REGEXREPLACE( x ,"\{.+?\}","")

  • 我们在$itemtitle和$itemdescription所在的位置放一个x这有些像代数:x可代表任何事物。现在,我们所做的一切就是通过正确的语法创建一个新规则。

FUNCTION(VARS(@X),REGEXREPLACE(@X,"\{.+?\}",""))

  • 我们用@X代替x这是在自定义函数中指出参数的正确方式。你不必使用“X”。你可以使用任何字母组合。我之所倾向于使用X和Y,因为我非常喜欢代数。
     
  • 保存你的自定义函数。当然,你必须为其命名,将一些信息放在该函数的功能描述中可能是个不错的主意。现在,你可以在任何其它业务规则中使用你的自定义函数了。通过名称就能调用。比方说,我们将该函数命名为“Clean Text”,那么你就可以像这样一样在规则中使用它:

CLEANTEXT($itemdescription)

注意:我们在名称中删除了空格

技术信息与警告


你可以看到,自定义函数的语法是:

FUNCTION(VARS(@v1,@v2,...@vn),expression)

  • 你的自定义函数就像常规业务规则一样,出现在业务规则列表视图中。然而,我们并不显示这些函数正在被其它规则所使用(例如:你可以删除你在业务规则中所使用的一个自定义函数,它可能是坏的)。
  • 应将自定义函数分配给模板中的一个字段。
  • 函数必须至少有一个参数(例如:@X),但是可以有多个参数。
  • 就像常规业务规则一样,表达式可以是文本、数字、库存信息、函数调用以及参数之间的任何组合。
  • 但是,参数并包含对任何自定义函数的调用——只能调用标准函数。
  • 你可以任意命名函数;然而,名称中必须没有空格,并且没有非数字字母字符,就像库存字段名称一样。
  • 自定义函数是针对特定账户的。
  • 你可以在你的“常规”业务规则中随意使用任何数量的自定义函数;它们就像标准函数一样使用。

返回顶部 

在规则中调用规则


用户往往希望从一个规则调用另一个规则。这可通过将“内部规则”转变为带有一个参数的自定义函数来完成。表达式不使用参数。不足之处就是“内部”规则不能再被当作规则来使用。例如,加入你有一个将品牌从标题中删除、名为“Clean Title”的规则:

REGEXREPLACE($ITEMTITLE,$BRAND,"")

你在几个商品数据的标题字段中使用该规则。你还希望创建一个“Description plus Title”的规则,将这个清理过的标题加入你的描述中。

JOIN(" ",$ITEMDESCRIPTION, TBD)

如果你将“Clean Title”改为以下:

FUNCTION(VARS(@X),REGEXREPLACE($ITEMTITLE,$BRAND,""))

那么你的“Description plus Title”规则就是:

JOIN(" ",$ITEMDESCRIPTION, CLEANTITLE(0))

然而,你不能再在你的模板上使用“Clean Title”规则。你必须创建一个名为“CLEANTITLE”的新规则:

CLEANTITLE(0)

返回顶部 
 

用来指明品牌差异的Eval


 

我经常收到“帮助编写业务规则”的请求,例如:

对于我的每个品牌,我希望我的规则能够指出一些稍微不同之处。我能够创建一个映射表,将品牌放在左栏,右栏放置我想要为该品牌使用的基本业务规则。例如:

Brand X    JOIN(" ",$title,$brand,$manufacturer)
Brand Y    REPLACE($title,$brand,"")

然后,“真正”的规则将是这种形式:

SOMETHING(LOOKUP("The List",$brand))

问题是,“SOMETHING”函数到目前为止并不存在!

介绍一个名为“EVAL”的新函数。EVAL有一个参数:文本值。就像所有函数一样,这个值可以来自任何地方:你可以直接对其“硬编码”,你可以从库存属性中抓取,或者从另一个函数输出中抓取。只需记住,文本必须是有效的业务规则,这个文本将作为业务规则来“运行”。

以下就是思路:创建一个“编写”规则的规则。也就是说,创建一个“其输出是类似业务规则的某些文本”业务规则。对于上述示例,编写规则的规则就是:

LOOKUP("The List",$brand)

然后用EVAL将其用括号括住。

EVAL(LOOKUP("The List",$brand))

一些技术注意事项:

  • *EVAL并不知道如何调用你的自定义函数,所以避免在你的输入文本中使用这些。
  • 如果你的输入文本有一个语法错误,EVAL将在商品数据中“放弃”该商品。

 

返回顶部

该页面将详细介绍下列与自定义函数相关的主题:

先决条件


你应熟悉以下主题:

 

创建自定义函数并在规则中使用规则


你是否曾经编写过非常相似的一些业务规则?例如,也许你编写了利用常规表达式来从描述字段中删除文本的一个业务规则,还编写了另一个利用相同常规表达式来从标题字段删除该文本的另一个业务规则。或者你有可能编写了一个希望嵌入到另一个业务规则中的业务规则;例如:你创建了一个将你的品牌添加到标题中的规则,你想要将“这个”输出添加到你的描述中。在这两种情况下,你想出了一些、或者几条你想要重复利用的业务规则。这种做法就是创建一个自定义函数。

自定义函数是你所创建的特殊业务规则,并且可用在你的其它业务规则中。它们就像你所熟悉的内置函数一样,例如:IFCONCATENATEREPLACE等。也就是说,它们有一个或多个输入,并且输出一个值。在这篇文章中,我们将探讨如何创建并使用自定义函数。

看看这条业务规则:

using custom functions

注意:这条业务规则使用你从未见过的两个函数“CLEANUP”和“APPENDSKU”。这是两个为该账户创建的自定义函数。以下就是“CLEANUP”的定义:

 cleanup function


创建一个自定义函数


  • 通常,你决定创建一个自定义函数是因为你要一遍又一遍地反复编写业务规则的同一个部分。比方说我们有这两个业务规则:

REGEXREPLACE($itemtitle,"\{.+?\}","")
REGEXREPLACE($itemdescription,"\{.+?\}","")

  • 注意,这两个业务规则之间的唯一区别就是:一个使用的是$itemtitle,而另一个则使用的是$itemdescription。如果我们不予考虑这一区别:

REGEXREPLACE( x ,"\{.+?\}","")

  • 我们在$itemtitle和$itemdescription所在的位置放一个x这有些像代数:x可代表任何事物。现在,我们所做的一切就是通过正确的语法创建一个新规则。

FUNCTION(VARS(@X),REGEXREPLACE(@X,"\{.+?\}",""))

  • 我们用@X代替x这是在自定义函数中指出参数的正确方式。你不必使用“X”。你可以使用任何字母组合。我之所倾向于使用X和Y,因为我非常喜欢代数。
     
  • 保存你的自定义函数。当然,你必须为其命名,将一些信息放在该函数的功能描述中可能是个不错的主意。现在,你可以在任何其它业务规则中使用你的自定义函数了。通过名称就能调用。比方说,我们将该函数命名为“Clean Text”,那么你就可以像这样一样在规则中使用它:

CLEANTEXT($itemdescription)

注意:我们在名称中删除了空格

技术信息与警告


你可以看到,自定义函数的语法是:

FUNCTION(VARS(@v1,@v2,...@vn),expression)

  • 你的自定义函数就像常规业务规则一样,出现在业务规则列表视图中。然而,我们并不显示这些函数正在被其它规则所使用(例如:你可以删除你在业务规则中所使用的一个自定义函数,它可能是坏的)。
  • 应将自定义函数分配给模板中的一个字段。
  • 函数必须至少有一个参数(例如:@X),但是可以有多个参数。
  • 就像常规业务规则一样,表达式可以是文本、数字、库存信息、函数调用以及参数之间的任何组合。
  • 但是,参数并包含对任何自定义函数的调用——只能调用标准函数。
  • 你可以任意命名函数;然而,名称中必须没有空格,并且没有非数字字母字符,就像库存字段名称一样。
  • 自定义函数是针对特定账户的。
  • 你可以在你的“常规”业务规则中随意使用任何数量的自定义函数;它们就像标准函数一样使用。

返回顶部 

在规则中调用规则


用户往往希望从一个规则调用另一个规则。这可通过将“内部规则”转变为带有一个参数的自定义函数来完成。表达式不使用参数。不足之处就是“内部”规则不能再被当作规则来使用。例如,加入你有一个将品牌从标题中删除、名为“Clean Title”的规则:

REGEXREPLACE($ITEMTITLE,$BRAND,"")

你在几个商品数据的标题字段中使用该规则。你还希望创建一个“Description plus Title”的规则,将这个清理过的标题加入你的描述中。

JOIN(" ",$ITEMDESCRIPTION, TBD)

如果你将“Clean Title”改为以下:

FUNCTION(VARS(@X),REGEXREPLACE($ITEMTITLE,$BRAND,""))

那么你的“Description plus Title”规则就是:

JOIN(" ",$ITEMDESCRIPTION, CLEANTITLE(0))

然而,你不能再在你的模板上使用“Clean Title”规则。你必须创建一个名为“CLEANTITLE”的新规则:

CLEANTITLE(0)

返回顶部 
 

用来指明品牌差异的Eval


 

我经常收到“帮助编写业务规则”的请求,例如:

对于我的每个品牌,我希望我的规则能够指出一些稍微不同之处。我能够创建一个映射表,将品牌放在左栏,右栏放置我想要为该品牌使用的基本业务规则。例如:

Brand X    JOIN(" ",$title,$brand,$manufacturer)
Brand Y    REPLACE($title,$brand,"")

然后,“真正”的规则将是这种形式:

SOMETHING(LOOKUP("The List",$brand))

问题是,“SOMETHING”函数到目前为止并不存在!

介绍一个名为“EVAL”的新函数。EVAL有一个参数:文本值。就像所有函数一样,这个值可以来自任何地方:你可以直接对其“硬编码”,你可以从库存属性中抓取,或者从另一个函数输出中抓取。只需记住,文本必须是有效的业务规则,这个文本将作为业务规则来“运行”。

以下就是思路:创建一个“编写”规则的规则。也就是说,创建一个“其输出是类似业务规则的某些文本”业务规则。对于上述示例,编写规则的规则就是:

LOOKUP("The List",$brand)

然后用EVAL将其用括号括住。

EVAL(LOOKUP("The List",$brand))

一些技术注意事项:

  • *EVAL并不知道如何调用你的自定义函数,所以避免在你的输入文本中使用这些。
  • 如果你的输入文本有一个语法错误,EVAL将在商品数据中“放弃”该商品。

 

返回顶部

0
Your rating: None
0
Your rating: None