تسعى مجموعة الوثائق لهذا المنتج جاهدة لاستخدام لغة خالية من التحيز. لأغراض مجموعة الوثائق هذه، يتم تعريف "خالية من التحيز" على أنها لغة لا تعني التمييز على أساس العمر، والإعاقة، والجنس، والهوية العرقية، والهوية الإثنية، والتوجه الجنسي، والحالة الاجتماعية والاقتصادية، والتمييز متعدد الجوانب. قد تكون الاستثناءات موجودة في الوثائق بسبب اللغة التي يتم تشفيرها بشكل ثابت في واجهات المستخدم الخاصة ببرنامج المنتج، أو اللغة المستخدمة بناءً على وثائق RFP، أو اللغة التي يستخدمها منتج الجهة الخارجية المُشار إليه. تعرّف على المزيد حول كيفية استخدام Cisco للغة الشاملة.
ترجمت Cisco هذا المستند باستخدام مجموعة من التقنيات الآلية والبشرية لتقديم محتوى دعم للمستخدمين في جميع أنحاء العالم بلغتهم الخاصة. يُرجى ملاحظة أن أفضل ترجمة آلية لن تكون دقيقة كما هو الحال مع الترجمة الاحترافية التي يقدمها مترجم محترف. تخلي Cisco Systems مسئوليتها عن دقة هذه الترجمات وتُوصي بالرجوع دائمًا إلى المستند الإنجليزي الأصلي (الرابط متوفر).
MicroFrontEnd (MFE) هو نمط معماري حيث يتم تكوين أجزاء مختلفة من صفحات واجهة المستخدم (UI) في وقت الإنشاء أو وقت التشغيل. ويتم تطوير كل حاوية متعددة الخدمات بشكل مستقل.
يمكن تحميل التطبيقات التي تم تطويرها باستخدام أي إطار عمل على هيئة MFE. القسم التالي هو مثال على إضافة تطبيق زاوي على هيئة MFE.
ng new test-mfe — routing —style=scss
cd للتبديل إلى test-mfe.ng add single-spa-angular@7 —project test-mfe
ملاحظة: يتم إستخدام إصدار متوافق من Angular 14 و single-spa-angular@7.
ملاحظة: إعداد deployUrl خاص بالتطوير المحلي فقط.
"deployUrl": "http://localhost:4201/"
npx create-nx-workspace@15.0.0 — إعداد مسبق=زاوي —npmScope=cisco-bpa-platform
يتم إنشاء مساحة عمل BPA-test-mfe NX باستخدام التطبيق الزاوي BPA-test-mfe.
cd للتبديل إلى test-mfe.npm install single-spa-angular@7 \--legacy-peer-deps && npx nx g
single-spa-angular:ng-add \--project bpa-test-mfe
يتم إنشاء الملفات التالية وتحديثها:
ملاحظة: إعداد deployUrl خاص بالتطوير المحلي فقط.
"deployUrl": "http://localhost:4201",
قم بتحديث الإصدار @angular-builders/custom-webpack" المقابل للإصدار الزاوي. يستخدم الإصدار الوارد في المثال التالي للتطبيقات الزاوية 14.
"@angular-builders/custom-webpack": "14.1.0",
قم بتحديث القالب باستخدام محدد فريد "<app-test-mfe-root>" في ./src/main.single-spa.ts.
قم بتحديث نفس اسم المحدد "<app-test-mfe-root>" في ./src/app/app.component.ts.
يتم إستخدام حزمة "نظام NPM-Web-interop" لتعيين المسار العام للأصول بشكل ديناميكي.
systemjs-webpack-interop": "^2.3.7",
قم بتثبيت "systemsjs-web-interop" وأضف السطر أدناه كأول بيان إستيراد في الملف "main.single-spa.ts".
يجب أن يكون SystemJSmoduleName فريدا وأن يتم إستخدامه كاسم يعرف MFE كما هو موضح أعلاه. ويساعد التغيير المذكور أعلاه على حل مشكلة الأصول المحملة ببطء من المضيف الملائم لوزارة المالية.
قم بتضمين المسارات الخاصة بالتطبيق في ملف "app.route.ts" الخاص بالتطبيق الزاوي الجديد.
ملاحظة: يجب تضمين المسار التالي إلى "app.routes.ts".
{ path: '**', component: EmptyRouteComponent }
تقترن معظم تطبيقات واجهة المستخدم بخدمة مصغرة حسب التصميم. يجب تنفيذ الخطوات التالية في الأقسام أدناه للخدمة الدقيقة المقترنة لتحميل تطبيق واجهة المستخدم المقترنة ك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"
}
]
إستدعاء نقطة نهاية API أساسية (على سبيل المثال، POST MFE/apps) لضم MFE (MFE) الخاصة. لتبسيط العملية، يتم إنشاء أسلوب أداة مساعدة AddMfeApps لقبول معلومات MFE. لتسجيل تفاصيل MFE المعرفة في ملف BPA "mfe.json".
const { mfeHelper } = require('@cisco-bpa-platform/mw-util-common-app');
MFE جاهز للاختبار.
ملاحظة: لا يتم عرض التنقل الجانبي عند تحميل MFE الجديد لأنه غير مدمج في MFE الجديد.
declare module '@cisco-bpa-platform/utility-state';
config.externalals = ['@cisco-bpa-platform/utility-state'].تحدد الخطوات أعلاه @cisco-bpa-platform/utility-state وتخطي خطأ الاستيراد.
"@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/component-store: "~14.0.0""@ngrx/التأثيرات": "~14.0.0""@ngrx/entity": "~14.0.0""@ngrx/router-store: "~14.0.0""@ngrx/store: "~14.0.0""موفر الملفات": "^2.0.5"تبعيات التطوير"@types/file-saver: "^2.0.7"ملاحظة: يجب إستخدام الإصدارات الصحيحة لجميع مكتبات أنظمة 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"
}; والتنقل الجانبي جاهز للاختبار.
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 }
];
يمكن عرض قائمة متداخلة من تطبيق مخصص. يوضح هذا القسم الخطوات المطلوبة لإعداد مستند تسجيل MFE. وقد استحدثت الخصائص التالية لخدمة هذا الغرض:
مثال لقائمة متداخلة تم إنشائها لتطبيق إختبار MFE المخصص MFE:
لعرض قائمة متداخلة:
"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"
يجب ألا تكون خاصية المسار موجودة إذا كانت القائمة تحتوي على قوائم فرعية. يشير المستوى 1 إلى أنه يجب تسجيل هذه القائمة أولا.
"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"
في الشكل أعلاه، تكون القيمة الأصلية هي إختبار MFE؛ لذلك، تتداخل قائمة إختبار MFE المستوى One تحت قائمة إختبار MFE.
المستوى 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"
المستوى 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"
المستوى 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"
تتداخل قائمة إختبار MFE First One تحت قائمة إختبار MFE Level One.
المستوى 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"
تتداخل قائمة إختبار MFE First Two تحت قائمة إختبار MFE Level One.
بعد إعداد ملف "mfe.json" في الخطوة 1، قم بإعادة تشغيل حاوية الخدمة الدقيقة لتسجيل الإدخالات.
| المراجعة | تاريخ النشر | التعليقات |
|---|---|---|
1.0 |
26-Nov-2024
|
الإصدار الأولي |
التعليقات