Webサービスを使用したフレックスフィールド、ルックアップまたはプロファイル値のインポート

アプリケーション・ページのインポート機能を使用して、参照、プロファイル・オプション値および拡張可能フレックスフィールドをアプリケーションにインポートできます。または、インポート・タスクにWebサービスFndManageImportExportFilesServiceを使用することもできます。このWebサービスでは次のメソッドが使用されます。

ローダー名

非同期メソッド

同期メソッド

後方互換性のためにサポートされているメソッド(UUIDなし)

Flex data uploader

processFlexDataAsync(List<String> inputFileIdTypeList, String UUID)

processFlexData(LIst<String>inputFileIdTypeList, String UUID)

processFlexDataFiles(List<Strig> inputFileIdTypeList)

Lookups data uploader

processLookupsDataAsync(long lookupTypesFileID, long lookupCodesFileID, long viewApplicationID, String UUID)

processLookupsData (long lookupTypesFileID, long lookupCodesFileID, long viewApplicationID, String UUID)

processLookupsUploadFiles (long lookupTypesFileID, long lookupCodesFileID, long viewApplicationID)

User profile values uploader

processUserProfileValuesAsync(long userProfilesFileID, String UUID)

processUserProfileValues(long userProfilesFileID, String UUID)

processUserProfileValuesFile(long userProfilesFileID)

Valueset Values data uploader

processValueSetValuesAsync(Long fileIdAtRepository, String UUID)

processValueSetValues(Long fileIdAtRepository, String UUID)

valueSetValuesDataLoader(Long fileIdAtRepository)

Generic method

該当なし

downloadProcessLogFile(String UUID)

該当なし

次の例では、Webサービスを使用したプロファイル値のインポート方法を示します。参照または拡張可能フレックスフィールドをインポートするには、メソッドや他の関連する値をコード内で置き換えた後で、ここに示すのと同じ方法でWebサービスを開始します。

プロファイル値をインポートするには:

  1. 次のサブステップを実行して、「oracle/wss11_saml_or_username_token_with_message_protection_service_policy」というセキュリティ・ポリシー用のキーストアを生成します。

    1. コマンドkeytool -genkeypair -keyalg RSA -alias mycompkey -keypass password -keystore mycompclient-keystore.jks -storepass password -validity 3600を使用して、キーストアを生成します。

    2. WebブラウザでURL http://<host>:<port>/fndAppCoreServices/FndManageImportExportFilesService?wsdlを使用してWSDLを開き、公開キー<wsdl:service>/<wsdl:port>/<wsa:EndpointReference>/<wsid:Identity>/<dsig:keyInfo>/<dsig:X509Data>/<dsig:X509Certificate>を取得します。次に、それを---- BEGIN CERTIFICATE -------- END CERTIFICATE ----で囲み、cdrmpk.cerという名前でファイルに保存します。

    3. コマンドkeytool -importcert -alias cdrmkey -file cdrmpk.cer -keystore mycompclient-keystore.jks -storepass passwordを使用して、トラスト・ストアにキー情報を格納します。

  2. 任意のブラウザを使用して、WSDLページを開きます。

  3. 関連するセキュリティ証明書Verisign Class 3 Public Primary Certification Authority - G5およびVerisign Secure Server CA - G3をエクスポートして保存します。

  4. 次のコマンドを使用して、保存した証明書をクライアント・コンピュータのトラスト・ストアにインポートします。

    keytool -importcert -keystore <truststore> -storepass <truststorepassword> -file <file location where the mentioned certificate is stored> -alias <alias for certificate>
  5. 次のコマンドを実行して、FndManageImportExportFilesService Webサービス用のJAX-WSプロキシを生成します。

    C:\Program Files\Java\jdk1.7.0_04\bin>wsimport -s "d:\wsimport\FndManageImportExport" -d "d:\wsimport\FndManageImportExport" http://<host>:<port>/fndAppCoreServices/FndManageImportExportFilesService?wsdl
  6. 生成されたコードをJARファイルとして保存し、FndManageImportExportProxy.jarという名前を付けます。

  7. 次のコードを使用して、Webサービスを開始するための別のJARファイルを作成します。

    package com.oracle.xmlns.oracle.apps.fnd.applcore.webservices;
     
    import com.sun.xml.ws.developer.WSBindingProvider;
     
    import java.io.File;
    import java.io.IOException;
     
    import java.util.List;
     
    import java.util.Map;
     
    import javax.xml.ws.BindingProvider;
    import javax.xml.ws.WebServiceRef;
     
    import javax.xml.ws.handler.Handler;
     
    import oracle.webservices.ClientConstants;
     
    import weblogic.wsee.jws.jaxws.owsm.SecurityPoliciesFeature;
    // !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
    // This source file is generated by Oracle tools
    // Contents may be subject to change
    // For reporting problems, use the following
    // Version = Oracle WebServices (11.1.1.0.0, build 130224.1947.04102)
     
    public class FndManageImportExportFilesServiceSoapHttpPortClient
    {
      @WebServiceRef
      private static FndManageImportExportFilesService_Service fndManageImportExportFilesService_Service;
     
      public static void main(String [] args)
      {
           System.setProperty("javax.net.ssl.trustStore","<location of truststore which is used in II) to import the certificates>");
           System.setProperty("javax.net.ssl.trustStorePassword", "<truststore password>");
     
        fndManageImportExportFilesService_Service = new FndManageImportExportFilesService_Service();
            SecurityPoliciesFeature securityFeatures =
                new SecurityPoliciesFeature(new String[] { "oracle/wss11_username_token_with_message_protection_client_policy",
                                                           });
            FndManageImportExportFilesService
     fndManageImportExportFilesService =  
    fndManageImportExportFilesService_Service.getFndManageImportExportFilesServiceSoapHttpPort
     (securityFeatures);
            // Add your code to call the required methods.
     
     
            WSBindingProvider wsbp = (WSBindingProvider) fndManageImportExportFilesService;
               Map<String, Object> requestContext = wsbp.getRequestContext();
     
     
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_TYPE,"jks");
            // Provide location of 'mycompclient-keystore.jks' which was created during Step I)
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_LOCATION,"/home/user1/mycompclient-keystore.jks");
            requestContext.put(ClientConstants.WSSEC_KEYSTORE_PASSWORD,"password");
            requestContext.put(ClientConstants.WSSEC_RECIPIENT_KEY_ALIAS,"cdrmkey");
     
            //Provide user who is having permission to initiate the service
            requestContext.put(WSBindingProvider.USERNAME_PROPERTY,"<username>");
            requestContext.put(WSBindingProvider.PASSWORD_PROPERTY, "<password>");
     
     
            String id =          invokeUploadFiletoUCMMethod(fndManageImportExportFilesService);
     
            if (id != null) {
                invokeUserProfileValuesDataLoader(fndManageImportExportFilesService,  new Long(id));
     
            }
      }
     
        static String invokeUploadFiletoUCMMethod(FndManageImportExportFilesService fndManageImportExportFilesService) {
     
            String response = null;
            DocumentDetails document = new DocumentDetails();
            ObjectFactory objfactory = new ObjectFactory();
            document.setFileName(objfactory.createDocumentDetailsFileName("import_data.txt"));
            // Provide UCM repository - if repository is fin/tax/import then suffix each value with $ as mentioned here
            document.setDocumentAccount(objfactory.createDocumentDetailsDocumentAccount("fin$/tax$/import$"));
            document.setDocumentTitle(objfactory.createDocumentDetailsDocumentTitle("VS"));
            document.setContentType(objfactory.createDocumentDetailsContentType("plain/text"));
     
            try {
     
                // Provide location of bulk import data file in prescribed format
                byte[] content =
                org.apache.commons.io.FileUtils.readFileToByteArray(new File("/home/user1/import_data.txt"));
     
                //System.out.println("File content:" + new String(content, "UTF-8"));
                document.setContent(objfactory.createDocumentDetailsContent(content));
     
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
            catch(Exception e) {
                System.out.println("Exception: "+e.getMessage());
            }
     
            try {
                response = fndManageImportExportFilesService.uploadFiletoUCM(document);
                System.out.println("Response: " + response);
     
            } catch (ServiceException e) {
                System.out.println(e.getMessage());
            }
     
            return response;
        }
     
        static void invokeUserProfileValuesDataLoader(FndManageImportExportFilesService fndManageImportExportFilesService,
                                                   Long id) {
            String response;
            try {
                response = fndManageImportExportFilesService.processUserProfileValuesFile(id);
                System.out.println("Response: " + response);
            } catch (ServiceException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    
    ノート: 該当する場合は、プロファイル値を参照する値を参照値セットまたはフレックスフィールド値セットの値で置き換えてください。
  8. 生成された出力をJAVAファイルとして保存し、FndManageImportExportFilesServiceSoapHttpPortClient.javaという名前を付けます。

  9. JAVAファイルを使用してJARファイルを作成し、FndManageImportExportClient.jarという名前を付けます。

  10. 次のコマンドを使用して、Webサービスを実行します。

    java -cp ./FndManageImportExportProxy.jar:./ws.api_1.1.0.0.jar:./FndManageImportExportClient.jar FndManageImportExportFilesServiceSoapHttpPortClient

次に、非同期メソッドdeployFlexAsync()のWebサービス・クライアントであるサンプル・プログラムを示します。このクライアント・プログラムは、コールバック・クライアントを起動し、非同期コールを実行します。必須コールバックWebサービスは、行番号58で開始します。

Endpoint e = Endpoint.publish(callbackServiceAddress, new ApplicationsCoreSetupServiceResponseImpl());

コールバックWebサービスは、クライアント・プログラムの実行が完了した後も実行中状態であるため、手動でクローズする必要があります。または、ここで前の行にコメントを入力して、別のクライアント・プログラムで実行することもできます。

package com.ws.client;

import com.sun.xml.ws.api.addressing.AddressingVersion;
import com.sun.xml.ws.api.addressing.WSEndpointReference;
import com.sun.xml.ws.developer.WSBindingProvider;
import com.sun.xml.ws.message.StringHeader;

import com.ws.client.callback.ApplicationsCoreSetupServiceResponseImpl;
import com.ws.client.types.DeployFlexAsyncResponse;

import java.util.Map;
import java.util.UUID;

import javax.xml.ws.Endpoint;
import javax.xml.ws.Response;
import javax.xml.ws.WebServiceRef;

import oracle.webservices.ClientConstants;

import weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature;
// !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
// This source file is generated by Oracle tools
// Contents may be subject to change
// For reporting problems, use the following
// Version = Oracle WebServices (11.1.1.0.0, build 150302.2135.1.30348)

public class ApplicationsCoreSetupServiceSoapHttpPortClient
{
	@WebServiceRef
	private static ApplicationsCoreSetupService_Service applicationsCoreSetupService_Service;


	private static final AddressingVersion WS_ADDR_VER = AddressingVersion.W3C;

	public static void main(String [] args) throws InterruptedException {
		applicationsCoreSetupService_Service = new ApplicationsCoreSetupService_Service();
			SecurityPolicyFeature[] features = new SecurityPolicyFeature[]
				{ new SecurityPolicyFeature("policy:oracle/wss_username_token_client_policy") };

		ApplicationsCoreSetupService applicationsCoreSetupService = applicationsCoreSetupService_Service.getApplicationsCoreSetupServiceSoapHttpPort(features);


		// Get the request context to set the outgoing addressing properties

		WSBindingProvider wsbp = (WSBindingProvider)applicationsCoreSetupService;
			Map<String, Object> requestContext = wsbp.getRequestContext();

			requestContext.put(ClientConstants.WSSEC_KEYSTORE_TYPE, "jks");
			requestContext.put(ClientConstants.WSSEC_KEYSTORE_LOCATION,
											  "/scratch/vgarikip/view_storage/work/keys/mycompclient-keystore.jks");
			requestContext.put(ClientConstants.WSSEC_KEYSTORE_PASSWORD,
												"mypassword1");
			requestContext.put(ClientConstants.WSSEC_RECIPIENT_KEY_ALIAS,
												"cdrmkey");
			requestContext.put(WSBindingProvider.USERNAME_PROPERTY,
												"app_impl_consultant");
			requestContext.put(WSBindingProvider.PASSWORD_PROPERTY, "mypassword1");

			String callbackServiceAddress = "http://<server>:<port>/TestAsyncMani-Project1-context-root/ApplicationsCoreSetupServiceResponseImplPort";
			Endpoint e = Endpoint.publish(callbackServiceAddress, new ApplicationsCoreSetupServiceResponseImpl());

		WSEndpointReference replyTo = new WSEndpointReference(callbackServiceAddress, WS_ADDR_VER);
		String uuid = "uuid:" + UUID.randomUUID();

		wsbp.setOutboundHeaders( new StringHeader(WS_ADDR_VER.messageIDTag, uuid), replyTo.createHeader(WS_ADDR_VER.replyToTag));

	applicationsCoreSetupService.deployFlexAsync("PER_CITIZENSHIPS_DFF", "DFF", false);      //.deployPatchedFlexAsync(mode, pCustomizationId, pCustomizationSetLoc);



		System.out.println("####END OF WS CALL");

		Thread.sleep(10000);

		// Add your code to call the desired methods.
	}
}

前のプログラムで行番号58でコメントする場合のコールバックWebサービス起動ユーティリティの例:

package com.ws.client;


import com.ws.client.callback.ApplicationsCoreSetupServiceResponseImpl;

import javax.xml.ws.Endpoint;


public class RunCallbackServtest {
	public RunCallbackServtest() {
		super();
	}

	public static void main(String[] args) throws InterruptedException {
		RunCallbackServtest runCallbackServtest = new RunCallbackServtest();
		runCallbackServtest.runServ();

	}

	private void runServ() throws InterruptedException {

		System.out.println("$$$$$ BEFORE Server Start ###################");
		String callbackServiceAddress = "http://<server>:<port>/TestAsyncMani-Project1-context-root/ApplicationsCoreSetupServiceResponseImplPort";
		Endpoint e = Endpoint.publish(callbackServiceAddress, new ApplicationsCoreSetupServiceResponseImpl());

		System.out.println("$$$$$ AFTER Server Start ###################");

	}
}