WCF 서비스 모델을 사용하여 인터페이스 테이블 및 뷰에서 작업 삽입, 업데이트, 삭제 또는 선택
Oracle E-Business 어댑터는 인터페이스 테이블에서 기본 삽입, 선택, 업데이트 및 삭제 작업 집합을 검색합니다. 이러한 작업을 사용하면 대상 인터페이스 테이블의 WHERE 절로 한정된 간단한 Insert, Select, Update 및 Delete 문을 수행할 수 있습니다. 이 항목에서는 WCF 서비스 모델을 사용하여 이러한 작업을 수행하는 방법에 대한 지침을 제공합니다.
참고
Oracle E-Business 어댑터는 인터페이스 뷰에서 작업 선택만 지원합니다.
어댑터가 이러한 작업을 지원하는 방법에 대한 자세한 내용은 인터페이스 테이블 및 인터페이스 뷰에 대한 작업을 참조하세요.
이 항목에 사용된 예제 정보
이 항목의 예제에서는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 작업을 수행합니다. 테이블은 샘플과 함께 제공되는 스크립트를 실행하여 만들어집니다. 샘플에 대한 자세한 내용은 Oracle EBS 어댑터에 대한 샘플을 참조하세요. 이 항목을 기반으로 하는 샘플 Interface_Table_Ops Oracle E-Business 어댑터 샘플도 제공됩니다.
WCF 클라이언트 클래스
Oracle E-Business 어댑터가 검색하는 기본 작업에 대해 생성된 WCF 클라이언트의 이름은 다음 표에 나열된 테이블 또는 뷰의 이름을 기반으로 합니다.
아티팩트 | WCF 클라이언트 이름 |
---|---|
인터페이스 테이블 | InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client |
인터페이스 뷰 | InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client |
[APP_NAME] = Oracle E-Business Suite 애플리케이션의 실제 이름입니다. 예를 들어 FND입니다.
[SCHEMA] = 아티팩트 컬렉션; 예를 들어 APPS입니다.
[TABLE_NAME] = 테이블의 이름입니다. 예를 들어 MS_SAMPLE_EMPLOYEE.
[VIEW_NAME] = 보기의 이름입니다. 예를 들어 MS_SAMPLE_EMPLOYEE_View.
테이블에서 작업을 호출하기 위한 메서드 서명
다음 표에서는 테이블의 기본 작업에 대한 메서드 서명을 보여 줍니다. 뷰 네임스페이스와 이름이 테이블의 네임스페이스를 대체한다는 점을 제외하고 보기의 서명은 동일합니다.
작업 | 메서드 시그니처 |
---|---|
삽입 | string Insert(InsertRecord[] RECORDSET); |
선택 | SelectRecord[] Select(string COLUMN_NAMES, string FILTER); |
업데이트 | string Update(UpdateRecord RECORDSET, string FILTER); |
삭제 | string Delete(string FILTER); |
예를 들어 다음 코드는 기본 APPS 스키마 아래의 MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 삭제, 삽입, 선택 및 업데이트 작업에 대해 생성된 WCF 클라이언트 클래스에 대한 메서드 서명을 보여 줍니다.
public partial class InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient : System.ServiceModel.ClientBase<InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE>, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE {
public SelectRecord[] Select(string COLUMN_NAMES, string FILTER);
public string Insert(InsertRecord[] RECORDSET);
public string Update(UpdateRecord RECORDSET, string FILTER);
public string Delete(string FILTER);
}
이 코드 조각에서 InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient 어댑터 서비스 참조 플러그 인 추가에서 생성된 OracleEBSBindingClient.cs의 WCF 클래스 이름입니다.
테이블 작업에 대한 매개 변수
이 섹션에서는 각 테이블 작업에 필요한 매개 변수를 제공합니다.
작업 선택
COLUMN_NAMES | FILTER |
---|---|
대상에 있는 열 이름의 쉼표로 구분된 목록입니다. 예를 들어 "EMP_NO, DESIGNATION"입니다. 열 목록은 결과 집합에서 반환되어야 하는 대상의 열을 지정합니다. 열 목록에 지정되지 않은 열은 반환된 레코드 집합의 .NET 기본값으로 설정됩니다. nillable 열의 경우 이 값은 null입니다. | 쿼리의 대상 행을 지정하는 WHERE 절의 내용입니다. 예를 들어 "지정 = '관리자'"입니다. 이 매개 변수를 null 로 설정하여 대상의 모든 행을 반환할 수 있습니다. |
Select 작업의 반환 값은 지정된 열과 행을 포함하는 강력한 형식의 결과 집합입니다.
삽입 작업
삽입 작업 유형 | 레코드 집합 |
---|---|
여러 레코드 | 테이블에 삽입해야 하는 INSERTRECORDS 컬렉션입니다. |
삽입 작업의 반환 값은 삽입된 행 수입니다.
업데이트 작업
레코드 집합 | FILTER |
---|---|
테이블에서 업데이트해야 하는 레코드 컬렉션입니다. | 쿼리의 대상 행을 지정하는 WHERE 절의 내용입니다. 예를 들어 "지정 = '관리자'"입니다. 이 매개 변수를 null 로 설정하여 대상의 모든 행을 반환할 수 있습니다. |
업데이트 작업의 반환 값은 업데이트된 행 수입니다.
삭제 작업
삭제 작업은 삭제할 행을 지정하는 WHERE 절을 입력으로 사용합니다. 삭제 작업의 반환 값은 삭제된 행의 수입니다.
인터페이스 테이블 및 인터페이스 뷰에서 작업을 호출하는 WCF 클라이언트 만들기
WCF 클라이언트를 사용하여 Oracle E-Business Suite에서 작업을 수행하는 데 필요한 제네릭 작업 집합에는 Oracle E-Business Suite 어댑터를 사용한 WCF 채널 모델 개요에 설명된 작업 집합이 포함됩니다. 이 섹션에서는 인터페이스 테이블에서 기본 삽입, 선택, 업데이트, 삭제 작업을 호출하는 WCF 클라이언트를 만드는 방법을 설명합니다.
테이블에서 작업을 수행하는 WCF 클라이언트를 만들려면
Visual Studio에서 Visual C# 프로젝트를 만듭니다. 이 항목의 경우 콘솔 애플리케이션을 만듭니다.
MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 삽입, 선택, 업데이트 및 삭제 작업에 대한 WCF 클라이언트 클래스를 생성합니다. WCF 클라이언트 클래스를 생성하는 방법에 대한 자세한 내용은 Oracle E-Business Suite 솔루션 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성을 참조하세요.
중요
WCF 클라이언트 클래스를 생성하기 전에 EnableBizTalkCompatibilityMode 바인딩 속성을 false로 설정해야 합니다.
솔루션 탐색기 및
Microsoft.ServiceModel.Channels
에 대한 참조를 추가합니다Microsoft.Adapters.OracleEBS
.Program.cs 파일을 열고 다음 네임스페이스를 추가합니다.
Microsoft.Adapters.OracleEBS
System.ServiceModel
Program.cs 파일을 열고 아래 코드 조각에 설명된 대로 클라이언트를 만듭니다.
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name"); InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient client = new InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient(binding, address);
이 코드 조각
InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient
에서 은 OracleEBSBindingClient.cs에 정의된 WCF 클라이언트입니다. 이 파일은 어댑터 서비스 참조 추가 플러그 인에 의해 생성됩니다.참고
이 코드 조각에서는 애플리케이션 코드에서 바인딩 및 엔드포인트 주소를 명시적으로 지정합니다. 어댑터 서비스 참조 플러그 인 추가에서 생성된 애플리케이션 구성 파일 app.config 이러한 값을 사용할 수 있습니다. 클라이언트 바인딩을 지정하는 다양한 방법에 대한 자세한 내용은 Oracle E-Business Suite에 대한 클라이언트 바인딩 구성을 참조하세요.
클라이언트에 대한 자격 증명을 설정합니다.
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
인터페이스 테이블에서 작업을 수행하기 때문에 애플리케이션 컨텍스트를 설정해야 합니다. 이 예제에서는 애플리케이션 컨텍스트를 설정하기 위해 OracleUserName, OraclePassword 및 OracleEBSResponsibilityName 바인딩 속성을 지정합니다. 애플리케이션 컨텍스트에 대한 자세한 내용은 애플리케이션 컨텍스트 설정을 참조하세요.
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";
아래 코드 조각에 설명된 대로 클라이언트를 엽니다.
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
MS_SAMPLE_EMPLOYEE 테이블에서 삽입 작업을 호출합니다.
Console.WriteLine("The application will insert a record in the MS_SAMPLE_EMPLOYEE interface table"); // The date values cannot contain time zone information. Hence, you must use // DateTimeKind.Unspecified to not include the time zone information. DateTime date = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified); string result; InsertRecord[] recordSet = new InsertRecord[1]; EMP_NO__COMPLEX_TYPE emp_no = new EMP_NO__COMPLEX_TYPE(); emp_no.Value = "10007"; NAME__COMPLEX_TYPE name = new NAME__COMPLEX_TYPE(); name.Value = "John Smith"; DESIGNATION__COMPLEX_TYPE desig = new DESIGNATION__COMPLEX_TYPE(); desig.Value = "Manager"; SALARY__COMPLEX_TYPE salary = new SALARY__COMPLEX_TYPE(); salary.Value = "500000"; JOIN_DATE__COMPLEX_TYPE doj = new JOIN_DATE__COMPLEX_TYPE(); doj.Value = date; recordSet[0] = new InsertRecord(); recordSet[0].EMP_NO = emp_no; recordSet[0].NAME = name; recordSet[0].DESIGNATION = desig; recordSet[0].SALARY = salary; recordSet[0].JOIN_DATE = doj; try { result = client.Insert(recordSet); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; } Console.WriteLine("Number of records inserted= " + result); Console.WriteLine("Press any key to continue..."); Console.ReadLine();
위의 코드 조각을 바꿔 선택, 업데이트 또는 삭제 작업도 수행할 수 있습니다. 코드 조각을 추가하여 단일 애플리케이션에서 모든 작업을 수행할 수도 있습니다. 이러한 작업을 수행하는 방법에 대한 코드 조각은 각각 작업 선택, 작업 업데이트 및 삭제 작업을 참조하세요.
아래 코드 조각에 설명된 대로 클라이언트를 닫습니다.
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
프로젝트를 빌드한 다음 실행합니다. 애플리케이션은 MS_SAMPLE_EMPLOYEE 테이블에 레코드를 삽입합니다.
작업 선택
다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 Select 작업을 보여 줍니다. 선택 작업은 테이블에 삽입된 마지막 레코드를 선택합니다. 반환된 레코드는 콘솔에 기록됩니다.
Console.WriteLine("The application will now select the last inserted record");
SelectRecord[] selectRecords;
try
{
selectRecords = client.Select("*", "WHERE EMP_NO LIKE 10007");
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
Console.WriteLine("The details of the newly added employee are:");
Console.WriteLine("********************************************");
for (int i = 0; i < selectRecords.Length; i++)
{
Console.WriteLine("Employee ID : " + selectRecords[i].EMP_NO);
Console.WriteLine("Employee Name : " + selectRecords[i].NAME);
Console.WriteLine("Employee Desigation : " + selectRecords[i].DESIGNATION);
Console.WriteLine("Employee Salary : " + selectRecords[i].SALARY);
Console.WriteLine();
}
Console.WriteLine("********************************************");
Console.WriteLine("Press any key to continue ...");
Console.ReadLine();
업데이트 작업
다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 업데이트 작업을 보여 줍니다.
Console.WriteLine("The application will now update the employee name in the newly inserted record");
string recordsUpdated;
UpdateRecord updateRecordSet = new UpdateRecord();
updateRecordSet.NAME = "Tom Smith";
updateRecordSet.DESIGNATION = "Accountant";
try
{
recordsUpdated = client.Update(updateRecordSet, "WHERE EMP_NO LIKE 10007");
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
Console.WriteLine("No of records updated: " + recordsUpdated);
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
삭제 작업
다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 삭제 작업을 보여 줍니다.
Console.WriteLine("The sample will now delete the record that it first inserted");
string deletedRecords;
try
{
deletedRecords = client.Delete("WHERE EMP_NO LIKE 10007");
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
throw;
}
Console.WriteLine("No of records deleted: " + deletedRecords);
Console.WriteLine("Press any key to exit...");
Console.ReadLine();