Regulile de business conțin logica unei aplicații App Maker. O regulă este o expresie construită din operatori predefiniți și scrisă ca o formulă Excel. Motorul o evaluează la rulare.

Abordarea prin formule
Regulile sunt gândite pentru utilizatorii care pot scrie formule în Excel. O regulă combină parametri, constante și operatori într-o singură expresie, precum If(1 > 2, 5, 6), care returnează 6. Operatorii se pot imbrica, astfel încât o singură expresie poate citi date, poate parcurge o listă și poate returna un rezultat.
Regulile sunt păstrate separat de procesele care le folosesc. Aceeași regulă poate fi reutilizată în mai multe module, view-uri și fluxuri.
Exemplu
Diagramele de arhitectură prezintă o regulă ca un arbore de operatori. În exemplu, un nod And unește două condiții:
- vârsta solicitantului este mai mare sau egală cu 18;
- venitul plus valoarea taxei este mai mare decât 50.
Regula returnează true doar când ambele condiții sunt adevărate. În editor, aceeași logică este o singură expresie, care folosește operatorii >=, +, > și And.
Unde se folosesc regulile
O regulă poate modifica comportamentul interfețelor, al atributelor de entitate, al acțiunilor și al pașilor din flux. Poate acționa și asupra câmpurilor din șabloanele de documente, mesajelor pentru utilizator, evenimentelor de pagină și afișării conținutului. Modificarea comportamentului include:
- generarea, ascunderea sau afișarea unui element;
- schimbarea culorii, fontului sau stilului;
- atribuirea sau calcularea unei valori;
- activarea sau dezactivarea unui element;
- scrierea unei valori în baza de date.
Tipurile uzuale de reguli sunt regulile de decizie, de validare, de rutare, de transformare și regulile contextuale. Regulile pot citi variabile de proces, valori din formulare și date stocate și pot apela servicii externe prin plugin-uri.
Editorul de reguli
Regulile se scriu în meniul Rules din App Factory Studio. Editorul evidențiază în culori distincte operatorii, parametrii și funcțiile, pe măsură ce regula este scrisă. Editorul oferă și:
- Parse: verifică sintaxa regulii;
- Dependencies: listează toate elementele în care este folosită regula;
- valori de test: valori introduse pentru parametrii regulii, pentru evaluarea rezultatului în timpul editării;
- Operators: lista operatorilor disponibili, cu căutare.
Rule tester din Module tester rulează regulile în cadrul unui modul, verifică valorile parametrilor și permite depanarea.
Operatori binari
Operatorii binari primesc exact doi operanzi.
| Operator | Semnificație | Exemplu |
|---|---|---|
+ - * / | Adunare, scădere, înmulțire, împărțire | 3 - 1 returnează 2 |
% | Restul împărțirii | 5 % 2 returnează 1 |
| | Ridică primul operand la puterea celui de-al doilea | 2 | 8 returnează 256 |
= <> | Egal, diferit | 2 <> 4 returnează true |
< <= > >= | Comparație | 2 < 4 returnează true |
And Or Xor | ȘI, SAU, SAU exclusiv logic | True Xor True returnează false |
Like | Potrivește un șir cu un model | "abdc" Like "%bdc" returnează true |
:= | Atribuie o valoare unui parametru sau membru | Age := 10 |
. | Citește un membru al unei valori de tip custom type | ReadEntity(Person, false, id = 10).name |
Operatorul = compară valori. Atribuirea se face cu := sau cu funcția Assign.
Operatori de tip funcție
Operatorii de tip funcție primesc o listă de operanzi între paranteze. Catalogul acoperă următoarele grupe:
| Grupă | Operatori (selecție) |
|---|---|
| Logică și control | If, Not, IsNull, IsNotNull, IsNullOrEmpty, Try, LastError, Error, Eval, While |
| Matematică | Abs, Sum, Avg, Min, Max, Round, Floor, Exp, Log, Rand |
| Text | Format, Replace, SubStr, Split, Trim, Lower, Upper, Len, IndexOf, RegEx, ToStr |
| Date calendaristice | Date, DateAdd, DateDiff, Day, DayOfWeek, Month, Year, IsWeekendDay, IsLeapYear, ToDate |
| Colecții | Array, Table, Iterate, Aggregate, Any, Count, First, Distinct, Sort, Lookup, MultiLookUp, InList |
| Verificarea identificatorilor | CheckCnp (codul numeric personal), CheckCUI (codul unic de înregistrare), CheckIBAN, IsNumeric, IsDigits |
| Date și parametri | ReadEntity, SaveEntity, DeleteEntity, Assign, EvalParam, GetListOfValues, ReadConfiguration |
| Flux și utilizator | GetNextState, SetNextState, Message, HasPermission, Rule |
| Integrare și formate | CallPlugin, CallPluginWithParams, RefreshPlugin, Cache, ToJson, ToXml, ReadXml, XQuery |
| Fișiere și documente | FileToBase64, ExtractText, DocxToPdf, GetDocMetadata, SetDocMetadata, CompressBytes, GetHash, LocalSign |
Câteva exemple din referința operatorilor:
DateAdd(Date, 1, "day")returnează data de mâine.Count(Array(2,3,4), CurrentValue % 2 = 0)returnează 2.Message("Clientul a fost modificat", "Info")afișează utilizatorului un mesaj de informare.Rule(10)evaluează o altă regulă și returnează rezultatul acesteia.
Motorul de reguli are și operatori AI. Aceștia primesc numele unui model AI și o întrebare (prompt) și returnează răspunsul modelului.







