Skip to main content

Occupazione Fibre Fisiche

Questa funzionalità ha lo scopo di gestire l'associazione tra fibre fisiche e fibre logiche all'interno di un progetto. Il processo prevede la generazione, aggregazione e verifica della connettività delle fibre logiche, assicurando un'organizzazione corretta e coerente delle informazioni.

Vedi anche la video lezione Lezione 4: Parte 1 - Parte 2

Preparazione delle aggregazioni di Fibre Logiche

1. Avvio del Processo

Il metodo principale che avvia l'associazione delle fibre è:

public CalcFibLogicalSupport associatesRCablesFibersToFibersLogicalByDrawing(CalcFibersLogicalConfig calcFibersLogicalConfig, CalcFibLogicalSupport calcFibLogicalSupport)
  • Generazione della lista aggregata di fibre logiche con generateAggregatedFibersList.

  • Verifica della connettività con startCheckDisconnectedItems.

  • Associazione delle fibre con associatesRCablesFibersToFibersLogicalByFibersLogical.

  • Logging e gestione degli errori tramite reportManager e CalcLoggingUtils.


2. Generazione della Lista Aggregata di Fibre Logiche

Il metodo generateAggregatedFibersList gestisce la creazione di un supporto logico per le fibre, che include:

  • Inizializzazione della struttura dati (initCalcFibLogicalSupport).

  • Aggregazione delle fibre logiche per nodo A (aggregatedFibersLogicalByTypeNodeA).

  • Ordinamento dei cavi (startOrderCables).

  • Esecuzione di controlli specifici (startChecks).


3. Aggregazione delle Fibre Logiche

Il metodo aggregatedFibersLogicalByTypeNodeA gestisce l'aggregazione delle fibre logiche considerando le caratteristiche dei nodi:

  • Recupera i dati dei Node A e Node Z tramite setNodeAandNodeZForAggregation.

  • Verifica la tipologia delle fibre da rimuovere o aggregare.

  • Seleziona la routing adeguata per le fibre (selectRoutingForAggregation).

  • Configura il numero di fibre necessarie (setNeededFibersForAggregation).

  • Popola le mappe di aggregazione (populateAggregHashMaps).

Questo documento descrive il funzionamento del codice per l'instradamento delle fibre ottiche. Il codice si occupa di calcolare i percorsi ottimali per le sezioni di fibra ottica tra nodi A e Z utilizzando il nuovo algoritmo di Routing, che in caso di fallimento in runtime viene sostituito da PostgreSQL con pgRouting (funzione pgr_dijkstra).

3.1 Definizione della routing

Questa documentazione descrive il funzionamento della funzionalità di routing per l'aggregazione delle fibre logiche tra nodi A e Z. La logica si basa sull'identificazione del percorso ottimale per le sezioni di fibra, tenendo conto di specifiche condizioni di rete e di applicazione.

setDefaultRoutingForAggregation questo metodo imposta la routing predefinita per un'aggregazione di fibre logiche tra due nodi (A e Z). Il processo include:

    1. Recupero delle sezioni di routing applicabili.

    2. Verifica della validità delle sezioni estratte.

    3. Applicazione di logiche condizionali basate sul tipo di applicazione del servizio.

    4. Salvataggio delle sezioni di percorso all'interno dell'oggetto aggregFibLogical.

Parametri:

    • aggregFibLogical: oggetto di tipo AggregatedFibersLogicalByAZNodes che rappresenta l'aggregazione di fibre tra i nodi A e Z.

    • calcFibSup: oggetto di tipo CalcFibLogicalSupport contenente la configurazione delle fibre logiche.

Logica del Metodo:

    1. Recupero delle sezioni di fibra tramite getRoutingSectionsForAggregation.

    2. Rimozione di eventuali valori null.

    3. Se l'elenco è vuoto o non valido, viene registrato un errore tramite reportManager.append().

    4. In base al tipo di servizio:

      • Se il servizio è AB e il nodo Z è ROE, viene verificata la continuità ottica.

      • Se il servizio è GP e l'aggregazione non è estesa (isExtended()), vengono aggiunti elementi alla mappa di tapping.

    5. Il percorso calcolato viene memorizzato nell'oggetto aggregFibLogical.


getRoutingSectionsForAggregation questo metodo recupera l'elenco delle sezioni di routing disponibili per l'aggregazione delle fibre tra i nodi A e Z.

Parametri:

    • aggregFibLogical: aggregazione di fibre logiche.

    • calcFibersLogicalConfig: configurazione della logica delle fibre.

Logica del Metodo:

    1. Recupero delle sezioni tramite getRoutingOnSections.

    2. Rimozione di sezioni null.

    3. Impostazione del flag BehindNLC se è presente un cavo fittizio.

    4. Rimozione di sezioni fittizie tramite removeDummySectionFromRouting().


getRoutingOnSections recupera le sezioni di routing basandosi sulla configurazione delle fibre logiche.

Parametri:

    • aggregFibLogical: aggregazione di fibre logiche.

    • calcFibersLogicalConfig: configurazione della logica delle fibre.

Logica del Metodo:

    1. Determinazione delle condizioni di utilizzo della rete tramite getKvNetUseCondition().

    2. Estrazione dei drawing di riferimento dalla configurazione.

    3. Esecuzione della query di routing tramite executeRoutingQuery().


NOTA BENE

La parte a seguire, per quanto riguarda la routing, viene utilizzata solo in caso di fallimento del nuovo algoritmo di routing, vedi la sezione apposita.

executeRoutingQuery esegue la query di routing basata sulle condizioni della rete e della configurazione dell'aggregazione.

Parametri:

    • aggregFibLogical: aggregazione di fibre logiche.

    • calcFibersLogicalConfig: configurazione della logica delle fibre.

    • nodeZ: nodo di destinazione.

    • nodeA: nodo di origine.

    • kvNetUseCondition: condizioni di utilizzo della rete.

    • drawings: identificativo dei drawing di riferimento.

Logica del Metodo:

    1. Se il nodo A non appartiene a Unidata (is_alternative_net() = false):

      • Se l'applicativo è AB e la fibra è di tipo BUSINESS, viene eseguita la query per il percorso più breve.

      • Se l'applicativo è AB e il nodo Z appartiene a una classificazione specifica, viene eseguita una query alternativa.

      • Altrimenti, viene calcolato una routing predefinita tramite calcDefaultRouting().

    2. Se il nodo A appartiene a Unidata, viene eseguita una query specifica per questa configurazione.


calcDefaultRouting calcola una routing predefinita per un'aggregazione di fibre.

Parametri:

    • aggregFibLogical: aggregazione di fibre logiche.

    • config: configurazione della logica delle fibre.

Logica del Metodo:

    1. Determinazione della chiave primaria del nodo A per il calcolo.

    2. Recupero del percorso più breve disponibile.

    3. Se il percorso è vuoto o nullo, viene registrato un errore tramite reportManager.append().


getShortsPathOnPcabSections esegue una query SQL per ottenere il percorso più breve tra due nodi nel database.

    1. Utilizza l'algoritmo pgr_dijkstra per calcolare il percorso minimo.

    2. Considera solo le sezioni non invertite e appartenenti alla rete principale.

    3. Filtra i risultati in base ai drawing e alle condizioni di utilizzo della rete.

Parametri:

    • fk_pcab_nodes_begin: nodo di partenza.

    • fk_pcab_nodes_end: nodo di destinazione.

    • fk_kv_net_use: condizioni di utilizzo della rete.

    • drawings: drawing di riferimento.

    • addClausole: clausole aggiuntive per la query.


4. Ordinamento dei Cavi

Il metodo startOrderCables verifica il tipo di calcolo richiesto:

  • Se il tipo di calcolo è POP, non viene effettuato alcun ordinamento.

  • Per altri tipi di calcolo, il metodo orderAggregatedFibers gestisce l'ordinamento.

Vedi capitolo ordinamento cavi.


5. Controlli di Connettività

Il metodo startChecks verifica la necessità di controllare la connettività tra gli elementi:

  • Se il progetto non richiede tubi con collasso (projectNeedsTubesWithCollapse), si eseguono ulteriori controlli con checkGPPTConnected.

Vedi capitolo Grecia.


6. Selezione e Configurazione della Routing

Il metodo selectRoutingForAggregation imposta il percorso della fibra logica:

  • Se la fibra è di tipo OLT_ODF, viene utilizzato la routing interna (setRoutingForInternalPopFibers).

  • In caso contrario, viene impostato una routing predefinita (setDefaultRoutingForAggregation).


7. Assegnazione dei Cavi alle Fibre

Il metodo setFkCableForAggregation assegna il cavo corretto a ciascuna fibra aggregata:

  • Recupera il cavo corrispondente alla fibra (getCorrectFkCable).

  • Verifica se il cavo è valido e aggiorna le mappe del progetto (updateProjectNodesMaps).


Logging e Gestione degli Errori

Durante il processo, vengono registrati log dettagliati tramite:

  • CalcLoggingUtils.logMessageOnFile per eventi informativi.

  • CalcLoggingUtils.logError per gestire eventuali eccezioni.

  • reportManager.append per aggiungere informazioni al report.

Questa procedura gestisce l'associazione delle fibre fisiche (RCablesFibers) con le fibre logiche (Fibers Logical) appoggiandosi ad un oggetto di supporto (CalcFibLogicalSupport). Il processo include la verifica dell'occupazione, l'associazione delle fibre logiche e la gestione degli aggiornamenti di routing.

Occupazione delle Fibre Fisiche

associatesRCablesFibersToFibersLogicalByFibersLogical

  • Verifica la pre-occupazione delle fibre logiche.

  • Recupera e ordina la lista delle fibre logiche.

  • Registra l'occupazione delle fibre logiche.

  • Avvia il processo di associazione tra RCablesFibers e Fibers Logical.

  • Aggiunge i messaggi relativi alle fibre nel report finale.

Parametri:

  • calcFibSup: Oggetto di supporto logico per il calcolo delle fibre.

  • calcFibersLogicalConfig: Configurazione specifica per la gestione delle fibre logiche.

Dettagli dei Metodi di Supporto

startAssociatingRcableFiberstoFibLogical

  • Itera sulla lista delle fibre logiche e verifica se necessitano aggiornamenti di routing.

  • Controlla se la routing è già impostata per le fibre aggregate.

  • Associa le fibre logiche alle RCablesFibers.

  • Aggiunge i messaggi di aggiornamento al report.

Parametri:

  • calcFibSup

  • listFibersLogica lista delle aggregazioni di fibra in calcolo.

  • calcFibersLogicalConfig


associatesRCablesFibersToSingleFiberLogical

  • Verifica il percorso di routing per le fibre logiche.

  • Controlla le fibre logiche aggregate.

  • Effettua l'associazione tra RCablesFibers e le fibre logiche corrette.

  • Aggiorna l'ordine delle RCablesFibers.

Parametri:

  • fiberLogical: Fibre logiche aggregate.

  • calcFibSup: Supporto logico per il calcolo.


associateRcableFibers

  • Imposta i tubetti (fiber4tubes) per le fibre successive.

  • Verifica se le fibre sono nuove e le associa di conseguenza.

  • Aggiunge messaggi di conferma o errore all'oggetto fiberLogical.

Parametri:

  • fiberLogical

  • fibersLogicalToCorrect lista delle fibre parzialemente occupate, verrano occupate solo le sezioni mancati.

  • calcFibSup


recoverFibersLogicalAssociationToRcf

  • Recupera le associazioni delle fibre logiche con le RCablesFibers mancanti.

  • Effettua controlli sulle sezioni di percorso e aggiorna le fibre.

Parametri:

  • fiberLogical

  • fibersLogicalToCorrect

  • calcFibSup


associateFiberToRcf

  • Associa le fibre logiche alle RCablesFibers per ogni gruppo di fibre logiche.

Parametri:

  • fiberLogical

  • calcFibSup


associateRcableFibersInRouting

  • Inizializza il supporto logico per la fibra.

  • Itera sulle sezioni del percorso di routing.

  • Determina le fibre libere e le associa alla sezione corrispondente.

  • Aggiorna il numero di fibre associate.

Parametri:

  • fiberLogical

  • pkFibersLogical

  • calcFibSup