AIapp - Discounting
- https://qachaoserpivgarci5a225c-erp.aiapps.ocs.oc-test.com/
- https://devenverpivgarci002-erp.aiapps.ocs.oc-test.com/
TAS->CRSM-RSM->Resource ObBoader-> Core onboarder -> ERP Common-> ERP Discounts -> ERP AD
- TAS
- Tenant automation service
- CRSM
- Cross Region service manager
- This distributes calls to specific RSM
- RSM
- Resginal service manager
- Resource Onboarder ?
- Core Onboarder?
- AI Core onboarding
- onboarding service responsible for platform part of tenant onboarding
- app onboarding1...N
- ERP Common --> to be recognized by RSM we need to register under resource onboarder
- ERP Discounts
- ERP AD
kudevcp -n erp-payables get pods -> control plane
PODs in erp-payables namespace
- ai-erp-common-onboarding-cp
- Service onboarding
- Configuraitons for idcs
- DNS registry
- WTSS registry //domain name ?
- HelmChartOnBoarderHandler("idcs-serviceonboarding").installERPAtpCharts();
- Tenant onboarding
- HelmChartOnBoarderHandler(context.getTenant()).installAiRoutingChart(context);
- saveAccessLinks(context);
- ai-erp-discounts-onboarding-cp-
- ai-poline-onboarding-cp-
- ai-erp-ad-onboarding-cp-55cc94bd68-szzkd
- ai-vanity-metrics-onboarding-cp-
kudevdp -n erp-payables get pods
PODs in erp-payables namespace -> data plane
- ai-erp-ad-rest-dp-
- ai-erp-discounts-rest-cp-
- ai-erp-discounts-ui-cp-
- ai-vanity-metrics-rest
kudevdp get pods -A | grep -i payables
kudevdp -n erp-payables-idcs-<tenant id> get pods
- ai-erp-ad-workflow1
ERP Common Onboarding
- Service onboarding
- tenant onboardin
- offboarding
Framework components/parts:
- Parts
- Ingestion
- Extraction component called Pegasus
- It connects to FA via BIP
- Transformation component called Protheus
- Used for flattening for feature generation
- csv training dataset/file output from ingestion pipeline
- Data science
- Athena
- Allows to easily specify the approach to take in building a Model
- Training pipeline
- read csv file which is output from Ingestion and builds a model based on algorithm that data scientist has coded into training pipeline
- Model serving pipeline
- Prediction
- NO explicit framework components
- Andrew team buidling called hermes (Prediction delivery service)
- Service to external systems(similar to requests from invoice distributions)
- Enrichment process to connect to Datafox
- Embridge, OAL, Camgemini, PWC
Spark(Hadoop components)
- Used in Aggregation module
Service OnBoarding
- registerPegasusIngredients
- registerWorkflowinYas
- uploadSolrConfigSet
- installDaaSB
- installCharts
BIP Ingedients
- Discounts -> Build -> Docker -> OCI -> aid-onboarding -> bip-ingredients
- dailyrate-ingredient.yml
- invoiceheader-ingredient.yml
- invoicepaymentschedule-ingredient.yml
- invoiceprepayment-ingredient.yml
- invoicepymtsall-ingredient.yml
- ledger-ingredient.yml
- supplier-ingredient.yml
- suppliersite-ingredient.yml
- suppliersiteassignments-ingredient.yml
- QA
- /etc/aiapps/pegasus/ingredients/suppliersite-ingredient.yml
Discounts Objects
- model
- POJOs extending RESTPojoBase
- APRRecommendation, Assignment, Assignments, BiPubConnection, BusinessUnit, Category, ConversionType, ConversionTypes, Currency, Currencies, DiscountRecommendation, Invoice, RESTPojoBase, Setting, SolrDynamicFacet, SolrFilterQuery, SolrRequest, StandingOffer, StandingOfferAssignment, StandingOffers, StandingOffersAssignment, SubCategory, Supplier, SupplierAttribute, SupplierCategory, SupplierDetails, SupplierGroupMembership, SupplierHistory, SupplierHistoryAcceptedAPR, Suppliers, SupplierScore, SupplierScoreComponent, SupplierSite, SupplierSiteAssignment, SupplierSitesAssignment, SupplierStatus, SupplierTag, ValidateCredentials
Discounts Database
- POJOs extending AIDBObject
- Assignment, BusinessUnit, ConversionType, CurrencyCode, DiscountRecommendation, ExecutionLog, GLDailyRate, GLLedger, InvoiceHeader, InvoicePayment, InvoicePaymentSchedule, MissingCurrencyCodes, Settings, Supplier, SupplierBU, SupplierBUHistory, SupplierDelta, SupplierHistory, SupplierSite, SupplierSiteAssignment
- Repository
- Repository that extends CommonRepository<its type>
- DAO/repository objects to fetch data from HBase
- Repository Classes that push data to repository/DB?-> why only for Suppliers?
- constants
- DiscountsCommonConstants
- ObjectStorage Intialpath, base_dir,
- workflowname, workflow namespace
- Pegasus constants
- Platform manager
- LogConstants
- SecurityConstants
- datastore
- getDBConnection
- discountsSecretService.getApplicationCommonSecretValues("ATP_CREDENTIALS")
- discountsSecretService.getGlobalSecretValues("AI_COMMON_DB_URL");
- OracleDataSource ods = new OracleDataSource();
ods.setURL(dbUrl);
ods.setConnectionProperties(info); - FusionConfigUtils
- saveTenantFusionConfig & getTenantBIConfig
- saveBIPublisherConfig & getTenantFusionConfig
- FusionConnection
- saveFusionConnection & getFusionConnection
- PlatformManagerService
- createNamespace
- deleteTenantNamespace
- ObjectStorageService
- getObjectNamesWithFilter
- downloadObjectStream
- getContainerObject
- uploadObjectStream
- moveRawToProcd
- uploadObjectStream
- AIDiscountsSolrClient
- jsonToSolrInputDocument
- validateSolrInputDocument
- addToCollection => commit to solr
- DiscountsWorkflowScheduler
- Schedules Discounts workflow in YAS with default properties.
- Scheduling account defaulting workflow
- FileUtils
- Generatecsv & compress
Discounts OnBoarding
- constants
- enums
- handlers
- onboarders
- DiscountsServiceOnboarding implements ServiceOnboarding
- registerPegasusIngredient
- PegasusOnboarder.registerIngredient(BIP_PAYABLES_PRODUCT_NAME, INGREDIENT_NAME_SUPPLIER_SITE, Paths.get(INGREDIENT_FILE_SUPPLIER_SITE));
- registerWorkflowInYAS
- WorkflowOnboarder.register(DISCOUNTS_WORKFLOW_NAME, workflowPath);
- uploadSolrConfigSet
- solrOnboarder.uploadConfigSet
- installCharts
- installOrUninstallRestChart(false);
- installOrUninstallRestChart(true);
- installOrUninstallUIChart(false);
- installOrUninstallUIChart(true);
- DiscountsTenantOnboarding implements TenantOnboarding
- doTenantOnboarding
- createHbaseNamespace
- HBaseUtils.createNamespaceIfNotExists(OnboardingUtils.getTenantWithUnderscore(tenantId), hbaseOnboarder.getAdmin());
- createSolrCollection
- solOnborder.createCollection(collectionName,
AIAPPS_ERP_AI_SOLR_CONFIGSET_NAME,
AIAPPS_ERP_AI_SOLR_SHARDS,
AIAPPS_ERP_AI_SOLR_REPLICAS); - saveIDCSClientData
- SecretsCommon.setApplicationTenantSecretValues
- createAppTenantNamespaceIfDoesntExists
- platformManagerService.createNamespace
- rescheduleTenantWorkflows
- copyFASecretsToNamespace
- DiscountsTenantOffboarding implements TenantOffboarding
- doTenantOffboarding
- cleanupDiscounts
- deleteSolrCollection
- deleteScheduleJobFromYas
- deleteHbaseTables
- deleteTenantFilesFromObjectStorage
- cleanupIDCSClientData
- deleteBIPCredentials
- deleteFusionCredentials
- patterns
- utils
- DiscountsMonitoringOnBoarding.java
- DiscountsOnboardingApplication.java
Enrichment
public static final String MATCHING_OUTPUT_TABLE = "DASB_MATCHING_OUTPUT";
public static final String ERP_TENANTID = "ERP_TENANTID";
public static final String ERP_FIRSTPARTYID = "ERP_FIRSTPARTYID";
public static final String DNB_DUNS = "DNB_DUNS";
public static final String SCORE = "SCORE";
public static final String MAPPING_TABLE = "DASB_SUPPLIERS_BUSINESSES";
public static final String TENANTID = "TENANTID";
public static final String FIRSTPARTYID = "FIRSTPARTYID";
public static final String DAASBID = "DAASBID";
public static final String ASSERTED = "ASSERTED";
- periodicProcess
- RAW_PATH = payables/daasb/suppliersites/<ENV>/raw/
- ENRICHED_PATH = payables/daasb/suppliersites/<ENV>/enriched/
- periodicProcessERPData
- getRawFiles
- returns List<filenames> from ObjectStorageService
- loadRawFiles
- DatafoxEnrichmentManager.enrichFromSuppliersTable
- MergeSuppliers.runProcess();
- enrichRawFiles
- TruncateStagingTable
- TRUNCATE TABLE DASB_SUPPLIERS_STG
- PostProcessRawFiles
- Move to procd directory
Ingestion
oracle.aiapps.discounts.ingestion.fusion.FusionIngestion
- DataService
- createPojosFromStream //return list of Objects of any class that extend AIDBObject
- fromCsvContent //convert csv to List<DBObjects>
- ProcessorUtils
- convertZIPFileToPojos -> uses DataService.createPojosFromStream
- processZIPFile
- dataService.processCSVContent
- RepositoryFactory
- Class to create and return any repository object
- StorageServiceFactory //create and return object for the following services
- getTenantOCIStorageService
- getDaasbObjectStorageService
- Processor
- processData -> calls processDataBatch
- processDataBatch
- Push data to repository/DB
- DataService
- processCSVContent
- fromColumnsData
- processor.processDataBatch to push data to DB
- fusion
- dataservice
- fromColumnsData //Convert csv record to object that extends AIDBObject
- factory
- DataServiceFactory to return fusion.dataservice object
- IngestionFactory to return POJO that has Dataservice & Repository factories
- processor
- FusionIngestion.main()
- fusionIngestion.execute();
- runProcess()
- storageServiceFactory = new StorageServiceFactory(this.tenantId);
- runProcess(storageServiceFactory)
- tenantObjectStorageService = storageServiceFactory.getTenantOCIStorageService();
- moveFromBaseDirToProcdDir(tenantObjectStorageService);
- getUnprocessedFiles(tenantObjectStorageService);
- postProcessFiles
- runProcessRemoval();
DiscountsEnrichment
- datafox
- rest
- DatafoxRestAPI
-
- util
- DatafoxServer
- get credentials from discountsSecretService
- return instance of DatafoxRestAPI
- DatafoxEnrichmentConsumer extends EnrichmentConsumer
- batchProcess
- getSelectDataFromBusinessSuppliers
- getDatafoxRestAPI
- mergeResults
- DatafoxEnrichmentManager
-
-
- aggregation
- common
- DailyExchangeRate
- SimpleHttpGetMethod
- Time
- Util
- extraction
- Extract data from HBase Tables using Spark
- ml
- APRCalculator
- getBetterAPR
- supplier.getmLScore
- solr
- SolrIngestion
- indexSuppliersInfoToSolr
- pojo
- POJOs for all entities
- Utilities
- denormalizeDataBUCurrencyIsNull
- mergeInvoiceHeaderInvoiceHeaderRDDs
- mergeInvoiceHeaderInvoicePaymentScheduleRDDs
- mergeInvoicePaymentInvoiceHeaderRDDs
- mergeSupplierInvoiceHeaderRDDs
- mergeSupplierSupplierRDDs
- mergeSupplierSupplierSiteAssignmentRDDs
- setEnrollmentStatusForSupplierSiteAssignments
- DiscountsAggregation -> Is this data hammering
- registerContainerApplication
- runProcess
- extractSettings and all other entities
- extractSuppliers
- ExtractSiteAssignments
- getStandingOffersRDD
- setEnrollmentStatusForSupplierSiteAssignments
- denormalizePaymentData //Populate the BU Currency on any invoice payment
- aggregateERPData
- mergeSupplierSupplierSiteAssignmentRDDs
- mergeSupplierInvoiceHeaderRDDs
- mergeSupplierSupplierRDDs
- aggregateSupplierSiteAssignments
- denormalizeSupplierBUData //save
- denormalizeSupplierSiteAssignmentData //save
- indexSuppliersInfoToSolr //save
- ingest into solr
- java
- rest.common
- httpRequest
- getConnection
- getJSONFromResponse
- jaxrs
- JerseyApplication
- startServer
- installMonitoring
- resources
- GET operations on following resources defined // calls Services to fetch data
BusinessUnitResource, SupplierResource, SupplierSiteAssignmentResource, StandingOfferResource, StandingOfferAssignmentResource, SettingResource, OAuth2Resource, DiscountResource, CurrencyResource, ConversionTypeResource, ConnectionResource, - services // fetch data using Repository objects
- SupplierService, SupplierSiteAssignmentService, StandingOfferService, StandingOfferAssignmentService, SettingService, OAuth2Service, MissingCurrencyService, DiscountsService, CurrencyService, ConversionTypeService, ConnectionService, BusinessUnitService, AISearchSupplierService
- resource
- static content
- .template files
- webapp
- web.xml // no content
Discounts UI
- minify
- nbproject
- public_html
- build
- css
- js
- resources
- templates
- util
- AIDiscountsConstants
- URL_MAP: {
"discounts": "/discounts/rest/v1",
"common": "/common/rest/v1",
'common-lib':'/common/ui/js'
} - DATAPROVIDER: {
_QUERY_AJAX_STATUS_SUCCESS: "success",
_QUERY_AJAX_STATUS_NOCONTENT: "nocontent",
_GET: "GET",
_POST: "POST",
_PUT: "PUT",
connections: "/connections",
connectionsFusion: "/connections/fusion",
connectionsbiPublisher: "/connections/biPublisher",
settings: "/settings",
currencies: "/currencies",
conversiontypes : "/conversiontypes",
suppliers: "/suppliers",
businessUnits: "/businessUnits",
standingOffers: "/standingOffers",
standingOfferAssignments: "/standingOfferAssignments",
supplierSites: "/supplierSiteAssignments",
suppliersCategories: "/suppliers/categories",
supplierInvoices: "/invoices",
userInfo: "/authSession?userInfo=true",
credentialsData: "/connections/credentialsData",
credentialsRegenSecret: "/connections/regenCredentialsData",
log: "/log",
callTimeout: 1500
} - dataprovider.js
- constructs url & triggers Ajax call to fetch data
- EventManager.js
- EventDispatcher
- DashboardItemChangeEvent
- DashboardCustomChange
- createSingleCustomChangeEvent
- createCustomChange
- getCustomChangeValue
- getCustomChange
- viewModels
- components
- FacetSelectionSet
- genericDialog
- homeCardSet
- InformationBox
- InformationBoxSet
- progressIndicator
- supplierCardList
- suppliersiteCardList
- enrollmentModules
- addOffers
- editOffers
- manageEnrollments
- review
- selectCampaign
- viewSiteEnrollments
- supControlModules
- scSupplierDetails
- scSuppliers
- connections.js
- home.js
- insights.js
- settings.js
- supervisoryControls.js
- views
- components
- FacetSelectionSet
- genericDialog
- homeCardSet
- InformationBox
- InformationBoxSet
- progressIndicator
- supplierCardList
- suppliersiteCardList
- enrollmentModules
- addOffers
- editOffers
- manageEnrollments
- review
- selectCampaign
- viewSiteEnrollments
- supControlModules
- scSupplierDetails
- scSupplier
- connections.html
- financialsCloud user/passwd & url
- oracleBusinessIntelligence user/passwd & url
- aiAppsSection
- home.html
- insights.html
- settings.html
- supervisoryControls.html
- META-INF
- index.html
- main.js
- navDrawer
- pageContent
- banner
- drawerToggleButton
- companyLogo
- Toolbar(user admin, logout)
- main
- homeCardSet
- LongRunningPullMetrics
- initializeMetrics
- create instance of PrometheusMeterRegistry
- Put data/info to customMetricsCounter Hashmap
- incrementEndPointMetrics
- hasMetricsInitialized
- incrementErrors
- completeRequest
- beginRequest
- setHeartbeat
- ShortLivingPushMetrics
- initializeMetrics
- getMetrics
- incrementErrors
- incrementWarnings
- registerIngestedRecordsByTable
- incrementCustomMetrics
- finalizeMetrics
- hasMetricsInitialized
- getCompleteMetricName
- setErrorFlag
- ShortLivingPushMetrics
ADF UI
- Supervisory Controls
- Datamodel
- AP_DISCOUNT_OFFERS_TL, AP_DISCOUNT_OFFERS_B- is this campaign?
- AP_DISCOUNT_OFFERS_ASSIGN --assignments?
- Navigate to any supplier
- Campaigns
- Create Enrollments
- select Campaign
- Choose supplier site, APR, date range
Comments
Post a Comment