Skip to main content
September 24, 2024
Question

Error in Process Model Properties a Process Start Form: Neither variable(s) nor rule(s) found: whentrue

  • September 24, 2024
  • 4 replies
  • 0 views

Hi, i've this pm with the following error in interface

I post the code of interface but not so precisely where the error may be

a!localVariables(
  /*utente e lavorazione*/
  local!utente: rule!TES_getUtenteWeb(utente: ri!utente),
  local!idUtente: index(local!utente, "id", null),
  local!lavorazioneFO: a!isNotNullOrEmpty(local!idUtente),
  local!tesseratoDB: rule!TES_getTesseratoByIdTesserato(id_tesserato: ri!richiesta.idTesserato),
  /*modifica anagrafica: nome, cognome, dt_nascita tesserato*/
  local!anagraficaModificata: a!refreshVariable(
    value: rule!TES_checkModificaAnagraficaTesserato(
      tesseratoDB: local!tesseratoDB,
      tesseratoModificato: ri!tesserato
    ),
    refreshOnVarChange: { ri!tesserato }
  ),
  /*gestione omocodia per disabilitare controllo congruitÃ%A0 e calcolo automatico del codice fiscale*/
  local!is_omocodia: false,
  /*variabili per selezionare il tesserato dalla grliglia omonimi/giÃ%A0 censiti*/
  local!confermaAttivita: false,
  local!idMansioniScelte: index(
    ri!richiestaAddettoMansione,
    "idMansione",
    null
  ),
  /*variabile che salva le vecchie mansioni*/
  local!richiestaAddettoMansioneOld: a!refreshVariable(
    value: a!update(
      ri!richiestaAddettoMansione,
      "attivo",
      false
    ),
    refreshOnReferencedVarChange: false
  ),
  local!richiestaAddettoMansioneNew: a!forEach(
    items: local!idMansioniScelte,
    expression: 'type!{urn:com:appian:types:CYB}CYB_RichiestaAddettoMansione'(
      idMansione: fv!item,
      idRichiesta: ri!richiesta.id,
      attivo: true
    )
  ),
  /*variabile che salva le vecchie attivitÃ%A0 professionali*/
  local!attivitaProfessionaliOld: a!refreshVariable(
    value: a!update(
      ri!attivitaProfessionali,
      "attivo",
      false
    ),
    refreshOnReferencedVarChange: false
  ),
  /*variabile per le nuove attivita professionali*/
  local!attivitaProfessionaliNew: a!forEach(
    items: ri!attivitaProfessionali,
    expression: a!update(
      fv!item,
      {
        "id",
        "attivo",
        "id_tesserato",
        "id_richiesta_addetto"
      },
      {
        null,
        true,
        ri!tesserato.id,
        ri!richiesta.id
      }
    )
  ),
  /*check allegato da modificare*/
  local!rigeneraDichiarazione: rule!CYB_allegatoDichiarazioneDaRigenerare(
    tesseratoOriginale: local!tesseratoDB,
    tesseratoModificato: ri!tesserato,
    attivitaProfessionaliOriginali: local!attivitaProfessionaliOld,
    attivitaProfessionaliModificate: local!attivitaProfessionaliNew
  ),
  /*gestione omocodia per disabilitare controllo congruitÃ%A0 e calcolo automatico del codice fiscale*/
  local!isOmocodia: false,
  /*variabile di controllo per i tesserati è giÃ%A0 censiti*/
  local!esistente: 'type!{urn:com:appian:types:TES}TES_Tesserato'(),
  /*variabili per selezionare il tesserato dalla grliglia omonimi/giÃ%A0 censiti*/
  local!tesseratoSelezionato: 'type!{urn:com:appian:types:TES}TES_Tesserato'(),
  local!cancel,
  /*calcolo e controlli codice fiscale*/
  local!codice_fiscale: a!refreshVariable(
    value: if(
      and(
        a!isNotNullOrEmpty(ri!tesserato.paese_di_nascita),
        ri!tesserato.paese_di_nascita = cons!TES_NAZIONALITA[2],
        a!isNotNullOrEmpty(ri!tesserato.luogo_di_nascita),
        not(local!isOmocodia),
        a!isNotNullOrEmpty(ri!tesserato.nome),
        a!isNotNullOrEmpty(ri!tesserato.cognome),
        a!isNotNullOrEmpty(ri!tesserato.sesso),
        a!isNotNullOrEmpty(ri!tesserato.dt_nascita),
        a!isNotNullOrEmpty(ri!tesserato.paese_residenza),
        ri!tesserato.paese_residenza = cons!TES_NAZIONALITA[1],

      ),
      /*estero*/
      rule!TES_CalcolaCF(
        nome: ri!tesserato.nome,
        cognome: ri!tesserato.cognome,
        sesso: ri!tesserato.sesso,
        dataNascita: ri!tesserato.dt_nascita,
        codiceBelfiore: index(
          rule!TES_getCodiceBelfioreEstero(ri!tesserato.luogo_di_nascita),
          "codicebelfiore",
          null
        )
      ),
      /*italia*/
      if(
        and(
          not(local!isOmocodia),
          a!isNotNullOrEmpty(ri!tesserato.nome),
          a!isNotNullOrEmpty(ri!tesserato.cognome),
          a!isNotNullOrEmpty(ri!tesserato.sesso),
          a!isNotNullOrEmpty(ri!tesserato.dt_nascita),
          a!isNotNullOrEmpty(ri!tesserato.luogo_di_nascita)
        ),
        rule!TES_CalcolaCF(
          nome: ri!tesserato.nome,
          cognome: ri!tesserato.cognome,
          sesso: ri!tesserato.sesso,
          dataNascita: ri!tesserato.dt_nascita,
          codiceBelfiore: index(
            rule!TES_getCodiceBelfiore(ri!tesserato.luogo_di_nascita),
            "codicebelfiore",
            null
          )
        ),
        null
      )
    ),
    refreshOnReferencedVarChange: true
  ),
  /*controllo univocitÃ%A0 tesserato post modifica*/
  local!isAnagraficaRecuperata: false,
  local!is_omonimia: false,
  local!tesseratoNonUnivocoPostModificaRef: a!refreshVariable(
    value: if(
      local!anagraficaModificata,
      rule!TES_checkUnivocitaAnagraficaTesseratoModificata(tesserato: ri!tesserato),
      false
    ),
    refreshOnVarChange: {
      ri!tesserato.nome,
      ri!tesserato.cognome,
      ri!tesserato.dt_nascita
    }
  ),
  local!tesseratoNonUnivocoPostModifica: local!tesseratoNonUnivocoPostModificaRef,
  local!checkCodiceFiscale: a!refreshVariable(
    value: if(
      a!isNotNullOrEmpty(
        index(
          rule!TES_getTesseratoByCodiceFiscale(codice_fiscale: local!codice_fiscale),
          "id",
          null
        )
      ),
      index(
        rule!TES_getTesseratoByCodiceFiscale(codice_fiscale: local!codice_fiscale),
        "id",
        null
      ) = ri!tesserato.id,
      true
    ),
    refreshOnVarChange: { local!codice_fiscale }
  ),
  local!codiceFiscaleOmocodia: local!tesseratoDB.codice_fiscale,
  local!checkAnagraficaRecuperataNonUnivocaOmocodia: and(
    local!isAnagraficaRecuperata,
    a!isNotNullOrEmpty(local!codiceFiscaleOmocodia),
    local!codiceFiscaleOmocodia <> ri!tesserato.codice_fiscale,
    a!isNotNullOrEmpty(
      index(
        rule!TES_getTesseratoByCodiceFiscale(
          codice_fiscale: local!codiceFiscaleOmocodia
        ),
        "id",
        null
      )
    ),
    toboolean(ri!tesserato.omocodia) = true
  ),
  local!checkAnagraficaRecuperataNonUnivocaOmonimia: and(
    local!isAnagraficaRecuperata,
    toboolean(local!is_omonimia) <> true,
    a!isNotNullOrEmpty(
      index(
        rule!TES_getTesseratoByCodiceFiscale(
          codice_fiscale: local!codice_fiscale
        ),
        "id",
        null
      )
    ),
    toboolean(ri!tesserato.omocodia) = true
  ),
  local!checkOmocodiaEdit: and(
    toboolean(local!isAnagraficaRecuperata) <> true,
    a!isNotNullOrEmpty(local!codiceFiscaleOmocodia),
    local!codiceFiscaleOmocodia <> local!tesseratoDB.codice_fiscale,
    a!isNotNullOrEmpty(
      index(
        rule!TES_getTesseratoByCodiceFiscale(
          codice_fiscale: local!codiceFiscaleOmocodia
        ),
        "id",
        null
      )
    ),
    toboolean(ri!tesserato.omocodia) = true
  ),
  local!checkOmocodiaInsert: and(
    toboolean(local!isAnagraficaRecuperata) <> true,
    a!isNotNullOrEmpty(local!codiceFiscaleOmocodia),
    a!isNotNullOrEmpty(
      index(
        rule!TES_getTesseratoByCodiceFiscale(
          codice_fiscale: local!codiceFiscaleOmocodia
        ),
        "id",
        null
      )
    ),
    toboolean(local!is_omocodia) = true
  ),
  local!checkOmonimiaInsert: and(
    toboolean(local!isAnagraficaRecuperata) <> true,
    a!isNotNullOrEmpty(
      index(
        rule!TES_getTesseratoByCodiceFiscale(
          codice_fiscale: local!codice_fiscale
        ),
        "id",
        null
      )
    ),
    toboolean(local!is_omonimia) = true
  ),
  local!recuperoInCorso: or(
    /*modifica senza recupero*/
    local!tesseratoNonUnivocoPostModifica,
    /*modifica post recupero*/
    and(
      not(local!checkCodiceFiscale),
      toboolean(local!is_omocodia) <> true,
      toboolean(ri!tesserato.omocodia) <> true
    ),
    /*omocodia*/
    local!checkAnagraficaRecuperataNonUnivocaOmocodia,
    local!checkOmocodiaEdit,
    local!checkOmocodiaInsert,
    /*omonimia*/
    local!checkAnagraficaRecuperataNonUnivocaOmonimia,
    local!checkOmonimiaInsert
  ),
  {
    /*banner tesserato giÃ%A0 censito */
    if(
      local!recuperoInCorso,
      rule!TES_BannerModificaTesseratoCensito(
        is_omocodia: local!isOmocodia,
        azione_bo: not(local!lavorazioneFO),
        tesseratoDB: local!tesseratoDB,
        tesseratoModificato: ri!tesserato,
        tesseratoSelezionato: local!tesseratoSelezionato,
        tesseratoNonUnivocoPostModifica: local!tesseratoNonUnivocoPostModifica,
        codiceFiscaleOmocodia: local!codiceFiscaleOmocodia,
        isAnagraficaRecuperata: local!isAnagraficaRecuperata,
        is_omonimia: local!is_omonimia,
        codiceFiscale: local!codice_fiscale
      ),
      null
    ),
    /*Dettagli richiesta*/
    rule!TES_ModificaDatiAnagrafici(
      tesserato: ri!tesserato,
      modificaFO: local!lavorazioneFO,
      pratica: ri!pratica,
      isOmocodia: local!is_omocodia,
      codiceFiscale: local!codice_fiscale,
      processo: cons!TES_TIPOLOGIA_PROCESSO[9],
      codiceFiscaleOmocodia: local!codiceFiscaleOmocodia,
      recuperoInCorso: local!recuperoInCorso,
      isAnagraficaRecuperata: local!isAnagraficaRecuperata,
      isOmonimia: local!is_omonimia
    ),
    /*attivita professionali e mansione*/
    rule!CYB_DettagliRichiestaAddetto(
      attivitaProfessionali: ri!attivitaProfessionali,
      tesserato: ri!tesserato,
      conferma_attivita: local!confermaAttivita,
      idMansioniScelte: local!idMansioniScelte,
      generatePortalUrl: ri!richiesta.compilazionePortal,
      lavorazioneFO: local!lavorazioneFO,
      richiesta: ri!richiesta,
      scalo: ri!richiesta.scalo
    ),

    a!buttonLayout(
      primaryButtons: {
        a!buttonWidget(
          label: "CONFERMA",
          saveInto: {
            a!save(ri!lavorazioneFO, local!lavorazioneFO),
            a!save(ri!tesserato.codice_fiscale, local!codice_fiscale),
            a!save(
              ri!richiesta,
              a!update(
                ri!richiesta,
                {
                  "modificatoIl",
                  "modificatoDa"
                },
                {
                  now(),
                  loggedInUser()
                }
              )
            ),
            a!save(
              ri!richiestaAddettoMansione,
              local!richiestaAddettoMansioneNew
            ),
            a!save(
              ri!attivitaProfessionali,
              {
                local!attivitaProfessionaliOld,
                local!attivitaProfessionaliNew
              }
            ),
            a!save(
              ri!richiestaAddettoMansione,
              {
                local!richiestaAddettoMansioneOld,
                local!richiestaAddettoMansioneNew
              }
            ),
            a!save(
              ri!attivitaProfessionaliOld,
              local!attivitaProfessionaliOld
            ),
            a!save(
              ri!rigeneraDichiarazione,
              local!rigeneraDichiarazione
            )
          },
          submit: true,
          style: "SOLID",
          disabled: or(
            a!isNotNullOrEmpty(local!esistente.id),
            and(
              or(
                ri!richiesta.compilazionePortal = true,
                and(
                  ri!richiesta.compilazionePortal = false,
                  not(local!confermaAttivita),
                )

              ),

              local!lavorazioneFO
            )
          ),

          loadingIndicator: true
        )
      },
      secondaryButtons: {
        a!buttonWidget(
          label: "ANNULLA",
          saveInto: { a!save(ri!cancel, true) },
          submit: true,
          color: "ACCENT",
          loadingIndicator: true,
          validate: false
        )
      }
    )
  }
)

4 replies

September 25, 2024

Hi [mention:a3f0a7d117f24585a96a6f994b1168a0:e9ed411860ed4f2ba0265705b8793d05] 

I don't understand this language, but it seems like those variables are either not defined or deleted. Can you translate the message in English if possible?

Also, please share the screenshot of the process start form configurations in the process model

mikes0011
Brainy
September 25, 2024

This error will occur when you have an error state in your Start Form (as noted) including any rule it calls as a precedent, which you have quite a few of.  That or you're calling it in an invalid way / passing in something invalid where it's referenced in the process model configuration.

Your sample / start form code here doesn't contain a "whereTrue" keyword but if you have something incorrectly defined in any sub rules / interfaces then the process model will see them as well (we can pretend that it "flattens" all code into a single rule call when evaluating it for saving).  The easiest first step should be to make sure your start form is loading / working correctly in the Interface Editor - if it's working but you still get this error, then search all precedents for anything containing the problematic keyword and look for invalid syntax.

prasantap0900
September 25, 2024

I think the process variables have been deleted or changed. You can check that.

stefanhelzle0001
September 26, 2024

Did you try to search for "whentrue" in the expression search mode in designer?