Актуален ли алгоритм RETE в 2022 году ИЛИ у нас есть лучшие альтернативы, есть ли у нас какие-либо другие стабильные библиотеки правил в JavaScript, кроме nools?

Я работаю с пользовательским вводом, который должен обрабатываться на основе набора правил. Использование nools, но это боль в спине, когда дело доходит до операций JavaScript ES6, таких как IIFE, уменьшение карты, вложенная сортировка.

Разговор об алгоритме RETE в 2022 году может показаться ошеломляющим, но он действительно удобен и имеет смысл. Я использовал nools(который устарел и больше не поддерживается, да!) и он отлично работает, когда вы определяете прямо вперед, когда -> тогда.

Но если я хочу выполнить какую-то операцию JS на выходе, иногда она запускается, а иногда терпит неудачу. Такое поведение заставляет меня думать, что я делаю что-то неправильно ИЛИ оно больше не стабильно (поскольку сейчас активно не поддерживается)

Что я пытаюсь сделать: мои данные имеют очень плохой шаблон DS с вложенными объектами массива и строками вместе.

Данные->

      const matchOutput = [
  {
    X: ['None'],
    Y: ['None'],
    Z: ['1 mg/m3 STEL'],
    A: ['None'],
    name: 'AMER'
  },
  {
    X: [
      '2 mg/m3 TWA (as Sn) Inhalable fraction.',
      '0.2 mg/m3 STEL (as Sn)',
      '0.1 mg/m3 TWA (as Sn)'
    ],
    Y: ['0.1 mg/m3 PEL (as Sn)', '0.1 mg/m3 TWA (as Sn)'],
    Z: ['None'],
    A: ['0.1 mg/m3 REL (as Sn)'],
    name: '2-ethylhexanoate;tin(2+)'
  },
  {
    X: ['0.5 mg/m3 TWA (as Hf)'],
    Y: ['None'],
    Z: ['None'],
    A: ['0.5 mg/m3 REL (as Hf)'],
    name: 'Hafnium dioxide'
  },
  {
    X: ['300 ppm STEL', '200 ppm STEL'],
    Y: ['200 ppm PEL', '300 ppm PEL-STEL', '200 ppm TWA'],
    Z: ['None'],
    A: ['200 ppm REL', '300 ppm REL'],
    name: 'MEK'
  }
];

В моем правиле nools я выполняю операцию сортировки, когда она совпадает.

      matchOutput.sort(()=>{
            exposureControlList.forEach(obj => {
                for (let key in obj) {
                    if (key !== 'name'){
                        obj[key].sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))});
                    } 
                }
            exposureControlList.sort((a, b) => a.name.localeCompare(b.name, 'en'));
            return exposureControlList;
        });

Что должно сортировать внутренний массив в числовые значения desc и внешний массив по ключу .

Эта функция сортировки работает нормально, если в файле JS вы помещаете данные и выполняете вышеприведенную функцию сортировки, но в файле .nools она не работает.

Я относительно новичок в nools, поэтому несколько вопросов:

  1. Я не мог найти какое-либо расширение в VS Code, чтобы увидеть файл правильно (не в виде простого текста)
  2. Если функция неверна, есть ли способ отладить файл .nools?
  3. Можете ли вы самостоятельно протестировать файл .nools?

Спасибо за ваше время.

0 ответов

Другие вопросы по тегам