El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
MicroFrontEnd (MFE) es un modelo arquitectónico en el que se crean diferentes fragmentos de páginas de interfaz de usuario (IU) en tiempo de compilación o en tiempo de ejecución. Cada MFE se desarrolla de forma independiente.
Las aplicaciones desarrolladas con cualquier estructura se pueden cargar como un MFE. La sección siguiente es un ejemplo de cómo agregar una aplicación Angular como MFE.
ng new test-mfe —routing —style=scss
cd para cambiar a test-mfe.ng add single-spa-angular@7 —project test-mfe
Nota: Se utiliza una versión compatible de Angular 14 y single-spa-angular@7.
Nota: La configuración deployUrl es sólo para desarrollo local.
"deployUrl": "http://localhost:4201/"
npx create-nx-workspace@15.0.0 —preset=angular —npmScope=cisco-bpa-platform
El espacio de trabajo bpa-test-mfe Nx se crea con la aplicación angular bpa-test-mfe.
cd para cambiar a test-mfe.npm install single-spa-angular@7 \--legacy-peer-deps && npx nx g
single-spa-angular:ng-add \--project bpa-test-mfe
Se crean y actualizan los siguientes archivos:
Nota: La configuración deployUrl es sólo para desarrollo local.
"deployUrl": "http://localhost:4201",
Actualice la versión "@angular-builders/custom-webpack" correspondiente a la versión Angular. La versión del siguiente ejemplo se utiliza para aplicaciones Angular 14.
"@angular-builders/custom-webpack": "14.1.0",
Actualice la plantilla con un selector único "<app-test-mfe-root>" en ./src/main.single-spa.ts.
Actualice el mismo nombre del selector "<app-test-mfe-root>" en ./src/app/app.component.ts.
El paquete NPM "systemsjs-web-interop" se utiliza para establecer dinámicamente la ruta pública para los recursos.
systemjs-webpack-interop": "^2.3.7",
Instale "systemsjs-web-interop" y agregue la línea siguiente como la primera declaración de importación en el archivo "main.single-spa.ts".
systemjsModuleName debe ser único y utilizarse como el nombre que identifica al MFE, como se muestra anteriormente. El cambio anterior ayuda a resolver los activos cargados lentamente desde el host apropiado del MFE.
Incluya las rutas específicas de la aplicación en el archivo "app.routes.ts" de la nueva aplicación angular.
Nota: Se debe incluir la siguiente ruta a "app.routes.ts".
{ path: '**', component: EmptyRouteComponent }
La mayoría de las aplicaciones de interfaz de usuario están asociadas a un microservicio por diseño. Se deben realizar los siguientes pasos en las siguientes secciones para que el microservicio asociado cargue la aplicación de IU asociada como un MFE.
[
{
"layoutenabled" : true,
"name" : "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"path": "ex/test-mfe",
"display_name": "Test MFE",
"menu_path": "Application",
"custom": true,
"default": false,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
}
]
Invoque un terminal API principal (por ejemplo, POST mfe/apps) para incorporar los MFE respectivos. Para simplificar el proceso, se crea un método de la utilidad addMfeApps para aceptar la información de MFE. Para registrar los detalles de MFE definidos en el archivo "mfe.json" de BPA.
const { mfeHelper } = require('@cisco-bpa-platform/mw-util-common-app');
El MFE está listo para la prueba.
Nota: Al cargar el nuevo MFE, no se muestra la navegación lateral porque no está integrada en el nuevo MFE.
declare module '@cisco-bpa-platform/utility-state';
config.externals = ['@cisco-bpa-platform/utility-state'].Los pasos anteriores definen @cisco-bpa-platform/utility-state y saltan el error de importación.
@angular/cdk: "~14,2,7"@angular/material: "~14,2,5""@angular/localize": "^14.2.6""@cisco-bpa-platform/cxui-components": "4.0.1-1003 "@cisco-bpa-platform/data-access-services: "4.1.1-1003 ""@cisco-bpa-platform/login": "4.0.3-1002 ""@cisco-bpa-platform/shared-library": "4.0.1-1001 ""@cisco-bpa-platform/spogui-components": "4.1.1-1005 ""@cisco-bpa-platform/ui-shared-components": "4.1.1-1005 ""@cisco-bpa-platform/util": "4.0.1-1002 ""@ngrx/almacén de componentes": "~14.0.0"@ngrx/efectos: "~14.0.0"@ngrx/entidad: "~14.0.0"@ngrx/router-store: "~14.0.0"@ngrx/tienda: "~14.0.0""protector de archivos": "^2.0.5"Dependencias de desarrollo"@types/salvador de archivos": "^2.0.7"Nota: Se deben utilizar las versiones correctas para todas las bibliotecas de la plataforma cisco-bpa.
import { Component, HostListener } from @angular/core';
import { Router } from @angular/router';
import { Observable } from 'rxjs';
import { Loaderservice } from '@cisco-bpa-platform/data-access-services/auth';
@Component({
selector: 'app-test-mfe-root',
templateUrl : '. /app. component. html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'test-mfe';
showLoader = false;
loadingSpinner$: Observable
= this.loaderService.spinnerObsv$; leftNavWidth = ['50px', '250px']; isExpanded = false; innerWidth: any; innerHeight: any; constructor(public router: Router, public loaderservice: Loaderservice, ) { this.onResize(); } @HostListener('window:resize', ['$event']) onResize() { this.innerWidth = window.innerWidth; this.innerHeight = (window.innerHeight - 73); } shareExpandStatus (event: boolean) { this.isExpanded = event; } }
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { NgModule } from '@angular/core' ;
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { LoaderModule } from '@cisco-bpa-platform/cxui-components/loader';
import { AuthEffects, Authlnterceptor, authReducer } from '@cisco-bpa-platform/login/feature-login';
import { SideNavModule } from '@cisco-bpa-platform/spogui-components/side-nav';
import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import { environment } from '../environments/environment';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations : [AppComponent],
imports: [BrowserModule, AppRoutingModule, HttpClientModule,
BrowserAnimationsModule,
HttpClientModule,
StoreModule. forRoot({ ['auth']: authReducer }, {
runtimechecks: {
strictStatelmmutability: false,
strictActionlmmutability: false
}
}),
EffectsModule.forRoot([AuthEffects]), LoaderModule, SideNavModule],
providers: [
{ provide: ‘config’, useValue: { apiUrl: environment .apiUrl, mfa: environment .mfa } },
{
provide: HTTP_INTERCEPTORS,
useClass: Authlnterceptor,
multi: true,
},
],
bootstrap: [AppComponent]
})
export class AppModule { }
const URL = `${i window.location.href.substring(0, window.location.href.lastIndexOf('ex'))}bpa` ;
export const environment = {
production: true,
appTitle: "BPA | ”,
appName: "Business Process Automation”,
apiurl: `${URL}`,
assetsUrl: "./assets”,
packageUr1: "./assets/packages",
mfa: {
enabled: false,
o t p_u r 1 : 'https://ssologon-prd.sm.bankofamerica.com/ssoconnect/sendOTP.htm1'
},
sync: {
groups: false,
users: false
},
autoRef reshlnterval : 60000,
showFormBuilderListltems: false,
deploymentType: "not_on_prem"
};
const HOSTNAME = window.location.hostname;
const URL = `http ://${HOSTNAME}: 8000`;
export const environment = {
production: false,
appTitle: "BPA | ",
appName: "Business Process Automation",
apiUrl: `${URL}`,
packageUrl: `http://${HOSTNAME}:9090/assets/packages`,
mfa : {
enabled: false,
otp_url: 'https://ssologon-prd.sm.bankofamerica.com/ssoconnect/sendOTP.html'
},
sync: {
groups: false,
users: false
},
autoRefreshinterval: 60000,
showFormBuilderListltems: false,
deploymentType: "not_on_prem"
}; La navegación lateral está lista para la prueba.
import { CompOneComponent } from './comp-one/comp-one.component';
import { CompTwoComponent } from './comp-two/comp-two. component';
const includePath = window.location.pathname.substring(1, window.location.pathname.lastIndexOf('/ex'));
let prefixPath = 'ex';
if (includePath.length > 1) {
prefixPath = `${includePath}/${prefixPath}`
}
const routes: Routes = [
{ path: `$iprefixPath}/test-mfe/compone`, component: CompOneComponent },
{ path: `${prefixPath}/test-mfe/comptwo`, component: CompTwoComponent },
{ path: '**', component: EmptyRouteComponent }
];
Un menú anidado se puede representar desde una aplicación personalizada. Esta sección describe los pasos necesarios para preparar el documento de registro de MFE. Para ello, se han introducido las siguientes propiedades:
Ejemplo de un menú anidado creado para la aplicación Test MFE custom MFE:
Para procesar un menú anidado:
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"display_name": "Test MFE",
"menu_path": "Application",
"custom": true,
"default": false,
"level": 1,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
La propiedad path no debería estar presente si un menú tiene menús secundarios. El nivel 1 indica que este menú debe registrarse en primer lugar.
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"display_name": "Test MFE",
"menu_path": "Application",
"custom": true,
"default": false,
"level": 1,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
En la figura anterior, el valor primario es Test MFE; por lo tanto, el menú Test MFE Level One se anida en el menú Test MFE.
Nivel 2
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"path": "ex/test-mfe/compone",
"display_name": "Test MFE One",
"menu_path": "Application",
"parents": "Test MFE",
"custom": true,
"default": false,
"level": 2,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
Nivel 4
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"path": "ex/test-mfe/comptwo",
"display_name": "Test MFE Two",
"menu_path": "Application",
"parents": "Test MFE",
"custom": true,
"default": false,
"level": 4,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
Nivel 5
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"path": "ex/test-mfe/compone",
"display_name": "Test MFE First one",
"menu_path": "Application",
"parents": "Test MFE Level One",
"custom": true,
"default": false,
"level": 5,
"distribution_path": "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
El menú Test MFE First One se anida en el menú Test MFE Level One.
Nivel 6
"layout_enabled": true,
"name": "@cisco-bpa-platform/test-mfe-root",
"type": "application",
"path": "ex/test-mfe/comptwo",
"display_name": "Test MFE First Two",
"menu_path": "Application",
"parents": "Test MFE Level One",
"custom": true,
"default": false,
"level": 6,
"distribution_path" : "/assets/cisco-bpa-platform/mw-device-manager/test-mfe/main.js",
"version": "4.1.0-501"
El menú Test MFE First Two se anida en el menú Test MFE Level One.
Después de preparar el archivo "mfe.json" en el paso 1, reinicie el contenedor de microservicios para registrar las entradas.
| Revisión | Fecha de publicación | Comentarios |
|---|---|---|
1.0 |
26-Nov-2024
|
Versión inicial |
Comentarios