Skip to main content

Occupazione Fibre Fisiche

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

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:

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

  • Verifica la tipologia delle fibre da rimuovere o aggregare.

    • Seleziona illa routing adeguato 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 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 il routing predefinito 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, 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().


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:

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

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

      • Altrimenti, viene calcolato un routing predefinito tramite calcDefaultRouting().

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


calcDefaultRouting Calcola un routing predefinito 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 riordinamento.

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


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.


6. Selezione e Configurazione del Routing

Il metodo selectRoutingForAggregation imposta il percorso della fibra logica:

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

  • In caso contrario, viene impostato un routing predefinito (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 (RCables Fibers) con le fibre logiche (Fibers Logical) nell'ambito del supporto logico delle fibre (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

Descrizione:

  • 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 RCables Fibers 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

Descrizione:

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

  • Controlla se il routing è già impostato per le fibre aggregate.

  • Associa le fibre logiche alle RCables Fibers.

  • Aggiunge i messaggi di aggiornamento al report.

Parametri:

  • calcFibSup

  • listFibersLogica

  • calcFibersLogicalConfig

associatesRCablesFibersToSingleFiberLogical

Descrizione:

  • Verifica il percorso di routing per le fibre logiche.

  • Controlla le fibre logiche aggregate.

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

  • Aggiorna l'ordine delle RCables Fibers.

Parametri:

  • fiberLogical: Fibre logiche aggregate.

  • calcFibSup: Supporto logico per il calcolo.

associateRcableFibers

Descrizione:

  • Imposta i tubi 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

  • calcFibSup

recoverFibersLogicalAssociationToRcf

Descrizione:

  • Recupera le associazioni delle fibre logiche con le RCables Fibers mancanti.

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

Parametri:

  • fiberLogical

  • fibersLogicalToCorrect

  • calcFibSup

associateFiberToRcf

Descrizione:

  • Associa le fibre logiche alle RCables Fibers per ogni gruppo di fibre logiche.

Parametri:

  • fiberLogical

  • calcFibSup

associateRcableFibersInRouting

Descrizione:

  • 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