Organization オブジェクトはおそらく、最も複雑なレジストリオブジェクトです。このオブジェクトには通常、すべてのオブジェクトに共通する属性のほかに、次の属性が含まれます。
1 つまたは複数の PostalAddress オブジェクト。
1 つまたは複数の TelephoneNumber オブジェクト。
1 つの PrimaryContact オブジェクト。これは User オブジェクトです。User オブジェクトには通常、1 つの PersonName オブジェクトが含まれるほか、TelephoneNumber、EmailAddress、および PostalAddress オブジェクトのコレクションも含まれます。
1 つまたは複数の Service オブジェクトとそれらに関連付けられた ServiceBinding オブジェクト。
組織は 1 つまたは複数の子組織を持つこともでき、それらの子組織もまた子を持つことができます。こうして、組織の階層が形成されます。
次のコードでは、組織を 1 つ作成し、その名前、説明、住所、および電話番号を指定しています。
// Create organization name and description
Organization org =
blcm.createOrganization("The ebXML Coffee Break");
InternationalString is =
blcm.createInternationalString("Purveyor of " +
"the finest coffees. Established 1905");
org.setDescription(is);
// create postal address for organization
String streetNumber = "99";
String street = "Imaginary Ave. Suite 33";
String city = "Imaginary City";
String state = "NY");
String country = "USA");
String postalCode = "00000";
String type = "Type US";
PostalAddress postAddr =
blcm.createPostalAddress(streetNumber, street, city, state,
country, postalCode, type);
org.setPostalAddress(postAddr);
// create telephone number for organization
TelephoneNumber tNum = blcm.createTelephoneNumber();
tNum.setCountryCode("1");
tNum.setAreaCode("100");
tNum.setNumber("100-1000");
tNum.setType(CanonicalConstants.CANONICAL_PHONE_TYPE_CODE_OfficePhone);
Collection tNums = new ArrayList();
tNums.add(tNum);
org.setTelephoneNumbers(tNums);
電話番号のタイプは、PhoneType 分類スキーマに含まれる Concept の値です。"OfficePhone"、"MobilePhone" 、"HomePhone"、"FAX"、または "Beeper" のいずれかです。電話タイプでは、CanonicalConstants コードを使用します。
組織の階層を作成するには、Organization.addChildOrganization メソッドを使ってある組織を別の組織に追加するか、Organization.addChildOrganizations メソッドを使って組織の Collection を別の組織に追加します。
ほとんどの組織は、サービスを提供するために自らをレジストリに発行します。このため、JAXR には、サービスを組織に追加する機能が用意されています。通常は、最初に WSDL ファイルを発行してサービスを作成します (「WSDL ファイルの発行によるサービスの作成」を参照)。次に、サービスを組織に追加します。
Service オブジェクトには Organization オブジェクトと同じく、名前、説明、およびサービス登録時にレジストリによって生成される一意のキーがあります。Service オブジェクトは分類を持つこともできます。
サービスには通常、すべてのオブジェクトに共通する属性のほかに、サービスへのアクセス方法に関する情報を提供する「サービスバインディング」があります。通常、ServiceBinding オブジェクトには、説明およびアクセス URI があります。
次のコードは、以前に発行されたサービスを検索し、そのサービスを組織に追加する方法を示したものです。この例では、「WSDL ファイルの発行によるサービスの作成: 例」で発行されたサービスを使用します。
String serviceId = "urn:Foo:service:MyCoffeeService";
Service service = (Service) bqm.getRegistryObject(serviceId);
System.out.println("Service URN is " + serviceId);
Collection services = new ArrayList();
services.add(service);
org.addServices(services);
主担当者を指定せずに組織を作成する場合、デフォルトの主担当者は、その組織を作成した User オブジェクト、つまり、Service Registry への接続確立時に設定した資格の所有者であるユーザーになります。もちろん、それとは異なるユーザーを主担当者として指定することもできます。
User もまた、複雑なレジストリオブジェクトです。これには通常、すべてのオブジェクトに共通する属性のほかに、次の属性が含まれます。
1 つの PersonName オブジェクト
1 つまたは複数の PostalAddress オブジェクト
1 つまたは複数の TelephoneNumber オブジェクト
1 つまたは複数の EmailAddress オブジェクト
ユーザーのホームページを表す 1 つまたは複数の URL オブジェクト
通常、ユーザーは Web コンソールを使用した登録により自分自身を作成します。JAXR を使用してユーザーを作成することは、めったにありません。このサンプルプログラムでは、User オブジェクトについて説明し、さまざまな主担当者を持つ組織を生成するために、ユーザーを作成しています。
次のコードでは、User を作成し、その User を組織の主担当者として設定しています。この User には、電話番号と電子メールアドレスは設定されていますが、住所は設定されていません。
// Create primary contact, set name
User primaryContact = blcm.createUser();
String userId = primaryContact.getKey().getId();
System.out.println("User URN is " + userId);
PersonName pName =
blcm.createPersonName("Jane", "M.", "Doe");
primaryContact.setPersonName(pName);
// Set primary contact phone number
TelephoneNumber pctNum = blcm.createTelephoneNumber();
pctNum.setCountryCode("1");
pctNum.setAreaCode("100");
pctNum.setNumber("100-1001");
pctNum.setType(CanonicalConstants.CANONICAL_PHONE_TYPE_CODE_MobilePhone);
Collection phoneNums = new ArrayList();
phoneNums.add(pctNum);
primaryContact.setTelephoneNumbers(phoneNums);
// Set primary contact email address
EmailAddress emailAddress =
blcm.createEmailAddress("jane.doe@TheCoffeeBreak.com");
emailAddress.setType(CanonicalConstants.CANONICAL_EMAIL_TYPE_CODE_OfficeEmail));
Collection emailAddresses = new ArrayList();
emailAddresses.add(emailAddress);
primaryContact.setEmailAddresses(emailAddresses);
URL pcUrl = new URL((bundle.getString("person.url"));
primaryContact.setUrl(pcUrl);
// Set primary contact for organization
org.setPrimaryContact(primaryContact);
主担当者の電話番号のタイプは、PhoneType 分類スキーマに含まれる Concept の値です。値は "OfficePhone"、"MobilePhone"、"HomePhone"、 "FAX"、または "Beeper" のいずれかです。主担当者の電子メールアドレスのタイプは、EmailType 分類スキーマに含まれる Concept の値です。値は "OfficeEmail" または "HomeEmail" です。これらのタイプでは、CanonicalConstants コードを使用します。
組織の作成方法のサンプルについては、 INSTALL/registry-samples/organizations/src ディレクトリにある JAXRPublishOrg.java と JAXRPublishOrgNoPC.java を参照してください。
JAXRPublishOrg のサンプルでは、組織およびその主担当者を作成します。「WSDL ファイルの発行によるサービスの作成: 例」で発行されたサービスを追加します。サンプルでは組織、ユーザー、およびサービスに対する一意の識別子が表示され、ユーザーはあとでオブジェクトを削除する際にそれらの識別子を使うことができます。このサンプルは、組織の主担当者として架空の User を作成します。この組織の名前は、The ebXML Coffee Break です。
もう 1 つのサンプル JAXRPublishOrgNoPC.java は、組織の主担当者を設定しません。この場合、主担当者はデフォルトで、プログラム実行時に認証された User になります。この組織の名前は、DefaultPCOrg です。
INSTALL/registry-samples/organizations ディレクトリに移動します。
次のコマンドを入力します。
Ant-base/ant pub-org Ant-base/ant pub-org-nopc |
組織階層を発行および取得する方法のサンプルについてはINSTALL/registry-samples/organizations/src ディレクトリにある JAXRPublishOrgFamily.java および JAXRSearchOrgFamily.java を参照してください。