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.cpye nonmmmask.cpy. - Non ha controllo
ctr-abil(commentato). x99-confie' definito ma completamente commentato: nessuna configurazione viene letta.- I messaggi di conferma sovrascrittura (
m-crmk12-4-1...m-crmk12-2-1) vengono mostrati tramiteacc-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.