Mở rộng InfoSphere Data Architect của IBM để đáp ứng các yêu cầu mô hình hóa và tích hợp dữ liệu cụ thể của bạn, Phần 1: Sửa đổi các mô hình của IDA và tùy chỉnh các đặc tính

InfoSphere Data Architect của IBM (IDA) là một môi trường phát triển toàn diện để mô hình hóa và tích hợp dữ liệu. IDA cho phép người dùng khám phá, mô hình hóa, hiển thị trực quan và liên kết các tài sản dữ liệu đa dạng và phân tán. IDA là một quy trình quản lý dữ liệu theo đề xuất của IBM và được tích hợp chặt chẽ với các sản phẩm Optim®, Rational và InfoSphere được xây dựng bằng Eclipse. IDA hỗ trợ mô hình hóa dữ liệu logic, vật lý, bảng chú giải, lưu trữ, tên miền và tích hợp. Khi càng có nhiều khách hàng doanh nghiệp sử dụng IDA, thì càng có thêm nhu cầu muốn mở rộng IDA để đáp ứng các yêu cầu mô hình hóa và tích hợp dữ liệu duy nhất của họ.

pdf15 trang | Chia sẻ: lylyngoc | Lượt xem: 1336 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Mở rộng InfoSphere Data Architect của IBM để đáp ứng các yêu cầu mô hình hóa và tích hợp dữ liệu cụ thể của bạn, Phần 1: Sửa đổi các mô hình của IDA và tùy chỉnh các đặc tính, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Mở rộng InfoSphere Data Architect của IBM để đáp ứng các yêu cầu mô hình hóa và tích hợp dữ liệu cụ thể của bạn, Phần 1: Sửa đổi các mô hình của IDA và tùy chỉnh các đặc tính InfoSphere Data Architect của IBM (IDA) là một môi trường phát triển toàn diện để mô hình hóa và tích hợp dữ liệu. IDA cho phép người dùng khám phá, mô hình hóa, hiển thị trực quan và liên kết các tài sản dữ liệu đa dạng và phân tán. IDA là một quy trình quản lý dữ liệu theo đề xuất của IBM và được tích hợp chặt chẽ với các sản phẩm Optim®, Rational và InfoSphere được xây dựng bằng Eclipse. IDA hỗ trợ mô hình hóa dữ liệu logic, vật lý, bảng chú giải, lưu trữ, tên miền và tích hợp. Khi càng có nhiều khách hàng doanh nghiệp sử dụng IDA, thì càng có thêm nhu cầu muốn mở rộng IDA để đáp ứng các yêu cầu mô hình hóa và tích hợp dữ liệu duy nhất của họ. Như đã đề cập trước đó, IDA dựa trên Eclipse và do đó có thể mở rộng rất nhiều bằng thiết kế của nó. Trong loạt bài này, hãy tìm hiểu thêm về các điểm mở rộng, các API và các nhà máy sẵn có với IDA mà bạn có thể sử dụng để mở rộng IDA. Xem cách mở rộng IDA để:  Duyệt qua và sửa đổi các mô hình IDA bằng lập trình (Phần 1).  Thêm các đặc tính mới và hiển thị chúng trong khung nhìn Properties (Phần 1).  Tạo các báo cáo mô hình tùy chỉnh (Phần 2)  Thêm các quy tắc xác nhận hợp lệ mô hình (Phần 2) Bài này giả định bạn có kinh nghiệm phát triển trình cắm thêm Eclipse và có kiến thức cơ bản về các dự án EMF và BIRT trên Eclipse. Mã mẫu được cung cấp trong bài này được thử nghiệm trên phiên bản 7.5.1 và 7.5.2 của IDA và trên phiên bản 3.4.1 và 3.4.2 của Eclipse. Duyệt qua và sửa đổi mô hình dữ liệu logic và mô hình dữ liệu vật lý của IDA bằng lập trình Thay đổi tên sản phẩm Ngày 16 tháng 12 năm 2008, IBM đã công bố rằng Phiên bản 7.5.1, Rational Data Architect (Kiến trúc sư dữ liệu Rational) được đổi tên thành InfoSphere Data Architect nhằm đề cao vai trò của nó trong các công cụ của Nền tảng InfoSphere (InfoSphere Foundation). Nếu bạn cần mở rộng IDA, có khả năng là bạn sẽ cần hiểu cấu trúc mô hình của nó để duyệt qua và sửa đổi các đối tượng mô hình của nó. Phần này cho bạn thấy cách làm điều này bằng cách sử dụng một mô hình vật lý và các đối tượng của nó. Một cách tiếp cận tương tự cũng có thể được sử dụng cho các mô hình logic. Mô hình SQL như là các siêu mô hình của các mô hình IDA Mô hình SQL, là một phần của Dự án cơ sở mô hình của Eclipse (Eclipse Model Base Project), cung cấp nền tảng cho Dự án các công cụ dữ liệu (DTP - Data Tools Platform). Được xây dựng trên Khung mô hình hóa của Eclipse (EMF - Eclipse Modeling Framework), mô hình SQL sử dụng các hướng dẫn thực hành công nghiệp phần mềm tốt nhất ví dụ như phát triển theo hướng mô hình với UML, tuân thủ các tiêu chuẩn mới nhất của SQL và hỗ trợ tiêu chuẩn JDBC và các tiêu chuẩn kết nối khác. (Xem phần Tài nguyên để biết thêm thông tin về DTP và EMF). IDA sử dụng và mở rộng mô hình SQL như là siêu mô hình cho các mô hình dữ liệu vật lý của nó. Duyệt qua một mô hình bằng lập trình Bắt đầu bằng cách tạo một mô hình dữ liệu vật lý với một cơ sở dữ liệu SAMPLE, tạo một lược đồ SAMP và tạo một số bảng và cột. Sau đó, hãy tìm hiểu cách viết mã Java™ để duyệt qua cơ sở dữ liệu SAMPLE và liệt kê tất cả các đối tượng lược đồ, bảng và cột của nó. Làm theo các bước sau để tạo một mô hình dữ liệu SAMPLE: 1. Khởi động IDA và mở Data Perspective (Phối cảnh dữ liệu) nếu nó vẫn chưa mở. 2. Tạo một dự án thiết kế dữ liệu bằng cách sử dụng File > New > Data Design Project (Dự án thiết kế dữ liệu) và gõ vào tên Dự án là Data Design (Thiết kế dữ liệu). 3. Nhấn chuột phải vào Derby Sample Connection (Kết nối mẫu Derby) trong Data Source Explorer (Trình thám hiểm Nguồn dữ liệu) và chọn Connect (Kết nối). 4. Gõ vào bất kỳ tên người dùng nào và nhấn OK trong hộp thoại kết nối. 5. Mở rộng Derby Sample Connection và lược đồ SAMP. 6. Chọn nhiều bảng trong lược đồ SAMP như trong Hình 1. 7. Kéo các bảng từ Data Source Explorer và thả chúng vào trong dự án Data Design. Bạn sẽ thấy mô hình vật lý SAMPLE được tạo ra trong Data Project Explorer. Hình 1. Mô hình vật lý SAMPLE Bây giờ bạn đã tạo ra mô hình vật lý SAMPLE. Vì Mô hình SQL của DTP là cơ sở của các siêu mô hình của IDA, nên điều quan trọng là xem xét mô hình SQL để hiểu được cấu trúc của các mô hình vật lý IDA. Hình 2 cho thấy cấu trúc của mô hình SQL ở mức lược đồ. Hình 2. Sơ đồ của lược đồ mô hình SQL Từ hình này, bạn có thể thấy rằng các cơ sở dữ liệu và các lược đồ có nguồn gốc từ đối tượng SQL và do đó chúng đều có các đặc tính, ví dụ như tên, mô tả và nhãn. Trên thực tế hầu như tất cả các đối tượng được mô tả trong mô hình SQL đều được bắt nguồn từ đối tượng SQL và chúng tự động có các đặc tính tên, mô tả và nhãn. Một đối tượng cơ sở dữ liệu có đặc tính riêng của mình, ví dụ như nhà cung cấp và phiên bản, là các chuỗi ký tự. Một đối tượng cơ sở dữ liệu có thể có từ không đến nhiều (0 .. n) lược đồ và một lược đồ có thể có không đến nhiều (0 .. n) bảng, nhiều chỉ mục, nhiều kiểu người dùng được định nghĩa, nhiều thường trình và v.v.. Bạn có thể lấy tất cả các bảng và các chỉ mục cho một lược đồ bằng cách gọi schema.getTables(), schema.getIndices() và getUserDefinedTypes(), tương ứng. Mã mẫu để đọc từ một lược đồ và lấy các bảng của nó được hiển thị trong Liệt kê 1. Liệt kê 1. Mã mẫu để duyệt qua một cơ sở dữ liệu và lược đồ và để lấy các đặc tính của chúng private void TraverseDatabase(Database db) { System.out.println("Database: " + db.getName()); System.out.println("-- Vendor: " + db.getVendor()); System.out.println("-- Version: "+ db.getVersion()); // get schemas Iterator schemaItor = db.getSchemas().iterator(); while(schemaItor.hasNext()) { Schema aSchema = (Schema)schemaItor.next(); TraverseSchema(aSchema); } } private void TraverseSchema(Schema schema) { System.out.println("Schema: " + schema.getName()); // get tables Iterator tablesItor = schema.getTables().iterator(); while(tablesItor.hasNext()) { Table aTable = (Table)tablesItor.next(); TraverseTable(aTable); } } Hình 3 trình bày các đối tượng của bảng SQL Model (Mô hình SQL), ở đây Table (Bảng) là một lớp trừu tượng và có thể có một bảng với nhiều cột. Một khung nhìn là một DerivedTable có các đặc tính bổ sung, ví dụ như biểu thức truy vấn và kiểu kiểm tra. Một bảng bền vững hoặc bảng tạm thời có nguồn gốc từ BaseTable. Hình 3. Sơ đồ bảng của mô hình SQL Cấu trúc cột của SQL Model được thể hiện trong Hình 4. Một cột có nguồn gốc từ TypedElement và nó có các đặc tính, ví dụ như nullable và defaultValue. Theo tùy chọn một cột có thể có một identitySpecifier hoặc generateExpression, nhưng không có cả hai. Hình 4. Sơ đồ cột của mô hình SQL Liệt kê 2 hiển thị mã mẫu để lấy các cột từ một bảng và đọc các đặc tính của chúng. Liệt kê 2. Mã mẫu để lấy các cột từ một bảng và đọc các đặc tính của chúng private void TraverseTable(Table table) { System.out.println("Table: " + table.getName()); // get columns Iterator columnsItor = table.getColumns().iterator(); while(columnsItor.hasNext()) { Column aColumn = (Column)columnsItor.next(); TraverseColumn(aColumn); } } private void TraverseColumn(Column col) { System.out.println(" Column: " + col.getName()); // get column properties DataType dataType = col.getDataType(); System.out.println(" -- Data type: " + dataType.getName()); boolean isNullable = col.isNullable(); System.out.println(" -- Is nullable: " + Boolean.toString(isNullable)); String defaultValue = col.getDefaultValue(); System.out.println(" -- Default value: " + defaultValue); } Sửa đổi các đối tượng mô hình bằng lập trình Bây giờ bạn biết cách duyệt qua mô hình, bạn có thể viết mã để sửa đổi mô hình. Ví dụ, để thêm một cột SSN cho bảng EMPLOYEE, hãy thay phương thức TraverseTable() và gọi phương thức AddSSNColumn(), như trong Liệt kê 3. Liệt kê 3. Mã mẫu thêm một cột số SSN vào bảng private void AddSSNColumn(Table table) { // get database from table Database db = table.getSchema().getDatabase(); // get the database specific model element factory DatabaseDefinition dbDef = DataToolsPlugin.getDefault() .getDatabaseDefinitionRegistry().getDefinition( db.getVendor(), db.getVersion()); DataModelElementFactory factory = dbDef.getDataModelElementFactory(); Column col = (Column) factory.create(SQLTablesPackage.eINSTANCE .getColumn()); col.setName("SSN"); CharacterStringDataType cType = (CharacterStringDataType) dbDef .getPredefinedDataType("CHARACTER"); cType.setLength(9); col.setDataType(cType); EStructuralFeature feature = table.eClass().getEStructuralFeature( SQLTablesPackage.TABLE__COLUMNS); // using IDA CommandFactory to create a add command ICommand cmd = CommandFactory.INSTANCE.createAddCommand( "Add SSN column", table, feature, col); // execute the command using IDA command manager DataToolsPlugin.getDefault().getCommandManager().execute(cmd); } Trong phương thức AddSSColumn, mã lấy định nghĩa cơ sở dữ liệu đã đăng ký bằng cách chuyển các chuỗi ký tự nhà cung cấp và phiên bản cơ sở dữ liệu. Sau đó, mã này sử dụng định nghĩa cơ sở dữ liệu đã đăng ký được tạo ra trong mã mẫu để lấy nhà máy của phần tử mô hình cơ sở dữ liệu cụ thể. Cuối cùng, phương thức này tạo một cột bằng cách sử dụng nhà máy của phần tử mô hình. Nó sử dụng CommandFactory của IDA để tạo ra một lệnh. Phương thức createAddCommand thêm một đối tượng giá trị vào đối tượng chủ sở hữu bằng cách sử dụng tính năng đã quy định. Tham khảo API của phương thức createAddCommand là: public IDataToolsCommand createAddCommand(String label, EObject owner, EStructuralFeature feature, Object value) Lệnh trả về mở rộng lớp AbstractTransactionalCommand của EMF. Lớp này có thể được thực hiện lại hoặc không thực hiện. Khi bạn thực hiện phương thức AddSSNColumn, một cột SSN được thêm vào bảng EMPLOYEE, như trong Hình 5. Hình 5. Một cột SSN được thêm vào bảng EMPLOYEE Về đầu trang Thêm các đặc tính của khách hàng và hiển thị chúng trong khung nhìn Properties Khung nhìn Properties (Các đặc tính) là một trong nhiều khung nhìn mà bàn làm việc của Eclipse cung cấp (xem phần Tài nguyên để biết thêm thông tin về khung nhìn Properties của Eclipse). Khung nhìn Properties cho phép bạn hiển thị hoặc chỉnh sửa các đặc tính của một đối tượng được chọn. Eclipse cung cấp các phần mở rộng để định nghĩa một giao diện người dùng tùy chỉnh cho khung nhìn Properties. Khi sử dụng các phần mở rộng Eclipse, bạn có thể tạo ra khung nhìn các đặc tính có gắn thẻ, như trong Hình 6. Hình 6. Thẻ General trong khung nhìn Properties IDA mở rộng khung nhìn Properties có gắn thẻ để hiển thị dữ liệu của các đối tượng mô hình. Như trong Hình 6, khi bạn chọn một bảng EMPLOYEE trong mô hình dữ liệu vật lý SAMPLE từ Data Source Explorer, bạn sẽ thấy các thẻ General (Chung), Columns (Các cột), Relationships (Các mối quan hệ), Documentation (Tài liệu) và Annotation (Chú thích) được hiển thị. Trong mỗi thẻ, bạn tìm thấy một hoặc nhiều phần. Ví dụ, trong thẻ General, hãy lưu ý các phần Name (tên), Label (Nhãn) và Schema (Lược đồ), trong thẻ Columns, lưu ý các phần để liệt kê Name, Primary Key (Khóa chính), Domain (Miền), Data Type (Kiểu dữ liệu) và các đặc tính khác. Hình 7 cho thấy các phần khác nhau này. Hình 7. Thẻ Columns trong khung nhìn Properties IDA cung cấp nhiều thẻ và nhiều phần đặc tính dựng sẵn trong các đối tượng vật lý, logic, bảng chú giải và mô hình khác. Khi bạn chỉnh sửa các đặc tính này, các thay đổi vẫn được lưu giữ lâu bền trong mô hình. Tùy chỉnh các thẻ và các phần các đặc tính Vì có nhiều loại khách hàng sử dụng IDA, nên điều phổ biến là các khách hàng có các yêu cầu riêng của mình về các đặc tính gắn liền với một số kiểu các đối tượng nhất định. Ví dụ, một công ty có thể yêu cầu Số An Sinh Xã Hội của nhân viên (SSN) được đánh dấu là riêng tư để tuân thủ chính sách bí mật dữ liệu riêng tư. Công ty có thể yêu cầu tiền lương và tiền thưởng của nhân viên được đánh dấu là dữ liệu nhạy cảm để có thể chỉ có một số nhân viên xem được. Bạn có thể tạo ra các thẻ và các phần riêng của mình để thực hiện việc này dễ dàng. Trong các phần sau, hãy tìm hiểu cách thêm một thẻ và các phần mới cho các đối tượng cột, như trong Hình 8. Hình 8. Thẻ riêng tư có tùy chỉnh với dữ liệu riêng tư và các phần phương thức mặt nạ cho các cột Ba điểm mở rộng được sử dụng để đóng góp vào khung nhìn các đặc tính có gắn thẻ. Mỗi khung nhìn các đặc tính có gắn thẻ gồm có một trình đóng góp đặc tính, để đóng góp một hoặc nhiều thẻ đặc tính. Mỗi thẻ đặc tính gồm một hoặc nhiều phần. Một phần là một tiện ích giao diện người dùng đồ họa (GUI) hoặc một hỗn hợp có chứa một nhóm các tiện ích ánh xạ tới một hoặc nhiều đặc tính. Trình cung cấp đặc tính Điểm mở rộng org.eclipse.ui.views.properties.tabbed.PropertyContributor được dùng để định nghĩa mã định danh (ID) duy nhất của Trình cung cấp cho các thẻ và các phần của bạn. Mã định danh này thường phù hợp với ID duy nhất của phần bàn làm việc, góp phần vào khung nhìn các đặc tính có gắn thẻ. Một phần bàn làm việc xác định một Trình cung cấp đặc tính riêng lẻ bằng cách thực hiện các giao diện ITabbedPropertySheetPageContributor. Như Liệt kê 4 cho thấy, điểm mở rộng này được sử dụng để định nghĩa com.ibm.datatools.properties như là ID của Trình cung cấp của các thẻ và các phần đặc tính của IDA, được chia sẻ bởi Data Project Explorer của IDA, Data Source Explorer và Diagrams (Các sơ đồ). Ngoài ra còn có một trình ánh xạ (mapper) kiểu, một nhà cung cấp nhãn và các thể loại đặc tính được định nghĩa với điểm mở rộng này. Người dùng IDA không cần làm bất cứ điều gì với điểm mở rộng này nếu họ sử dụng Data Project Explorer, Data Source Explorer và Diagrams của IDA. Liệt kê 4. Trình cung cấp đặc tính IDA <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor"> <propertyContributor contributorId="com.ibm.datatools.properties" labelProvider="com.ibm.datatools.core.ui.properties.PropertyLabelProvider" typeMapper="com.ibm.datatools.core.ui.properties.PropertyTypeMapper"> Các thẻ đặc tính Điểm mở rộng org.eclipse.ui.views.properties.tabbed.PropertyTabs mô tả các thẻ cho một Trình cung cấp. Mỗi thẻ thuộc về một Trình cung cấp như được xác định bằng mã định danh duy nhất của Trình cung cấp của nó. Điểm mở rộng PropertyTabs có thể định nghĩa một hoặc nhiều thẻ thông qua thuộc tính PropertyTab. Một thuộc tính PropertyTab định nghĩa các thuộc tính sau:  id— ID duy nhất cho thẻ đó.  label— Nhãn được hiển thị trên thẻ đó.  category— Thể loại từ điểm mở rộng PropertyContributor được dùng cho các thẻ nhóm.  afterTab— ID của thẻ mà thẻ này được đặt sau nó.  image— Ảnh tùy chọn để hiển thị trên thẻ đó.  indented— Giá trị logíc (Boon) để cho biết các thẻ có chỗ thụt lề không. Mã plugin.xml trong Liệt kê 5 thêm một thẻ Privacy bằng cách sử dụng điểm mở rộng trong Hình 8. Liệt kê 5. Sử dụng điểm mở rộng PropertyTabs để thêm một thẻ Privacy <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs"> <propertyTabs contributorId="com.ibm.datatools.properties"> <propertyTab label="Privacy" category="Extended" id="com.ibm.custome.PrivacyPropertiesTab"> Các phần đặc tính Điểm mở rộng org.eclipse.ui.views.properties.tabbed.PropertySections mô tả các phần dành cho một Trình cung cấp. Mỗi phần thuộc về một cấu hình như được xác định bằng mã định danh duy nhất của Trình cung cấp của nó. Điểm mở rộng PropertySections có thể định nghĩa một hoặc nhiều phần thông qua thuộc tính PropertySection. Mỗi phần thuộc về một thẻ, khi được xác định bằng mã định danh duy nhất của thẻ của nó. Các thuộc tính có thể được định nghĩa bằng cách sử dụng điểm mở rộng này là:  id— ID duy nhất cho thẻ đó.  tab— ID của thẻ trong đó phần này được hiển thị.  class— ID của phần mà phần này được đặt sau nó.  afterSection— Lớp thực hiện một bộ lọc phần.  filter— Một giá trị chỉ thị số đếm lựa chọn phải được đáp ứng để chạy phần này.  enablesFor— Lớp hoặc giao diện được chọn sẽ cho phép hiển thị phần này trong thẻ.  type— Lớp hoặc giao diện được chọn sẽ cho phép hiển thị phần này trong thẻ. Mã plugin.xml trong Liệt kê 6 thêm một phần đặc tính vào thẻ Privacy. Liệt kê 6. Mã mẫu để thêm một phần đặc tính <extension point="org.eclipse.ui.views.properties.tabbed.propertySections"> <propertySection tab="com.ibm.custome.PrivacyPropertiesTab" class="com.ibm.datratools.extendProperties.column.SamplePropertySection" id="com.ibm.custome.PrivacyPropertiesTab"> <input type="org.eclipse.datatools.modelbase.sql.tables.Column"/> Lớp thực hiện phần đặc tính Theo định nghĩa trong Liệt kê 6, SamplePropertySection là lớp thực hiện phần đặc tính. Lớp này sẽ mở rộng từ lớp org.eclipse.ui.views.properties.tabbed.AbstractPropertySection. Như trong Liệt kê 7, các chức năng cơ bản của lớp thực hiện gồm:  Tạo tiện ích GUI để hiển thị các đặc tính riêng tư, bao gồm cả một hộp kiểm riêng tư và một nút điều khiển văn bản mặt nạ (phương thức createControls).  Đọc giá trị đặc tính từ mô hình và hiển thị nó (các phương thức setInput và refresh).  Lưu giá trị đặc tính khi người dùng thay đổi (phương thức onCheckboxSelected và onLeaveText).  Lưu giữ lâu bền các đặc tính trong mô hình như EAnnotations (phương thức getMaskingProperty và setMaskingProperty). Với mã mẫu thực hiện phần đặc tính, Liệt kê 7 cung cấp mẫu mã hoàn chỉnh trong một tệp phụ (sidefile).