Differenze tra le versioni di "Exsteram"

Da WikiSitech.
Vai alla navigazioneVai alla ricerca
(Creata pagina vuota)
 
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
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]]
 +
# [[#cas-lavoro-condiviso|CAS: lavoro condiviso]]
 +
# [[#note-varie|Note Varie]]
 +
# [[#3270|3270]]
 +
# [[#come-fare-il-rilascio|Come fare il rilascio]]
 +
# [[#apache-tomcat|Apache Tomcat]]
 +
# [[#errori-noti|Errori noti]]
 +
 +
 +
-----
 +
 +
<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>).
 +
* Durante il mapping si può assegnare ciascun campo a una variabile: ''Tools → Event Option → Create Field Variable''. (facoltativo/se serve)
 +
 +
<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>&lt;tipo&gt;</code> → variabile <code>$stampa_tipo</code></li>
 +
<li><code>&lt;abi&gt;</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(&quot;nomedellOut&quot;);</code></p></li>
 +
<li><p>Recuperare un campo non definito come variabile (vale ovunque):</p>
 +
<pre>MsgGetValue(&quot;nomeCampoMappato&quot;)</pre></li>
 +
<li><p>Recuperare il valore di un campo in un blocco a un dato indice:</p>
 +
<pre>MsgGetValue(&quot;blocco:indice/campo&quot;)</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(&quot;nome_del_blocco&quot;)    // conta gli elementi di un blocco
 +
StEvalXpath(&quot;nomecampo&quot;)          // prende il valore di nomecampo nel repeater</pre>
 +
Esempio:
 +
 +
<pre>StEvalXpath(&quot;/data/message/Block_SOTTOSCR/CODFISC[&quot;+$prog+&quot;]&quot;);
 +
// 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 = &quot;Firma &quot; + StEvalXpath(&quot;cdg&quot;) + &quot; con Tablet ___________________________ &quot; + &quot;progressivo&quot;</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 = &quot;value&quot;</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>&lt;tipo&gt;</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: '''“Nome del proprio server” → Redeploy'''.</p></li>
 +
<li><p>Nelle commit inserire: <code>&quot;descrizione&quot; (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 + &quot;+&quot;</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.
 +
* 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(&quot;Blocco/posizione/nomeCampo&quot;);</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=&quot;Arial&quot;</code>; il <code>charset=&quot;symbol&quot;</code> va cancellato e sostituito con <code>name=&quot;Arial&quot;</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="cas-lavoro-condiviso"></span>
 +
== CAS: lavoro condiviso ==
 +
 +
Grazie alle funzioni di UPDATE e CHECK IN del CAS si può lavorare in più persone su un progetto (simil GIT) e gestire versioni diverse. Per maggiori informazioni vedere:
 +
<br>https://wiki.netsitech.com/index.php/Guida_al_lavoro_in_parallelo_su_Exstream
 +
 +
 +
 +
-----
 +
 +
<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>&quot;S9VE&quot; + 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>&quot;ics&quot;</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>&quot;S9VE&quot; + 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>&quot;v&quot; + anno + mese + giorno + &quot;_&quot; + 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 ===
 +
Per l'ufficio interno i rilasci vengono effettuati solo sul CAS SITECH.
 +
<br> Per farlo serve fare una CHECK IN sul CAS compilando così il form:
 +
* '''Nome''': <code>&quot;V&quot; + Data_oggi</code>
 +
* '''Descrizione''': ticket
 +
 +
 +
-----
 +
 +
<span id="apache-tomcat"></span>
 +
 +
== Apache Tomcat ==
 +
 +
* '''Apache Tomcat 8.5 MrB''' → attivarlo per usare StreamServe.
 +
 +
 +
-----
 +
 +
<span id="errori-noti"></span>
 +
== Errori noti ==
 +
 +
''(sezione da completare)''<br>
 +
* 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.
 +
* Se da Story Teller non si riescono a trascinare i campi nella Story: Sullo storyteller: File --> Data --> Switch to message

Versione attuale delle 14:23, 15 set 2026

Wiki StreamServe — Guida Operativa

Raccolta di appunti operativi su Communication Builder, StoryTeller, Control Center, Overlay Editor e procedure di rilascio.

Indice

  1. Communication Builder
  2. StoryTeller
  3. Control Center
  4. Overlay Editor
  5. CAS: lavoro condiviso
  6. Note Varie
  7. 3270
  8. Come fare il rilascio
  9. Apache Tomcat
  10. Errori noti



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 xmlinnomemodulo_IN
  • Add process storytellernomemodulo_OUT

Runtime — nomemodulo_Run

  • Job nomemodulo_Jobadd 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).
  • Durante il mapping si può assegnare ciascun campo a una variabile: Tools → Event Option → Create Field Variable. (facoltativo/se serve)

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 firmatari con 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ù CallProc nel 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 OUTConnector Selector → Lookupkey = $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, …)

  • Page → Insert → New Fragment → Content DependentEdit FragmentFragment ViewInsert → New Fragment → Overlay (w:11,99 h:4) → Fragment

    • Fragment URI → in Modification mettere $overlay_logo

    • Chiudere 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:

  1. Generare l’export da Communication Builder.

  2. Export → Export From File.

  3. Controllare che nell’XML il campo <tipo> sia valorizzato a FILEPDF.

  4. Una volta avviato, mettere l’XML in:

    C:\ManagementGateway\16.6\root\applications\Riccardo\Production\spool
  5. Nella cartella di out si trovano i PDF.

  6. Se il risultato va in undeliverable, probabilmente ci si è scordati di impostare FILEPDF nell’XML — il PDF si trova comunque nella cartella undeliverable.

  7. 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ì.

  8. Per aggiornare il deploy in caso di modifiche: “Nome del proprio server” → Redeploy.

  9. 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.
  • Non serve la story.

Altre note

  • Se si fanno modifiche all’LXF dopo averlo importato: da ResourceUpdate 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"; il charset="symbol" va cancellato e sostituito con name="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.



CAS: lavoro condiviso

Grazie alle funzioni di UPDATE e CHECK IN del CAS si può lavorare in più persone su un progetto (simil GIT) e gestire versioni diverse. Per maggiori informazioni vedere:
https://wiki.netsitech.com/index.php/Guida_al_lavoro_in_parallelo_su_Exstream



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.
  • 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: S9RS sul terminale per cercarle.
  • pausalogoff per uscire.
  • Per cambiare banca: tasto pausaSRAM ABI



Come fare il rilascio

SiWeb

  1. Selezionare File Transfer (BAL0FTRA)

  2. Inserire il codice:

    Tipo Codice
    Consortile S9CSEE16
    Banca "S9VE" + NUMERO_VERSIONE + ULTIMA_LETTERA_DEL_SERVIZIO
    KIID S9CARKI
    Allegati S9CARAL
  3. Trasmissione: 1

  4. Allegato: inserire il file ZIP per gli allegati .lxf

  5. Altri casi: inserire l’export

  6. Sovrascrivi e conferma

3270

  1. Accedere all’ambiente su cui rilasciare
  2. Accedere
  3. S9RSCNTRLm sulla nostra export → aggiungere una descrizione (con TAB ci si sposta) → s
  4. F3 per tornare alla home
  5. S9JSi su CSEE16 (se consortile) o INSE16 (per gli altri)
  6. Su timestamp → ? → selezionare la nostra export
  7. Su codice URL → cercare il nostro servizio → s
  8. l su CSEE16 o INSE16A attiva → D autorizzazione finale → vF2 per refresh e controllare che non vada in errore
  9. Per gli allegati: S9JSCARALi → (F3) → 1lad

Versionamento

Da Communication Builder:

  1. Update Release (icona con le 2 frecce verdi) → per controllare le modifiche (facoltativo)
  2. Crea Release:
    • Label: "v" + anno + mese + giorno + "_" + ambiente (P, V, T)
    • Description: descrizione della modifica + (modulo) [ticket di riferimento]

Rilascio interno

Per l'ufficio interno i rilasci vengono effettuati solo sul CAS SITECH.
Per farlo serve fare una CHECK IN sul CAS compilando così il form:

  • Nome: "V" + Data_oggi
  • Descrizione: ticket



Apache Tomcat

  • Apache Tomcat 8.5 MrB → attivarlo per usare StreamServe.



Errori noti

(sezione da completare)

  • 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.
  • Se da Story Teller non si riescono a trascinare i campi nella Story: Sullo storyteller: File --> Data --> Switch to message