Differenze tra le versioni di "Exsteram"
(Creata pagina vuota) |
|||
| Riga 1: | Riga 1: | ||
| + | <span id="wiki-streamserve-guida-operativa"></span> | ||
| + | = Wiki StreamServe — Guida Operativa = | ||
| + | <blockquote>Raccolta di appunti operativi su Communication Builder, StoryTeller, Control Center, Overlay Editor e procedure di rilascio. | ||
| + | </blockquote> | ||
| + | <span id="indice"></span> | ||
| + | == Indice == | ||
| + | |||
| + | # [[#communication-builder|Communication Builder]] | ||
| + | # [[#storyteller|StoryTeller]] | ||
| + | # [[#control-center|Control Center]] | ||
| + | # [[#overlay-editor|Overlay Editor]] | ||
| + | # [[#note-varie|Note Varie]] | ||
| + | # [[#3270|3270]] | ||
| + | # [[#come-fare-il-rilascio|Come fare il rilascio]] | ||
| + | # [[#apache-tomcat|Apache Tomcat]] | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="communication-builder"></span> | ||
| + | == Communication Builder == | ||
| + | |||
| + | <span id="creazione-progetto"></span> | ||
| + | === Creazione progetto === | ||
| + | |||
| + | Struttura: '''progetto → nuova cartella “Nome modulo” → new message, new runtime, new resource set''' | ||
| + | |||
| + | Il '''nome del progetto''' è il nome del modulo presente nell’XML. | ||
| + | |||
| + | <span id="message-nomemodulo_msg"></span> | ||
| + | === Message — <code>nomemodulo_Msg</code> === | ||
| + | |||
| + | * Add event '''xmlin''' → <code>nomemodulo_IN</code> | ||
| + | * Add process '''storyteller''' → <code>nomemodulo_OUT</code> | ||
| + | |||
| + | <span id="runtime-nomemodulo_run"></span> | ||
| + | === Runtime — <code>nomemodulo_Run</code> === | ||
| + | |||
| + | * Job <code>nomemodulo_Job</code> → ''add runtime component'' → selezionare il msg | ||
| + | * Collegare i 2 input e <code>httpdPfOut</code> | ||
| + | * Nell’out togliere ''select automatically'' | ||
| + | |||
| + | <span id="resource-set-defaultnomemoduloresourceset"></span> | ||
| + | === Resource Set — <code>DefaultNomemoduloResourceSet</code> === | ||
| + | |||
| + | Nuova cartella con: 1. '''Sample''' 2. '''Overlay''' | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="xmlin"></span> | ||
| + | === XMLIN === | ||
| + | |||
| + | * '''Resource Set → Sample''': importare tutti gli XML del modulo (''import'') | ||
| + | * '''MSG''': aprire xmlin → ''File → Open Sample'' (se non presente, aggiungere il resource set) | ||
| + | |||
| + | <span id="mappare-xml"></span> | ||
| + | === Mappare XML === | ||
| + | |||
| + | <span id="selection-tool"></span> | ||
| + | ==== Selection Tool ==== | ||
| + | |||
| + | * Seleziona soltanto, non effettua azioni. | ||
| + | * Se seleziona una data o un importo già mappato dal Field Tool → ''Input Format'' → selezionare dal resource set il formattatore (tabella <code>Formats.txt</code>). | ||
| + | |||
| + | <span id="pattern-tool"></span> | ||
| + | ==== Pattern Tool ==== | ||
| + | |||
| + | Usarlo per mappare l’attributo <code>mod</code> del modulo (cliccando sul contenuto o su <code>mod</code>). | ||
| + | |||
| + | <span id="field-tool"></span> | ||
| + | ==== Field Tool ==== | ||
| + | |||
| + | <ul> | ||
| + | <li><p>Mappa i dati “secchi” all’altezza in cui ci si trova.</p></li> | ||
| + | <li><p>Prime cose da mappare:</p> | ||
| + | <ul> | ||
| + | <li><code><tipo></code> → variabile <code>$stampa_tipo</code></li> | ||
| + | <li><code><abi></code> → variabile <code>$sicurezza_abi</code></li></ul> | ||
| + | </li> | ||
| + | <li><p>Assegnare una variabile solo in casi specifici (es. se il tag serve per una funzione).</p></li> | ||
| + | <li><p>Per mappare un singolo campo tra diversi uguali:</p> | ||
| + | <pre>/s9Env/parametri/param[@nome='valoreNomeCampo']</pre></li></ul> | ||
| + | |||
| + | <span id="block-tool"></span> | ||
| + | ==== Block Tool ==== | ||
| + | |||
| + | <ul> | ||
| + | <li><p>Mappa i blocchi che si ripetono.</p></li> | ||
| + | <li><p>Esempio:</p> | ||
| + | <syntaxhighlight lang="xml"><firmatari> | ||
| + | <cdg></cdg> | ||
| + | <cdg></cdg> | ||
| + | </firmatari></syntaxhighlight> | ||
| + | <p>Selezionare <code>firmatari</code> con il Block Tool, poi selezionare la cartella creata (es. <code>BlockFirmatari</code>) e selezionare il campo che si ripete (es. <code>cdg</code>) col Block Tool — solo perché è un blocco a sé stante.</p></li> | ||
| + | <li><p>Controllare che il blocco venga mappato (diventa '''grigio'''); se non succede, mapparlo col Field Tool all’interno dei field del blocco.</p></li> | ||
| + | <li><p>Il Block Tool può essere usato anche su campi che non si ripetono, solo per dare un ordine.</p></li></ul> | ||
| + | |||
| + | <span id="msg-script"></span> | ||
| + | === MSG (script) === | ||
| + | |||
| + | <ul> | ||
| + | <li><p>Chiamare la callProc: <code>CallProc("nomedellOut");</code></p></li> | ||
| + | <li><p>Recuperare un campo non definito come variabile (vale ovunque):</p> | ||
| + | <pre>MsgGetValue("nomeCampoMappato")</pre></li> | ||
| + | <li><p>Recuperare il valore di un campo in un blocco a un dato indice:</p> | ||
| + | <pre>MsgGetValue("blocco:indice/campo")</pre></li> | ||
| + | <li><p>In basso a sinistra, tabella '''Note | Dependencies''': aggiungere i resource set (tasto destro → ''Add Resource Set'').</p></li> | ||
| + | <li><p>Nello script:</p> | ||
| + | <syntaxhighlight lang="javascript">// Data di oggi | ||
| + | $dataOggi = dformat("dd/mm/yyyy", getDate()); | ||
| + | |||
| + | // Recuperare il logo | ||
| + | $overlay_logo = cse_getoverlaylogost($sicurezza_abi);</syntaxhighlight></li> | ||
| + | <li><p>Se ci sono più <code>CallProc</code> nel MSG, si possono cambiare i valori delle variabili tra una e l’altra.</p></li> | ||
| + | <li><p>Se ci sono più <code>CallProc</code> (es. a seconda di una condizione se ne esegue una piuttosto che un’altra) e questo dà problemi, bisogna usare variabili con i nomi degli output.</p></li></ul> | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="storyteller"></span> | ||
| + | == StoryTeller == | ||
| + | |||
| + | <span id="setup-base"></span> | ||
| + | === Setup base === | ||
| + | |||
| + | * Su '''OUT''' → ''Connector Selector → Lookup'' → <code>key = $stampa_tipo</code>, <code>value = TipoOutConnector</code> | ||
| + | * Si apre con doppio click sull’OUT. | ||
| + | * '''Page → Insert → Storyframe''' (w:19, x:1, h:26, y:3) | ||
| + | * Sullo storyframe, tasto destro → ''Insert Table'' per inserire una tabella: | ||
| + | ** La tabella deve avere altezza 0; le altre dimensioni si settano “a piacimento” → settare 0 da ''Layout''. | ||
| + | ** '''Story''' (a destra) → ''Repeating → Repeat'': l’XPath indica il blocco che si ripete. | ||
| + | * '''TextArea → Insert → Substitution''': in ''Data XPath'' inserire il nome della variabile. | ||
| + | * Selezionando il campo → ''Format'': si può cambiare il formato di date e importi in OUT. | ||
| + | * Per il repeater in tabella: prima selezionare il repeater (''Table → Repeating → Repeat'' → blocco da ripetere), poi trascinare i campi. | ||
| + | * '''Repeater → Dati → Location''': decide se la ripetizione è verticale o orizzontale. | ||
| + | * '''Area Break''': passa a pagina successiva (tasto destro sulla document view). | ||
| + | * Una volta terminato, su Communication Builder cliccare '''EXPORT'''. | ||
| + | |||
| + | <span id="funzioni-utili"></span> | ||
| + | === Funzioni utili === | ||
| + | |||
| + | <pre>MsgCountID("nome_del_blocco") // conta gli elementi di un blocco | ||
| + | StEvalXpath("nomecampo") // prende il valore di nomecampo nel repeater</pre> | ||
| + | Esempio: | ||
| + | |||
| + | <pre>StEvalXpath("/data/message/Block_SOTTOSCR/CODFISC["+$prog+"]"); | ||
| + | // recupera il campo CODFISC all'indice $prog</pre> | ||
| + | * <code>CTRL+F</code> → apre la ricerca (font, variabili, …) | ||
| + | |||
| + | <span id="fragment-overlay-logo"></span> | ||
| + | === Fragment / Overlay / Logo === | ||
| + | |||
| + | <ul> | ||
| + | <li><p>'''Page → Insert → New Fragment → Content Dependent''' → ''Edit Fragment'' → ''Fragment View'' → ''Insert → New Fragment → Overlay'' (w:11,99 h:4) → ''Fragment''</p> | ||
| + | <ul> | ||
| + | <li><p>'''Fragment URI''' → in ''Modification'' mettere <code>$overlay_logo</code></p></li> | ||
| + | <li><p>Chiudere la Fragment Page → recuperare il logo nel MSG:</p> | ||
| + | <pre>$overlay_logo = cse_getoverlaylogopers($sicurezza_abi);</pre></li></ul> | ||
| + | </li> | ||
| + | <li><p>Per numero di pagina e footer (sempre dal fragment creato): in fondo creare una tabella, poi 2 substitution:</p> | ||
| + | <pre>$pg = page(); | ||
| + | $pgS = pages();</pre></li></ul> | ||
| + | |||
| + | <span id="punto-firma"></span> | ||
| + | === Punto firma === | ||
| + | |||
| + | <pre>$firma = "Firma " + StEvalXpath("cdg") + " con Tablet ___________________________ " + "progressivo"</pre> | ||
| + | * Il punto firma deve essere di colore '''bianco non trasparente'''. | ||
| + | * Il font del punto firma deve essere massimo '''6''' di grandezza. | ||
| + | * Inserire i nomi dei firmatari nei punti firma. | ||
| + | * Gli importi hanno '''2 cifre decimali''' e sono allineati a '''destra'''. | ||
| + | * Si possono creare story per gli elementi che si ripetono. | ||
| + | |||
| + | <span id="repeater"></span> | ||
| + | === Repeater === | ||
| + | |||
| + | * Su '''Repeater Filter XPath''' si può filtrare mettendo <code>nome_campo = "value"</code>. | ||
| + | * Su XPath si può mettere un filtro tra quadre: <code>/BLOCK[nome_campo = 'valore']</code> | ||
| + | * <code>position() = 1</code> → prende solo il primo valore (al netto di un eventuale filtro già presente nell’XPath). | ||
| + | * '''Sorting Criteria → XPath''': setta il campo per il sorting (controllare che dia solo il percorso relativo del campo, non tutto). | ||
| + | * Se due blocchi hanno una '''FK''' (foreign key) in comune → si può fare un repeater dentro l’altro e confrontare la FK, in modo da stampare solo i valori corrispondenti, usando il filtro XPath. | ||
| + | * <code>skip()</code> salta il dato nel ciclo. | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="control-center"></span> | ||
| + | == Control Center == | ||
| + | |||
| + | Per stampare localmente il modulo su cui si sta lavorando si usa il '''Control Center''': | ||
| + | |||
| + | <ol style="list-style-type: decimal;"> | ||
| + | <li><p>Generare l’export da Communication Builder.</p></li> | ||
| + | <li><p>''Export → Export From File''.</p></li> | ||
| + | <li><p>Controllare che nell’XML il campo <code><tipo></code> sia valorizzato a <code>FILEPDF</code>.</p></li> | ||
| + | <li><p>Una volta avviato, mettere l’XML in:</p> | ||
| + | <pre>C:\ManagementGateway\16.6\root\applications\Riccardo\Production\spool</pre></li> | ||
| + | <li><p>Nella cartella di '''out''' si trovano i PDF.</p></li> | ||
| + | <li><p>Se il risultato va in ''undeliverable'', probabilmente ci si è scordati di impostare <code>FILEPDF</code> nell’XML — il PDF si trova comunque nella cartella <code>undeliverable</code>.</p></li> | ||
| + | <li><p>In:</p> | ||
| + | <pre>C:\ManagementGateway\16.6\root\applications\Riccardo\Production\exported_configurations</pre> | ||
| + | <p>si trovano i file di Run; se ci sono errori nel runtime si vedono lì.</p></li> | ||
| + | <li><p>Per aggiornare il deploy in caso di modifiche: '''“Riccardo” → Redeploy'''.</p></li> | ||
| + | <li><p>Nelle commit inserire: <code>"descrizione" (modulo) [ticket_jira]</code></p></li></ol> | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="overlay-editor"></span> | ||
| + | == Overlay Editor == | ||
| + | |||
| + | * Converte PDF in '''LXF'''. | ||
| + | * '''Import del PDF''': trascinare il PDF, oppure ''File → Open → …'' | ||
| + | * Controllare che il font sia '''Arial''' o '''Arial Narrow'''; volendo si può aprire l’LXF con Notepad e sostituire in blocco tutti i font diversi da Arial. | ||
| + | * <code>ALT + "+"</code> oppure ''Object → Arrange → Consolidate'': consolida le caselle di testo, da fare riga per riga selezionando la riga intera. | ||
| + | * Da Communication Builder importare l’overlay (LXF necessario) nelle risorse. | ||
| + | |||
| + | <span id="da-storyteller"></span> | ||
| + | === Da StoryTeller === | ||
| + | |||
| + | * '''Overlay → Fragment URI''' → selezionare l’LXF dal resource set del modulo. | ||
| + | * Per aggiungere altre pagine dell’LXF: ''Add New Page'' → selezionare la pagina → copiare l’overlay dalla prima → (dalle proprietà) <code>Page ID = numero della pagina</code>. | ||
| + | * Aggiungere comunque un content dependent per la numerazione delle pagine, e poi toglierla dal PDF dell’overlay. | ||
| + | * Per inserire i campi si usano i '''Text Area''', non le tabelle. | ||
| + | * Durante il mapping, assegnare ciascun campo a una variabile: ''Tools → Event Option → Create Field Variable''. | ||
| + | * Non serve la story. | ||
| + | |||
| + | <span id="altre-note"></span> | ||
| + | === Altre note === | ||
| + | |||
| + | <ul> | ||
| + | <li><p>Se si fanno modifiche all’LXF dopo averlo importato: da '''Resource''' → ''Update From File'' (selezionando l’LXF stesso), poi chiudere e riaprire StoryTeller.</p></li> | ||
| + | <li><p>Dalla barra laterale è possibile creare riquadri.</p></li> | ||
| + | <li><p>Se ci sono più campi che andrebbero in un repeater (uso delle tabelle sconsigliato), si possono creare variabili nel MSG per ogni campo della lista:</p> | ||
| + | <pre>$nome_Campo = MsgGetValue("Blocco/posizione/nomeCampo");</pre></li> | ||
| + | <li><p>Si possono aprire due PDF nella stessa finestra di Overlay Editor per fare copia/incolla.</p></li> | ||
| + | <li><p>'''Form → Form Info → Fonts''': cambiare un font ad Arial. Aprendo l’LXF con Notepad si cambiano i font da lì: impostare <code>name="Arial"</code>; il <code>charset="symbol"</code> va cancellato e sostituito con <code>name="Arial"</code>.</p></li> | ||
| + | <li><p>Per cancellare pagine: ''Page → Delete'' → intervallo delle pagine da cancellare (“prima pagina - ultima pagina”).</p></li> | ||
| + | <li><p>Cancellare il numero delle pagine dell’LXF e impostarne uno coerente da StoryTeller.</p></li></ul> | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="note-varie"></span> | ||
| + | == Note Varie == | ||
| + | |||
| + | * '''File Transfer''' da SiWeb di Valid per fare il rilascio (aprire il SiWeb della banca) → allegare l’export. | ||
| + | ** Codice: <code>"S9VE" + NUMERO_VERSIONE + ULTIMA_LETTERA_DEL_SERVIZIO</code> | ||
| + | ** Se consortile, il codice è sempre <code>S9CSEE16</code>. | ||
| + | * Se da StoryTeller non si riescono a passare i campi mappati nel MSG: '''File → Data → Switch to Message'''. | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="section"></span> | ||
| + | == 3270 == | ||
| + | |||
| + | * <code>v</code> = valid, <code>c</code> = prod + <code>"ics"</code> | ||
| + | * <code>CNTRL</code> = INVIO | ||
| + | * Da terminale 3270 si possono cercare i servizi per le relative ABI: <code>S9RS</code> sul terminale per cercarle. | ||
| + | * <code>pausa</code> → ''logoff'' per uscire. | ||
| + | * Per cambiare banca: tasto <code>pausa</code> → <code>SRAM ABI</code> | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="come-fare-il-rilascio"></span> | ||
| + | == Come fare il rilascio == | ||
| + | |||
| + | <span id="siweb"></span> | ||
| + | === SiWeb === | ||
| + | |||
| + | <ol style="list-style-type: decimal;"> | ||
| + | <li><p>Selezionare '''File Transfer''' (<code>BAL0FTRA</code>)</p></li> | ||
| + | <li><p>Inserire il codice:</p> | ||
| + | {| class="wikitable" | ||
| + | |- | ||
| + | ! Tipo | ||
| + | ! Codice | ||
| + | |- | ||
| + | | Consortile | ||
| + | | <code>S9CSEE16</code> | ||
| + | |- | ||
| + | | Banca | ||
| + | | <code>"S9VE" + NUMERO_VERSIONE + ULTIMA_LETTERA_DEL_SERVIZIO</code> | ||
| + | |- | ||
| + | | KIID | ||
| + | | <code>S9CARKI</code> | ||
| + | |- | ||
| + | | Allegati | ||
| + | | <code>S9CARAL</code> | ||
| + | |} | ||
| + | </li> | ||
| + | <li><p>Trasmissione: <code>1</code></p></li> | ||
| + | <li><p>Allegato: inserire il file ZIP per gli allegati <code>.lxf</code></p></li> | ||
| + | <li><p>Altri casi: inserire l’export</p></li> | ||
| + | <li><p>Sovrascrivi e conferma</p></li></ol> | ||
| + | |||
| + | <span id="section-1"></span> | ||
| + | === 3270 === | ||
| + | |||
| + | # Accedere all’ambiente su cui rilasciare | ||
| + | # Accedere | ||
| + | # <code>S9RS</code> → <code>CNTRL</code> → <code>m</code> sulla nostra export → aggiungere una descrizione (con <code>TAB</code> ci si sposta) → <code>s</code> | ||
| + | # <code>F3</code> per tornare alla home | ||
| + | # <code>S9JS</code> → <code>i</code> su <code>CSEE16</code> (se consortile) o <code>INSE16</code> (per gli altri) | ||
| + | # Su timestamp → <code>?</code> → selezionare la nostra export | ||
| + | # Su codice URL → cercare il nostro servizio → <code>s</code> | ||
| + | # <code>l</code> su <code>CSEE16</code> o <code>INSE16</code> → <code>A</code> attiva → <code>D</code> autorizzazione finale → <code>v</code> → <code>F2</code> per refresh e controllare che non vada in errore | ||
| + | # Per gli allegati: <code>S9JS</code> → <code>CARAL</code> → <code>i</code> → (<code>F3</code>) → <code>1</code> → <code>l</code> → <code>a</code> → <code>d</code> | ||
| + | |||
| + | <span id="versionamento"></span> | ||
| + | === Versionamento === | ||
| + | |||
| + | Da Communication Builder: | ||
| + | |||
| + | # '''Update Release''' (icona con le 2 frecce verdi) → per controllare le modifiche ''(facoltativo)'' | ||
| + | # '''Crea Release''': | ||
| + | #* '''Label''': <code>"v" + anno + mese + giorno + "_" + ambiente</code> (<code>P</code>, <code>V</code>, <code>T</code>) | ||
| + | #* '''Description''': descrizione della modifica + <code>(modulo) [ticket di riferimento]</code> | ||
| + | |||
| + | <span id="rilascio-interno"></span> | ||
| + | === Rilascio interno === | ||
| + | |||
| + | * '''Nome''': <code>"V" + Data_oggi</code> | ||
| + | * '''Descrizione''': ticket | ||
| + | |||
| + | |||
| + | ----- | ||
| + | |||
| + | <span id="apache-tomcat"></span> | ||
| + | == Apache Tomcat == | ||
| + | |||
| + | * '''Apache Tomcat 8.5 MrB''' → attivarlo per usare StreamServe. | ||
Versione delle 14:24, 10 set 2026
Indice
Wiki StreamServe — Guida Operativa
Raccolta di appunti operativi su Communication Builder, StoryTeller, Control Center, Overlay Editor e procedure di rilascio.
Indice
- Communication Builder
- StoryTeller
- Control Center
- Overlay Editor
- Note Varie
- 3270
- Come fare il rilascio
- Apache Tomcat
Communication Builder
Creazione progetto
Struttura: progetto → nuova cartella “Nome modulo” → new message, new runtime, new resource set
Il nome del progetto è il nome del modulo presente nell’XML.
Message — nomemodulo_Msg
- Add event xmlin →
nomemodulo_IN - Add process storyteller →
nomemodulo_OUT
Runtime — nomemodulo_Run
- Job
nomemodulo_Job→ add runtime component → selezionare il msg - Collegare i 2 input e
httpdPfOut - Nell’out togliere select automatically
Resource Set — DefaultNomemoduloResourceSet
Nuova cartella con: 1. Sample 2. Overlay
XMLIN
- Resource Set → Sample: importare tutti gli XML del modulo (import)
- MSG: aprire xmlin → File → Open Sample (se non presente, aggiungere il resource set)
Mappare XML
Selection Tool
- Seleziona soltanto, non effettua azioni.
- Se seleziona una data o un importo già mappato dal Field Tool → Input Format → selezionare dal resource set il formattatore (tabella
Formats.txt).
Pattern Tool
Usarlo per mappare l’attributo mod del modulo (cliccando sul contenuto o su mod).
Field Tool
Mappa i dati “secchi” all’altezza in cui ci si trova.
Prime cose da mappare:
<tipo>→ variabile$stampa_tipo<abi>→ variabile$sicurezza_abi
Assegnare una variabile solo in casi specifici (es. se il tag serve per una funzione).
Per mappare un singolo campo tra diversi uguali:
/s9Env/parametri/param[@nome='valoreNomeCampo']
Block Tool
Mappa i blocchi che si ripetono.
Esempio:
<firmatari> <cdg></cdg> <cdg></cdg> </firmatari>
Selezionare
firmataricon il Block Tool, poi selezionare la cartella creata (es.BlockFirmatari) e selezionare il campo che si ripete (es.cdg) col Block Tool — solo perché è un blocco a sé stante.Controllare che il blocco venga mappato (diventa grigio); se non succede, mapparlo col Field Tool all’interno dei field del blocco.
Il Block Tool può essere usato anche su campi che non si ripetono, solo per dare un ordine.
MSG (script)
Chiamare la callProc:
CallProc("nomedellOut");Recuperare un campo non definito come variabile (vale ovunque):
MsgGetValue("nomeCampoMappato")Recuperare il valore di un campo in un blocco a un dato indice:
MsgGetValue("blocco:indice/campo")In basso a sinistra, tabella Note | Dependencies: aggiungere i resource set (tasto destro → Add Resource Set).
Nello script:
// Data di oggi $dataOggi = dformat("dd/mm/yyyy", getDate()); // Recuperare il logo $overlay_logo = cse_getoverlaylogost($sicurezza_abi);
Se ci sono più
CallProcnel MSG, si possono cambiare i valori delle variabili tra una e l’altra.Se ci sono più
CallProc(es. a seconda di una condizione se ne esegue una piuttosto che un’altra) e questo dà problemi, bisogna usare variabili con i nomi degli output.
StoryTeller
Setup base
- Su OUT → Connector Selector → Lookup →
key = $stampa_tipo,value = TipoOutConnector - Si apre con doppio click sull’OUT.
- Page → Insert → Storyframe (w:19, x:1, h:26, y:3)
- Sullo storyframe, tasto destro → Insert Table per inserire una tabella:
- La tabella deve avere altezza 0; le altre dimensioni si settano “a piacimento” → settare 0 da Layout.
- Story (a destra) → Repeating → Repeat: l’XPath indica il blocco che si ripete.
- TextArea → Insert → Substitution: in Data XPath inserire il nome della variabile.
- Selezionando il campo → Format: si può cambiare il formato di date e importi in OUT.
- Per il repeater in tabella: prima selezionare il repeater (Table → Repeating → Repeat → blocco da ripetere), poi trascinare i campi.
- Repeater → Dati → Location: decide se la ripetizione è verticale o orizzontale.
- Area Break: passa a pagina successiva (tasto destro sulla document view).
- Una volta terminato, su Communication Builder cliccare EXPORT.
Funzioni utili
MsgCountID("nome_del_blocco") // conta gli elementi di un blocco
StEvalXpath("nomecampo") // prende il valore di nomecampo nel repeater
Esempio:
StEvalXpath("/data/message/Block_SOTTOSCR/CODFISC["+$prog+"]");
// recupera il campo CODFISC all'indice $prog
CTRL+F→ apre la ricerca (font, variabili, …)
Fragment / Overlay / Logo
Page → Insert → New Fragment → Content Dependent → Edit Fragment → Fragment View → Insert → New Fragment → Overlay (w:11,99 h:4) → Fragment
Fragment URI → in Modification mettere
$overlay_logoChiudere la Fragment Page → recuperare il logo nel MSG:
$overlay_logo = cse_getoverlaylogopers($sicurezza_abi);
Per numero di pagina e footer (sempre dal fragment creato): in fondo creare una tabella, poi 2 substitution:
$pg = page(); $pgS = pages();
Punto firma
$firma = "Firma " + StEvalXpath("cdg") + " con Tablet ___________________________ " + "progressivo"
- Il punto firma deve essere di colore bianco non trasparente.
- Il font del punto firma deve essere massimo 6 di grandezza.
- Inserire i nomi dei firmatari nei punti firma.
- Gli importi hanno 2 cifre decimali e sono allineati a destra.
- Si possono creare story per gli elementi che si ripetono.
Repeater
- Su Repeater Filter XPath si può filtrare mettendo
nome_campo = "value". - Su XPath si può mettere un filtro tra quadre:
/BLOCK[nome_campo = 'valore'] position() = 1→ prende solo il primo valore (al netto di un eventuale filtro già presente nell’XPath).- Sorting Criteria → XPath: setta il campo per il sorting (controllare che dia solo il percorso relativo del campo, non tutto).
- Se due blocchi hanno una FK (foreign key) in comune → si può fare un repeater dentro l’altro e confrontare la FK, in modo da stampare solo i valori corrispondenti, usando il filtro XPath.
skip()salta il dato nel ciclo.
Control Center
Per stampare localmente il modulo su cui si sta lavorando si usa il Control Center:
Generare l’export da Communication Builder.
Export → Export From File.
Controllare che nell’XML il campo
<tipo>sia valorizzato aFILEPDF.Una volta avviato, mettere l’XML in:
C:\ManagementGateway\16.6\root\applications\Riccardo\Production\spool
Nella cartella di out si trovano i PDF.
Se il risultato va in undeliverable, probabilmente ci si è scordati di impostare
FILEPDFnell’XML — il PDF si trova comunque nella cartellaundeliverable.In:
C:\ManagementGateway\16.6\root\applications\Riccardo\Production\exported_configurations
si trovano i file di Run; se ci sono errori nel runtime si vedono lì.
Per aggiornare il deploy in caso di modifiche: “Riccardo” → Redeploy.
Nelle commit inserire:
"descrizione" (modulo) [ticket_jira]
Overlay Editor
- Converte PDF in LXF.
- Import del PDF: trascinare il PDF, oppure File → Open → …
- Controllare che il font sia Arial o Arial Narrow; volendo si può aprire l’LXF con Notepad e sostituire in blocco tutti i font diversi da Arial.
ALT + "+"oppure Object → Arrange → Consolidate: consolida le caselle di testo, da fare riga per riga selezionando la riga intera.- Da Communication Builder importare l’overlay (LXF necessario) nelle risorse.
Da StoryTeller
- Overlay → Fragment URI → selezionare l’LXF dal resource set del modulo.
- Per aggiungere altre pagine dell’LXF: Add New Page → selezionare la pagina → copiare l’overlay dalla prima → (dalle proprietà)
Page ID = numero della pagina. - Aggiungere comunque un content dependent per la numerazione delle pagine, e poi toglierla dal PDF dell’overlay.
- Per inserire i campi si usano i Text Area, non le tabelle.
- Durante il mapping, assegnare ciascun campo a una variabile: Tools → Event Option → Create Field Variable.
- Non serve la story.
Altre note
Se si fanno modifiche all’LXF dopo averlo importato: da Resource → Update From File (selezionando l’LXF stesso), poi chiudere e riaprire StoryTeller.
Dalla barra laterale è possibile creare riquadri.
Se ci sono più campi che andrebbero in un repeater (uso delle tabelle sconsigliato), si possono creare variabili nel MSG per ogni campo della lista:
$nome_Campo = MsgGetValue("Blocco/posizione/nomeCampo");Si possono aprire due PDF nella stessa finestra di Overlay Editor per fare copia/incolla.
Form → Form Info → Fonts: cambiare un font ad Arial. Aprendo l’LXF con Notepad si cambiano i font da lì: impostare
name="Arial"; ilcharset="symbol"va cancellato e sostituito conname="Arial".Per cancellare pagine: Page → Delete → intervallo delle pagine da cancellare (“prima pagina - ultima pagina”).
Cancellare il numero delle pagine dell’LXF e impostarne uno coerente da StoryTeller.
Note Varie
- File Transfer da SiWeb di Valid per fare il rilascio (aprire il SiWeb della banca) → allegare l’export.
- Codice:
"S9VE" + NUMERO_VERSIONE + ULTIMA_LETTERA_DEL_SERVIZIO - Se consortile, il codice è sempre
S9CSEE16.
- Codice:
- Se da StoryTeller non si riescono a passare i campi mappati nel MSG: File → Data → Switch to Message.
3270
v= valid,c= prod +"ics"CNTRL= INVIO- Da terminale 3270 si possono cercare i servizi per le relative ABI:
S9RSsul terminale per cercarle. pausa→ logoff per uscire.- Per cambiare banca: tasto
pausa→SRAM ABI
Come fare il rilascio
SiWeb
Selezionare File Transfer (
BAL0FTRA)Inserire il codice:
Tipo Codice Consortile S9CSEE16Banca "S9VE" + NUMERO_VERSIONE + ULTIMA_LETTERA_DEL_SERVIZIOKIID S9CARKIAllegati S9CARALTrasmissione:
1Allegato: inserire il file ZIP per gli allegati
.lxfAltri casi: inserire l’export
Sovrascrivi e conferma
3270
- Accedere all’ambiente su cui rilasciare
- Accedere
S9RS→CNTRL→msulla nostra export → aggiungere una descrizione (conTABci si sposta) →sF3per tornare alla homeS9JS→isuCSEE16(se consortile) oINSE16(per gli altri)- Su timestamp →
?→ selezionare la nostra export - Su codice URL → cercare il nostro servizio →
s lsuCSEE16oINSE16→Aattiva →Dautorizzazione finale →v→F2per refresh e controllare che non vada in errore- Per gli allegati:
S9JS→CARAL→i→ (F3) →1→l→a→d
Versionamento
Da Communication Builder:
- Update Release (icona con le 2 frecce verdi) → per controllare le modifiche (facoltativo)
- Crea Release:
- Label:
"v" + anno + mese + giorno + "_" + ambiente(P,V,T) - Description: descrizione della modifica +
(modulo) [ticket di riferimento]
- Label:
Rilascio interno
- Nome:
"V" + Data_oggi - Descrizione: ticket
Apache Tomcat
- Apache Tomcat 8.5 MrB → attivarlo per usare StreamServe.