다음을 통해 공유


WCF 서비스 모델을 사용하여 Oracle E-Business Suite에서 동시 프로그램 호출

Oracle E-Business Suite는 Oracle 애플리케이션에서 특정 작업을 수행하기 위해 실행할 수 있는 동시 프로그램을 노출합니다. 각 Oracle 애플리케이션에는 표준 동시 프로그램 집합(모든 작업에서 동일함) 및 Oracle 애플리케이션과 관련된 특정 동시 프로그램이 있습니다. Oracle E-Business 어댑터는 모든 동시 프로그램을 어댑터 클라이언트가 호출할 수 있는 작업으로 노출합니다. 어댑터가 동시 프로그램을 지원하는 방법에 대한 자세한 내용은 동시 프로그램에 대한 작업을 참조하세요.

참고

메타데이터를 노출하지 않는 동시 프로그램의 경우 Oracle E-Business 어댑터는 이러한 각 동시 프로그램에 대해 100개의 선택적 매개 변수를 노출합니다. 이러한 동시 프로그램을 성공적으로 호출하려면 사용자가 Oracle E-Business Suite 설명서를 참조하여 값이 필요한 동시 프로그램의 매개 변수를 파악한 다음 지정해야 합니다. 이러한 동시 프로그램의 예로 일반 원장 애플리케이션의 저널 가져오기(실제 이름: GLLEZL)가 있습니다.

이 항목에 사용된 예제 정보

이 항목의 예제에서는 MS_SAMPLE_COPY_EMP_DATA 동시 프로그램을 호출한 다음, Get_Status 동시 프로그램을 호출하여 첫 번째 동시 프로그램의 상태 알아봅니다. 이러한 동시 프로그램은 애플리케이션 개체 라이브러리 애플리케이션에서 호출됩니다. MS_SAMPLE_COPY_EMP_DATA 샘플과 함께 제공되는 스크립트를 실행하여 만듭니다. 샘플에 대한 자세한 내용은 Oracle EBS 어댑터에 대한 샘플을 참조하세요. 이 항목을 기반으로 하는 샘플 ConcurrentProgram_ServiceModel Oracle E-Business 어댑터 샘플도 제공됩니다.

WCF 클라이언트 클래스

Oracle E-Business 어댑터에서 동시 프로그램을 호출하기 위해 생성된 WCF 클라이언트의 이름은 다음 표에 나와 있습니다.

아티팩트 WCF 클라이언트 이름
동시 프로그램 ConcurrentPrograms_[APP_NAME]클라이언트

[APP_NAME] = Oracle E-Business Suite 애플리케이션의 실제 이름입니다. 예를 들어 FND입니다.

동시 프로그램 호출을 위한 메서드 서명

다음 표에서는 동시 프로그램의 메서드 서명을 보여 줍니다.

작업 메서드 시그니처
동시 프로그램 public <return type><Concurrent_program_name>(param 1, param 2, ...)

예를 들어 다음 코드는 MS_SAMPLE_COPY_EMP_DATAGet_Status 동시 프로그램에 대해 생성된 WCF 클라이언트 클래스에 대한 메서드 서명을 보여 줍니다.

public partial class ConcurrentPrograms_FNDClient : System.ServiceModel.ClientBase<ConcurrentPrograms_FND>, ConcurrentPrograms_FND {      
  
    public string MS_SAMPLE_COPY_EMP_DATA(schemas.microsoft.com.OracleEBS._2008._05.Options.SetOptions SetOptions,  
      schemas.microsoft.com.OracleEBS._2008._05.Options.SetPrintOptions SetPrintOptions,  
      schemas.microsoft.com.OracleEBS._2008._05.Options.SetRepeatOptions SetRepeatOptions,  
      string Description, string StartTime);  
  
    public bool GetStatusForConcurrentProgram(string RequestId, out string Phase, out string Status,  
      out string DevPhase, out string DevStatus, out string Message);  
}  

이 코드 조각에서 ConcurrentPrograms_FNDClient 어댑터 서비스 참조 플러그 인 추가에서 생성된 OracleEBSBindingClient.cs의 WCF 클래스 이름입니다. MS_SAMPLE_COPY_EMP_DATA 동시 프로그램을 호출하는 메서드의 이름입니다. GetStatusForConcurrentProgram은 동시 프로그램을 호출하여 첫 번째 동시 프로그램의 상태 가져오는 메서드의 이름입니다.

참고

GetStatusForConcurrentProgramGet_Status 동시 프로그램의 실제 이름입니다.

동시 프로그램을 호출하는 WCF 클라이언트 만들기

WCF 클라이언트를 사용하여 Oracle E-Business Suite에서 작업을 수행하는 데 필요한 일반 작업 집합에는 Oracle E-Business Suite 어댑터를 사용한 WCF 서비스 모델 개요에 설명된 작업 집합이 포함됩니다. 이 섹션에서는 MS_SAMPLE_COPY_EMP_DATA 호출하고 동시 프로그램을 Get_Status WCF 클라이언트를 만드는 방법을 설명 합니다.

WCF 클라이언트를 만들려면

  1. Visual Studio에서 Visual C# 프로젝트를 만듭니다. 이 항목에서는 콘솔 애플리케이션을 만듭니다.

  2. MS_SAMPLE_COPY_EMP_DATA 및 Get_Status 동시 프로그램에 대한 WCF 클라이언트 클래스를 생성합니다. WCF 클라이언트 클래스를 생성하는 방법에 대한 자세한 내용은 Oracle E-Business Suite 솔루션 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성을 참조하세요.

    중요

    WCF 클라이언트 클래스를 생성하기 전에 EnableBizTalkCompatibilityMode 바인딩 속성을 false로 설정해야 합니다.

  3. 솔루션 탐색기 및 Microsoft.ServiceModel.Channels에 대한 참조를 Microsoft.Adapters.OracleEBS 추가합니다.

  4. Program.cs 파일을 열고 다음 네임스페이스를 추가합니다.

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. Program.cs 파일을 열고 아래 코드 조각에 설명된 대로 클라이언트를 만듭니다.

    OracleEBSBinding binding = new OracleEBSBinding();  
    EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");  
    ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);  
    

    이 코드 조각 ConcurrentPrograms_FNDClient 에서 는 OracleEBSBindingClient.cs에 정의된 WCF 클라이언트입니다. 이 파일은 어댑터 서비스 참조 추가 플러그 인에서 생성됩니다.

    참고

    이 코드 조각에서는 애플리케이션 코드에서 바인딩 및 엔드포인트 주소를 명시적으로 지정합니다. 어댑터 서비스 참조 플러그 인 추가에서 생성된 애플리케이션 구성 파일 app.config 이러한 값을 사용할 수도 있습니다. 클라이언트 바인딩을 지정하는 다양한 방법에 대한 자세한 내용은 Oracle E-Business Suite에 대한 클라이언트 바인딩 구성을 참조하세요.

  6. 클라이언트에 대한 자격 증명을 설정합니다.

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. Oracle E-Business Suite 애플리케이션에서 동시 프로그램을 호출하기 때문에 애플리케이션 컨텍스트를 설정해야 합니다. 이 예제에서는 애플리케이션 컨텍스트를 설정하기 위해 OracleUserName, OraclePasswordOracleEBSResponsibilityName 바인딩 속성을 지정합니다. 애플리케이션 컨텍스트에 대한 자세한 내용은 애플리케이션 컨텍스트 설정을 참조하세요.

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. 아래 코드 조각에 설명된 대로 클라이언트를 엽니다.

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. MS_SAMPLE_COPY_EMP_DATA 호출하고 동시 프로그램을 Get_Status.

    string RequestID;  
    bool Result;  
    string Phase;  
    string Status;  
    string DevPhase;  
    string DevStatus;  
    string Message;  
    
    try  
    {  
        Console.WriteLine("Invoking the MS_SAMPLE_COPY_EMP_DATA concurrent program");  
        RequestID = client.MS_SAMPLE_COPY_EMP_DATA(null, null, null, null, null);  
        Console.WriteLine("The request ID generated for the concurrent program is : " + RequestID);  
        Console.WriteLine("********************************************************");  
        Console.WriteLine("\nWaiting for 60 seconds for the concurrent program to be complete");  
        System.Threading.Thread.Sleep(60000);  
        Console.WriteLine("\nInvoking the Get_Status concurrent program");  
        Result = client.GetStatusForConcurrentProgram(RequestID, out Phase, out Status, out DevPhase, out DevStatus, out Message);  
        Console.WriteLine("\nResult is  : " + Result);  
        Console.WriteLine("Phase is     : " + Phase);  
        Console.WriteLine("Status is    : " + Status);  
        Console.WriteLine("DevPhase is  : " + DevPhase);  
        Console.WriteLine("DevStatus is : " + DevStatus);  
        Console.WriteLine("Message is   : " + Message);  
        Console.WriteLine("********************************************************");  
        Console.WriteLine("\nHit <RETURN> to end");  
        Console.ReadLine();  
    }  
    catch (Exception ex)  
    {  
        Console.WriteLine("Exception : " + ex);  
        throw;                 
    }  
    
  10. 아래 코드 조각에 설명된 대로 클라이언트를 닫습니다.

    client.Close();  
    
  11. 프로젝트를 빌드한 다음 실행합니다. 애플리케이션은 MS_SAMPLE_COPY_EMP_DATA 호출하고 요청 ID를 반환합니다. 그런 다음 ID가 Get_Status 동시 프로그램에 전달되며, 마지막으로 MS_SAMPLE_COPY_EMP_DATA 열 프로그램의 상태 제공합니다.

참고 항목

WCF 서비스 모델을 사용하여 Oracle E-Business Suite 애플리케이션 개발