index.ts 2 KB
import { EnrichmentCategoryComponentEnum } from '../../../enum/category';
import { useCreateNodeKey } from '../../../hook/useCreateNodeKey';
import type { NodeItemConfigType } from '../../../types/node';
import { RuleNodeTypeEnum } from '../../index.type';

const keys = useCreateNodeKey(EnrichmentCategoryComponentEnum.RELATED_ATTRIBUTES);

export interface RelatedAttributesDataType {
  someConfiguration?: Recordable;
}

export const RelatedAttributesConfig: NodeItemConfigType = {
  ...keys,
  clazz: 'org.thingsboard.rule.engine.metadata.TbGetRelatedAttributeNode',
  categoryType: RuleNodeTypeEnum.ENRICHMENT,
  name: 'related attributes',
  configurationDescriptor: {
    nodeDefinition: {
      details:
        'Related Entity found using configured relation direction and Relation Type. If multiple Related Entities are found, only first Entity is used for attributes enrichment, other entities are discarded. If Attributes enrichment configured, server scope attributes are added into Message metadata. If Latest Telemetry enrichment configured, latest telemetry added into metadata. To access those attributes in other nodes this template can be used <code>metadata.temperature</code>.',
      description:
        'Add Originators Related Entity Attributes or Latest Telemetry into Message Metadata',
      inEnabled: true,
      outEnabled: true,
      relationTypes: ['Success', 'Failure'],
      customRelations: false,
      ruleChainNode: false,
      defaultConfiguration: {
        attrMapping: {
          temperature: 'tempo',
        },
        relationsQuery: {
          direction: 'FROM',
          maxLevel: 1,
          filters: [
            {
              relationType: 'Contains',
              entityTypes: [],
            },
          ],
          fetchLastLevelOnly: false,
        },
        telemetry: false,
      },
      uiResources: ['static/rulenode/rulenode-core-config.js'],
      configDirective: 'tbEnrichmentNodeRelatedAttributesConfig',
      icon: '',
      iconUrl: '',
      docUrl: '',
    },
  },
};