Vai al contenuto

CRMK12 - Duplicazione/cancellazione struttura workflow

Sorgente: cbl/crmk12.cbl | Program-ID: CRMK12 | Tipo: Subroutine (non interattiva, senza screen section)

Menu: CRM > Operativo > Gestione dossier > Attivita' x dossier (presente a menu ma non avviabile come funzione interattiva)


Scopo

Subroutine che esegue la duplicazione completa o la cancellazione completa di una struttura workflow (testata + step + operatori + stati). Viene chiamata da CRMK06 (gestione anagrafica workflow, Ctrl+V per copia) e potenzialmente da altri programmi del modulo CRM che operano sui workflow. Non possiede una propria interfaccia: opera per parametri ricevuti dal chiamante. I commenti sorgente parlano di "Gestione duplicazione/cancellazione struttura workflow".


File e tabelle

File/Tabella Tipo Modalita' Descrizione
CRMWKFTS ISAM I-O Testata workflow (chiave: tip-ogg + tdo + cod + ver)
CRMWKFST ISAM I-O Step del workflow
CRMWKFOP ISAM I-O Operatori abilitati al workflow
CRMWKFSL ISAM I-O Stati associati al workflow
FEURTAB ISAM Input Tabella features/abilitazioni utente

Copybook utilizzate

Copybook Descrizione
crmk12.select, crmk12.fd, crmk12.wrk SELECT, FD, working storage (Screens)
crmk12.decla, crmk12.prc Declaratives, procedure I/O
cogfiles.cpy Record FEURTAB
wstato.cpy, wopenf.cpy, wgrave.cpy, wnscr.cpy Working storage standard
cogazien.cpy Dati azienda
utilncnf.cpy Linkage RNEWCONF (configurazione non utilizzata: chiamate commentate)
utilcrmk12.cpy Linkage di chiamata (ope, ori-, des-)
wcont.cpy, wcont1.cpy Linkage standard
stato, stato1, winmsg, grave, opengen, mmsubw Infrastruttura standard subroutine

Logica di elaborazione

Inizializzazione (screen-0): Init programma, apertura file, lettura azienda. Branch su crmk12-ope: - "C" -> canc-wkf - altrimenti -> dup-wkf

Cancellazione (canc-wkf): 1. Legge in lock la testata di destinazione (rd-crmwkfts-lk) usando crmk12-des-tip-ogg/tdo/cod/ver. 2. Esegue in cascata: canc-wkfst (cancella tutti gli step), canc-wkfop (cancella tutti gli operatori), canc-wkfsl (cancella tutti gli stati associati). 3. Cancella la testata con del-crmwkfts.

Ogni paragrafo di cancellazione dettaglio (canc-wkfst, canc-wkfop, canc-wkfsl) usa pattern start + rdnxt con controllo di rottura chiave su wkt-chia1.

Duplicazione (dup-wkf): 1. Verifica se nella destinazione (crmk12-des-*) esiste gia' un workflow: scan di CRMWKFST con la chiave destinazione; se esiste mostra un messaggio di conferma all'operatore. Se l'operatore conferma, esegue canc-wkf sulla destinazione prima di procedere. 2. Legge la testata di origine (crmk12-ori-*) da CRMWKFTS. Se non trovata, errore e uscita. 3. Riscrive la testata cambiando la chiave a quella di destinazione, valorizzando wkt-ori-cod/wkt-ori-ver con i riferimenti all'origine. 4. Esegue in cascata: dup-wkfst (duplica step), dup-wkfop (duplica operatori), dup-wkfsl (duplica stati).

I paragrafi di duplicazione dettaglio leggono dalle tabelle origine, sostituiscono i campi chiave con quelli di destinazione, mantenendo i riferimenti origine, e scrivono. Riposizionano la scansione dopo ogni iterazione per evitare loop indefiniti.

Chiamate a sottoprogrammi

Programma Utilizzo
(nessuna chiamata esterna a programmi applicativi) Solo I/O ISAM via copybook

Note implementative

  • Autore: Gianluca Tonti (24/03/2007), originariamente nato come "programma direttamente Win" ma in realta' senza screen section: e' una subroutine.
  • Tipo "subroutine": include mmsubw.cpy e non mmmask.cpy.
  • Non ha controllo ctr-abil (commentato).
  • x99-confi e' definito ma completamente commentato: nessuna configurazione viene letta.
  • I messaggi di conferma sovrascrittura (m-crmk12-4-1 ... m-crmk12-2-1) vengono mostrati tramite acc-conf-custom: tecnicamente non e' totalmente "headless" perche' interagisce con l'operatore in caso di conflitto.
  • Discrepanza menu/programma: nel menu (prog.txt) compare come "Attivita' x dossier" sotto Operativo > Gestione dossier, ma il sorgente attuale e' la subroutine di duplicazione/cancellazione workflow. Possibile riuso del codice del programma rispetto alla voce di menu originaria.