レシピをインストールする前に
Oracle Integrationを使用してこれらの外部システムに正常に接続し、サプライヤ・レコードを非同期的にインポートするには、Oracle Autonomous Transaction ProcessingおよびOracle ERP Cloudインスタンスで次の構成タスクを実行する必要があります。
Oracle ERP Cloudの構成
Oracle IntegrationからOracle ERP Cloudインスタンスにアクセスするには、Oracle ERP Cloudに別のユーザー・アカウントが必要です。
「管理者」としてOracle ERP Cloudインスタンスにログインし、次のタスクを実行します。
- Oracle Integrationのユーザー・アカウントを作成します。 アカウントに設定したユーザー名とパスワードを書き留めます。 このユーザー・アカウントの資格証明を使用して、Oracle IntegrationからOracle ERP Cloudに接続します。
- 次のロールをユーザー・アカウントに割り当てます。 これらのロールの詳細は、「Oracle Integration 3でのOracle ERP Cloudアダプタの使用」の「統合ユーザーへの必要なロールの割当て」を参照してください。
Integration SpecialistOracle ERP Cloud-specific data access to the integration user
Oracle Autonomous Transaction Processingの構成
Oracle Autonomous Transaction Processingデータベース・インスタンスに管理者としてログインし、次のタスクを実行します。
- 一般的な構成タスクを実行します。 「Oracle Integration 3でのOracle Autonomous Transaction Processingアダプタの使用」の「接続を作成するための前提条件」を参照してください。
- 必要なオブジェクトを作成します。
必要なオブジェクトを作成するには、次のスクリプトを実行します:
CREATE OR REPLACE EDITIONABLE TYPE SUPPLIER_RECORD AS OBJECT ( Supplier VARCHAR2(200), SupplierNumber VARCHAR2(200), TaxOrganizationTypeCode VARCHAR2(200), TaxOrganizationType VARCHAR2(200), SupplierTypeCode VARCHAR2(200), SupplierStatus VARCHAR2(200), BusinessRelationshipCode VARCHAR2(200), BusinessRelationship VARCHAR2(200), TaxRegistrationCountry VARCHAR2(200), TaxpayerCountryCode VARCHAR2(200), TaxpayerCountry VARCHAR2(200), TaxpayerId VARCHAR2(200) ); / CREATE OR REPLACE EDITIONABLE TYPE SUPPLIER_TABLE IS TABLE OF supplier_record; / CREATE SEQUENCE SUPPLIERS_SEQ MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 6537 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; CREATE TABLE XX_SUPPLIERS ( "ID" NUMBER, "INSTANCE_ID" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "STATUS" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "SUPPLIER" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "SUPPLIER_NUMBER" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAX_ORGANIZATION_TYPE_CODE" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAX_ORGANIZATION_TYPE" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "SUPPLIER_TYPE_CODE" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "SUPPLIER_STATUS" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "BUSINESS_RELATIONSHIP_CODE" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "BUSINESS_RELATIONSHIP" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAX_REGISTRATION_COUNTRY" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAXPAYER_COUNTRY_CODE" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAXPAYER_COUNTRY" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "TAXPAYER_ID" VARCHAR2(200 BYTE) COLLATE "USING_NLS_COMP", "CREATION_DATE" TIMESTAMP (6) DEFAULT SYSDATE, "UPDATION_DATE" TIMESTAMP (6) DEFAULT SYSDATE ) DEFAULT COLLATION "USING_NLS_COMP" ; CREATE UNIQUE INDEX XX_SUPPLIERS_PK ON XX_SUPPLIERS ("ID") ; ALTER TABLE XX_SUPPLIERS ADD CONSTRAINT "XX_SUPPLIERS_PK" PRIMARY KEY ("ID") USING INDEX XX_SUPPLIERS_PK ENABLE; CREATE OR REPLACE EDITIONABLE TRIGGER XX_SUPPLIERS_TRIGGER BEFORE INSERT ON XX_SUPPLIERS FOR EACH ROW WHEN (new.ID IS NULL) BEGIN :new.ID := SUPPLIERS_SEQ.NEXTVAL; END; / ALTER TRIGGER XX_SUPPLIERS_TRIGGER ENABLE; CREATE OR REPLACE EDITIONABLE TRIGGER XX_SUPPLIERS_UPDATE_DATE BEFORE UPDATE ON XX_SUPPLIERS FOR EACH ROW BEGIN :NEW.UPDATION_DATE := SYSDATE; END; / ALTER TRIGGER XX_SUPPLIERS_UPDATE_DATE ENABLE; / CREATE OR REPLACE EDITIONABLE PACKAGE "ADMIN"."XX_WRAPPER_SUPPLIERS_PKG" AS PROCEDURE RUN_SCHEDULER_JOB ( P_SUPPLIER_RECORD IN SUPPLIER_TABLE, P_INSTANCEID IN VARCHAR2 ); PROCEDURE PROCESS_SUPPLIERS ( P_INSTANCEID IN VARCHAR2 ); PROCEDURE GET_SUPPLIERS_PAGINATION_PROC ( I_PAGE IN NUMBER, I_LIMIT IN NUMBER, I_PAGE_SIZE OUT NUMBER, P_DATA OUT SYS_REFCURSOR ); END XX_WRAPPER_SUPPLIERS_PKG; / CREATE OR REPLACE EDITIONABLE PACKAGE BODY "ADMIN"."XX_WRAPPER_SUPPLIERS_PKG" AS PROCEDURE RUN_SCHEDULER_JOB ( P_SUPPLIER_RECORD IN SUPPLIER_TABLE, P_INSTANCEID IN VARCHAR2 ) IS L_JOB_ACTION VARCHAR2(1000); BEGIN -- DBMS_SESSION.sleep(360); FOR I IN 1..P_SUPPLIER_RECORD.COUNT LOOP INSERT INTO XX_SUPPLIERS ( INSTANCE_ID, STATUS, SUPPLIER, SUPPLIER_NUMBER, TAX_ORGANIZATION_TYPE_CODE, TAX_ORGANIZATION_TYPE, SUPPLIER_TYPE_CODE, SUPPLIER_STATUS, BUSINESS_RELATIONSHIP_CODE, BUSINESS_RELATIONSHIP, TAX_REGISTRATION_COUNTRY, TAXPAYER_COUNTRY_CODE, TAXPAYER_COUNTRY, TAXPAYER_ID ) VALUES ( P_INSTANCEID, 'IN-PROGRESS', P_SUPPLIER_RECORD(I).SUPPLIER, P_SUPPLIER_RECORD(I).SUPPLIERNUMBER, P_SUPPLIER_RECORD(I).TAXORGANIZATIONTYPECODE, P_SUPPLIER_RECORD(I).TAXORGANIZATIONTYPE, P_SUPPLIER_RECORD(I).SUPPLIERTYPECODE, P_SUPPLIER_RECORD(I).SUPPLIERSTATUS, P_SUPPLIER_RECORD(I).BUSINESSRELATIONSHIPCODE, P_SUPPLIER_RECORD(I).BUSINESSRELATIONSHIP, P_SUPPLIER_RECORD(I).TAXREGISTRATIONCOUNTRY, P_SUPPLIER_RECORD(I).TAXPAYERCOUNTRYCODE, P_SUPPLIER_RECORD(I).TAXPAYERCOUNTRY, P_SUPPLIER_RECORD(I).TAXPAYERID ); END LOOP; L_JOB_ACTION := 'DECLARE BEGIN XX_WRAPPER_SUPPLIERS_PKG.PROCESS_SUPPLIERS(''' || P_INSTANCEID || '''); END;'; DBMS_OUTPUT.PUT_LINE('JOB Action ' || L_JOB_ACTION); DBMS_SCHEDULER.CREATE_JOB(JOB_NAME => 'supplier_job', JOB_TYPE => 'PLSQL_BLOCK', JOB_ACTION => L_JOB_ACTION, START_DATE => SYSTIMESTAMP , AUTO_DROP => TRUE, ENABLED => TRUE); END; PROCEDURE PROCESS_SUPPLIERS ( P_INSTANCEID IN VARCHAR2 ) IS BEGIN -- write your logic here, get all data based on Instance Id and do the validation and mark data as VALID OR INVALID UPDATE XX_SUPPLIERS SET STATUS = 'VALID' WHERE INSTANCE_ID = P_INSTANCEID; END; PROCEDURE GET_SUPPLIERS_PAGINATION_PROC ( I_PAGE IN NUMBER, I_LIMIT IN NUMBER, I_PAGE_SIZE OUT NUMBER, P_DATA OUT SYS_REFCURSOR ) AS COUNT1 NUMBER; BEGIN SELECT COUNT(*) INTO COUNT1 FROM SUPPLIERS; I_PAGE_SIZE := CEIL(COUNT1 / I_LIMIT); OPEN P_DATA FOR SELECT * FROM SUPPLIERS ORDER BY ID OFFSET NVL((I_PAGE - 1), 0) * I_LIMIT ROWS FETCH NEXT I_LIMIT ROWS ONLY; END; END XX_WRAPPER_SUPPLIERS_PKG; /