创建一个域,其中单个标签映射到多个值

时间:2017-07-11 20:08:58

标签: ibm-odm

我的输入数据具有多个值可以引用单个业务友好的语言表达(域标签)的属性。我试图弄清楚如何在Rule Designer中表示它。我是ODM的新手,还在学习绳索 - 目前正在使用ODM 8.8.1(分布式/ Java)。

想象一下将邮政编码前缀映射到其状态。例如,以967和968开头的邮政编码是夏威夷。简而言之,我想将规则表达为"如果邮政编码前缀是夏威夷......"而不是与967和968的比较。在域名方面,967和968是真正的基础属性值,夏威夷是语言标签。但显然BOM-to-XOM期望单一回报,任意选择967或968是不正确的。

我的实际情况要复杂得多,涉及用户永远不会知道或认识的长串隐藏代码值,但概念是相同的。在某些情况下,标签可以映射到15或20个基础值。

ODM域是否可以实现这一目标? (我很确定可以在另一方使用决策表来完成,但我现在真的试图将其解决为域问题。)

2 个答案:

答案 0 :(得分:1)

这里最好的方法是创建一个XOM或BOM类,将状态映射到前缀,然后用你想要的语言表达。我将举例说明将zipcodes映射到状态。

示例:

  1. 使用您的州设置枚举或域名:
  2. 
    
    task createContainer(type: DockerCreateContainer) {
      dependsOn pullImage
      targetImageId { pullImage.getImageId() }
      cmd = ['env']
    
      // deprecated, use the below examples
      env = ['HELLO=WORLD']
    
      // add by appending new map to current map
      envVars << ['one' : 'two', 'three' : 'four']
    
      // add by calling helper method N number of times
      withEnvVar('five', 'six')
      withEnvVar('seven', 'eight')
    }
    
    &#13;
    &#13;
    &#13;

    1. 为您的邮政编码制作课程:
    2. &#13;
      &#13;
      public enum States
      {
      	AL,
      	AK,
      	AZ
        // etc
       }
      &#13;
      &#13;
      &#13;

      1. 创建扩展程序类以执行zipcodes到状态的映射:
      2. &#13;
        &#13;
        public class Zipcode
        {
        	private String zipcode;
        
        	public String getZipcode()
        	{
        		return zipcode;
        	}
        
        	public void setZipcode(String zipcode)
        	{
        		this.zipcode = zipcode;
        	}
        	
        }
        &#13;
        &#13;
        &#13;

        1. 创建一个使用ZipToState的虚拟bom方法:zipIsInState()扩展器:
        2. virtual bom method image

          1. 使用新映射编写规则:
          2. enter image description here

答案 1 :(得分:0)

有可能使用ODM域来解决这个问题,但我怀疑这将是最好的解决方案,因为这不是如何使用域。如果您想要一个状态列表或一个邮政编码前缀列表,那么它们可以在规则中引用,那么ODM域就是一个很好的解决方案。但是为了保持州和它的邮政编码前缀之间的映射,我不太确定;与提供.values()方法的Java枚举不同,ODM域不提供获取域的可能值的方法。

您是否担心维护邮政编码前缀和状态之间的映射?您是否希望业务用户维护映射?

不使用Java的一个选项是定义一个规则集变量来保存夏威夷的邮政编码前缀列表。如果我们假设变量被语言化为夏威夷邮政编码前缀&#39;那么该规则可能表示为&#34;如果邮政编码前缀是夏威夷邮政编码前缀之一&# 39;然后......&#34;。

规则覆盖和层次属性也可能适合您的情况。但这是一个复杂的,很少使用的功能。