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
reportManagereCalcLoggingUtils.
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 AeNode ZtramitesetNodeAandNodeZForAggregation. -
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:
-
-
Recupero delle sezioni di routing applicabili.
-
Verifica della validità delle sezioni estratte.
-
Applicazione di logiche condizionali basate sul tipo di applicazione del servizio.
-
Salvataggio delle sezioni di percorso all'interno dell'oggetto
aggregFibLogical.
-
Parametri:
-
-
aggregFibLogical: oggetto di tipoAggregatedFibersLogicalByAZNodesche rappresenta l'aggregazione di fibre tra i nodi A e Z. -
calcFibSup: oggetto di tipoCalcFibLogicalSupportcontenente la configurazione delle fibre logiche.
-
Logica del Metodo:
-
-
Recupero delle sezioni di fibra tramite
getRoutingSectionsForAggregation. -
Rimozione di eventuali valori
null. -
Se l'elenco è vuoto o non valido, viene registrato un errore tramite
reportManager.append(). -
In base al tipo di servizio:
-
Se il servizio è
ABe il nodo Z èROE, viene verificata la continuità ottica. -
Se il servizio è
GPe l'aggregazione non è estesa (isExtended()), vengono aggiunti elementi alla mappa di tapping.
-
-
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:
-
-
Recupero delle sezioni tramite
getRoutingOnSections. -
Rimozione di sezioni
null. -
Impostazione del flag
BehindNLCse è presente un cavo fittizio. -
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:
-
-
Determinazione delle condizioni di utilizzo della rete tramite
getKvNetUseCondition(). -
Estrazione dei drawing di riferimento dalla configurazione.
-
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:
-
-
Se il nodo A non appartiene a Unidata (is_alternative_net() = false):
-
Se l'applicativo è
ABe la fibra è di tipoBUSINESS, viene eseguita la query per il percorso più breve. -
Se l'applicativo è
ABe il nodo Z appartiene a una classificazione specifica, viene eseguita una query alternativa. -
Altrimenti, viene calcolato una routing predefinita tramite
calcDefaultRouting().
-
-
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:
-
-
Determinazione della chiave primaria del nodo A per il calcolo.
-
Recupero del percorso più breve disponibile.
-
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.
-
-
Utilizza l'algoritmo
pgr_dijkstraper calcolare il percorso minimo. -
Considera solo le sezioni non invertite e appartenenti alla rete principale.
-
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
orderAggregatedFibersgestisce 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 concheckGPPTConnected.
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.logMessageOnFileper eventi informativi. -
CalcLoggingUtils.logErrorper gestire eventuali eccezioni. -
reportManager.appendper 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 -
listFibersLogicalista 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 -
fibersLogicalToCorrectlista 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
No Comments