add this feature for target attribute:
use ${metadataKey} for value from metadata, $[messageKey] for value from the message body
			
			
This commit is contained in:
		
							parent
							
								
									436e19d652
								
							
						
					
					
						commit
						551f67ec02
					
				@ -68,8 +68,11 @@ public abstract class TbEntityGetAttrNode<T extends EntityId> implements TbNode
 | 
			
		||||
 | 
			
		||||
        Map<String, String> mappingsMap = new HashMap<>();
 | 
			
		||||
        config.getAttrMapping().forEach((key, value) -> {
 | 
			
		||||
            String processPattern = TbNodeUtils.processPattern(key, msg);
 | 
			
		||||
            mappingsMap.put(processPattern, value);
 | 
			
		||||
            log.info("key = {}, value = {}", key, value);
 | 
			
		||||
            log.info(msg.toString());
 | 
			
		||||
            String processPatternKey = TbNodeUtils.processPattern(key, msg);
 | 
			
		||||
            String processPatternValue = TbNodeUtils.processPattern(value, msg);
 | 
			
		||||
            mappingsMap.put(processPatternKey, processPatternValue);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        List<String> keys = List.copyOf(mappingsMap.keySet());
 | 
			
		||||
@ -94,6 +97,7 @@ public abstract class TbEntityGetAttrNode<T extends EntityId> implements TbNode
 | 
			
		||||
    private void putAttributesAndTell(TbContext ctx, TbMsg msg, List<? extends KvEntry> attributes, Map<String, String> map) {
 | 
			
		||||
        attributes.forEach(r -> {
 | 
			
		||||
            String attrName = map.get(r.getKey());
 | 
			
		||||
            log.info("attrName = {}, value = {}", attrName, r.getValueAsString());
 | 
			
		||||
            msg.getMetaData().putValue(attrName, r.getValueAsString());
 | 
			
		||||
        });
 | 
			
		||||
        ctx.tellSuccess(msg);
 | 
			
		||||
 | 
			
		||||
@ -72,7 +72,7 @@ public abstract class AbstractAttributeNodeTest {
 | 
			
		||||
    final RuleChainId ruleChainId = new RuleChainId(Uuids.timeBased());
 | 
			
		||||
    final RuleNodeId ruleNodeId = new RuleNodeId(Uuids.timeBased());
 | 
			
		||||
    final String keyAttrConf = "${word}";
 | 
			
		||||
    final String valueAttrConf = "result";
 | 
			
		||||
    final String valueAttrConf = "${result}";
 | 
			
		||||
    @Mock
 | 
			
		||||
    TbContext ctx;
 | 
			
		||||
    @Mock
 | 
			
		||||
@ -95,6 +95,7 @@ public abstract class AbstractAttributeNodeTest {
 | 
			
		||||
 | 
			
		||||
        metaData = new HashMap<>();
 | 
			
		||||
        metaData.putIfAbsent("word", "temperature");
 | 
			
		||||
        metaData.putIfAbsent("result", "answer");
 | 
			
		||||
 | 
			
		||||
        this.node = node;
 | 
			
		||||
        this.node.init(null, nodeConfiguration);
 | 
			
		||||
@ -181,7 +182,7 @@ public abstract class AbstractAttributeNodeTest {
 | 
			
		||||
 | 
			
		||||
        node.onMsg(ctx, msg);
 | 
			
		||||
        verify(ctx).tellSuccess(msg);
 | 
			
		||||
        assertEquals(msg.getMetaData().getValue("result"), "highest");
 | 
			
		||||
        assertEquals(msg.getMetaData().getValue("answer"), "highest");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void entityAttributeFetched(EntityId entityId) {
 | 
			
		||||
@ -193,7 +194,7 @@ public abstract class AbstractAttributeNodeTest {
 | 
			
		||||
 | 
			
		||||
        node.onMsg(ctx, msg);
 | 
			
		||||
        verify(ctx).tellSuccess(msg);
 | 
			
		||||
        assertEquals(msg.getMetaData().getValue("result"), "high");
 | 
			
		||||
        assertEquals(msg.getMetaData().getValue("answer"), "high");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    TbGetEntityAttrNodeConfiguration getTbNodeConfig() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user