Mô hình thiết kế vật liệu đơn giản nhưng vô cùng mạnh mẽ. Bài viết này sẽ giới thiệu một ví dụ quen thuộc với các chuyên gia CNTT mà bạn có thể không nghĩ là phù hợp với mô hình BOM. Nó cũng sẽ giới thiệu các khái niệm để chỉ cho bạn cách làm cho cấu trúc BOM của bạn linh hoạt hơn và dễ quản lý hơn nhiều.
Bản tóm tắt ngắn về Hội đồng quản trị
A hóa đơn nguyên vật liệu có nguồn gốc từ sản xuất. Đây là danh sách các nguyên liệu thô, cụm phụ, cụm trung gian, thành phần phụ, bộ phận và số lượng của từng nguyên liệu cần thiết để sản xuất một sản phẩm cuối cùng.
Ở dạng đơn giản nhất, cấu trúc BOM cổ điển trông giống như sau:
Tuy nhiên, cùng một loại cấu trúc có thể được sử dụng cho vô số mục đích khác nhau , bao gồm từ thứ gì đó có thứ bậc nghiêm ngặt và liên kết chặt chẽ với thứ gì đó khá phẳng và liên kết lỏng lẻo. Để biết thêm thông tin về cấu trúc BOM, hãy xem bài viết này.
Lược đồ - Ví dụ Hàng ngày
Bạn có tin hay không, bộ ba kiểu thuộc tính lớp và bộ ba kiểu bảng-cột cũng tuân theo mô hình BOM. Mô hình dữ liệu vật lý bên dưới chứa các bảng cốt lõi của từ điển dữ liệu.
Bảng | Mô tả |
---|---|
dd_attribute | Một thuộc tính duy nhất, không phụ thuộc vào bất kỳ quá trình triển khai nào. |
dd_attr_instance | Một thể hiện của một thuộc tính. Thể hiện có hai mối quan hệ đặc biệt: 1) Lớp mà nó thuộc về, có thể là một đối tượng logic hoặc vật lý. Cá thể là duy nhất cho lớp này. 2) Kiểu dữ liệu, có thể là kiểu gốc hoặc kiểu lớp khác. |
dd_class | Một lớp hoặc đối tượng theo nghĩa chung - việc triển khai thực tế được cung cấp bởi class_type - có một tập hợp các thuộc tính. |
Từ điển dữ liệu, hay kho lưu trữ siêu dữ liệu, được định nghĩa trong Từ điển Máy tính của IBM là "kho lưu trữ tập trung thông tin về dữ liệu như ý nghĩa, mối quan hệ với dữ liệu khác, nguồn gốc, cách sử dụng và định dạng".
Bây giờ hãy xem xét Định nghĩa lược đồ XML (XSD) sau cho một ứng dụng Java:
Nó xác định các kiểu phức hợp XSD có các thuộc tính của một trong hai kiểu XML nguyên gốc - ví dụ: chuỗi , NMTOKEN , anySimpleType - hoặc các loại phức tạp khác.
Để bắt đầu điền từ điển dữ liệu cho XSD ở trên, trước tiên chúng ta cần nhập kiểu dữ liệu gốc dưới dạng lớp của XML :
class_name | khuôn mẫu |
---|---|
boolean | Bản địa |
ngày | Bản địa |
dateTime | Bản địa |
chuỗi | Bản địa |
phiên bản | Bản địa |
NMTOKEN | Bản địa |
anySimpleType | Bản địa |
Bây giờ chúng tôi có mọi thứ chúng tôi cần để bắt đầu điền từ điển dữ liệu của mình. Trong ví dụ dưới đây, chỉ đủ được hiển thị để xác định đầy đủ ConnectionConfigType loại phức tạp.
dd_attribute | of_class (thông qua dd_attr_instance) | type_class (thông qua dd_attr_instance) | ||
---|---|---|---|---|
attr_name | class_name | khuôn mẫu | class_name | khuôn mẫu |
Loại thuộc tính | XSDcomplexType | chuỗi | Bản địa | |
giá trị | Loại thuộc tính | XSDcomplexType | chuỗi | Bản địa |
Thuộc tính | ConnectionConfigType | XSDcomplexType | Loại thuộc tính | XSDcomplexType |
driverClassName | ConnectionConfigType | XSDcomplexType | chuỗi | Bản địa |
người dùng | ConnectionConfigType | XSDcomplexType | chuỗi | Bản địa |
mật khẩu | ConnectionConfigType | XSDcomplexType | chuỗi | Bản địa |
poolName | ConnectionConfigType | XSDcomplexType | chuỗi | Bản địa |
Lưu ý cách loại dữ liệu của ConnectionConfigType.Property
thuộc tính là một kiểu phức tạp khác, PropertyType
. Trong XML, các kiểu phức tạp có thể được tạo thành từ các kiểu phức tạp khác. Không có gì lạ khi tìm thấy các kiểu phức tạp lồng nhau trong tài liệu XML, đặc biệt là trong WSDL.
Vậy thì sao? bạn hỏi. Vâng, vì XML có cấu trúc phân cấp và các kiểu phức tạp có thể được sử dụng lại, XML tự nhiên tuân theo mẫu BOM .
Và hiện tượng này không chỉ giới hạn ở XML. Các lược đồ khác, như lược đồ dành cho JSON và cơ sở dữ liệu quan hệ đối tượng, cũng tuân theo mẫu BOM .
Kết hợp tính linh hoạt trong BOM
Trong cấu trúc BOM sản phẩm cổ điển, ba khái niệm chi tiết hơn liên quan đến việc mô hình hóa những gì xảy ra trong thế giới thực. Đây là lựa chọn thay thế , biến thể và bản sửa đổi .
Một thay thế là một thay thế cho một mặt hàng cụ thể. Ví dụ, một nhà sản xuất ô tô có thể có các nhà cung cấp khác nhau cho một số mặt hàng nhất định. Thực tế, điều này có nghĩa là nhà sản xuất có thể có được các máy bơm nhiên liệu tương đương từ nhiều nguồn. Thông thường, khách hàng không được cung cấp tùy chọn này, nhưng nó mang lại cho nhà sản xuất sự linh hoạt.
Chúng tôi đã sử dụng máy bơm nhiên liệu làm các mục trong bảng ví dụ bên dưới, với Bosch và Lucas là các lựa chọn thay thế. Có một thay thế bơm nhiên liệu có nghĩa là một và chỉ một trong số các cụm lắp ráp sẽ được lựa chọn tại thời điểm sản xuất động cơ.
Item | Thay thế | |
---|---|---|
Parent | Con | Số lượng |
V6 (Assembly) | Bơm nhiên liệu (Thay thế) | 1 |
Bơm nhiên liệu (Thay thế) | Máy bơm Bosch (Lắp ráp) | |
Bơm nhiên liệu (Thay thế) | Bơm Lucas (Lắp ráp) |
Một biến thể là một loại mặt hàng khác, nhưng lần này khách hàng đưa ra lựa chọn. Người mua xe có thể chọn các kiểu dáng thân xe khác nhau - 3 cửa, 5 cửa, hoặc bất động sản (xe ga hoặc xe goòng). Họ cũng có thể chọn từ hai loại động cơ khác nhau - động cơ V6 hoặc V8. Trong ví dụ của chúng tôi, người mua phải lựa chọn một và chỉ một trong các tổ hợp bên dưới biến thể.
Item | Biến thể | ||
---|---|---|---|
Parent | Con | Lựa chọn tối thiểu | Lựa chọn tối đa |
Xe (lắp ráp) | Nội dung (Biến thể) | 1 | 1 |
Phần thân (Biến thể) | 3 cửa (Lắp ráp) | ||
Phần thân (Biến thể) | 5 cửa (lắp ráp) | ||
Phần thân (Biến thể) | Động sản (Lắp ráp) | ||
Xe (lắp ráp) | Động cơ (Biến thể) | 1 | 1 |
Engine (Biến thể) | V6 (Assembly) | ||
Engine (Biến thể) | V8 (Assembly) |
Trong các lĩnh vực khác, số lượng lựa chọn đa dạng hơn. Lấy giáo dục làm ví dụ. Để đạt được một bằng cấp cụ thể, một học sinh phải hoàn thành một số nhóm nhất định. Đối với mỗi nhóm, họ có thể chọn từ một số mô-đun.
Ví dụ, giả sử một sinh viên cần hoàn thành hai nhóm để được cấp bằng tốt nghiệp. Họ có thể chọn hai mô-đun từ danh sách sáu mô-đun để hoàn thành nhóm đầu tiên. Sau đó, họ phải chọn ba mô-đun từ năm mô-đun để hoàn thành nhóm thứ hai. (Nếu đây là lĩnh vực bạn muốn xem chi tiết hơn, thì một thiết kế linh hoạt đã được xuất bản bởi Ban tiêu chuẩn thông tin của Vương quốc Anh.)
Cả hai ví dụ trên đều tuân theo mô hình đơn giản được hiển thị bên dưới. Mô hình này phù hợp với các cấu trúc khá tĩnh. Các biến thể và lựa chọn thay thế được chèn vào hệ thống phân cấp để chỉ ra rằng một số loại lựa chọn phải được thực hiện từ các mục ngay bên dưới chúng.
Khi mọi thứ có xu hướng thay đổi theo thời gian, thì mô hình sau đây linh hoạt hơn và dễ duy trì hơn. Mặt khác, hơi khó sử dụng khi đi ngang (hoặc điều hướng).
Bằng cách chuyển đổi mô hình lôgic ở trên thành mô hình vật lý, mọi thứ bắt đầu giống như sau:
Trong mô hình này, một mục là một bộ phận không thể phân chia hoặc một bộ phận lắp ráp. Các bộ phận và cụm lắp ráp được tổ chức thành các hệ thống phân cấp. Tuy nhiên, lựa chọn thay thế , biến thể và bản sửa đổi có những mối quan hệ khác biệt của riêng mình vì chúng có xu hướng thay đổi khá nhiều theo thời gian. Điều này giảm thiểu việc tổ chức lại hệ thống phân cấp.
Ví dụ, các nhà sản xuất xe hơi liên tục phát triển xe hơi của họ. Theo đó, các lựa chọn thay thế bộ phận thay đổi theo thời gian, cũng như các biến thể được cung cấp cho khách hàng. Khi một thay đổi xảy ra trong một assembly, thì assembly sẽ được sửa lại. A bản sửa đổi cho biết lịch sử thay đổi của mặt hàng. Hãy xem xét ví dụ này:
Part Number | Phiên bản | Tiền tố | Tiếp theo |
---|---|---|---|
123456-1 | 1 | 123456-1 | 123456-1 |
123456-2 | 2 | 123456-1 | 123456-2 |
123456-3 | 3 | 123456-2 | 123456-3 |
123456-4 | 4 | 123456-1 | 123456-4 |
123456-5 | 5 | 123456-2, 123456-3 | 123456-5 |
Tường thuật cho bảng trên như sau:một mục có ít nhất một bản sửa đổi - phiên bản gốc của nó. Phiên bản gốc của sản phẩm được sử dụng để tạo ra phiên bản thứ hai. Phiên bản thứ hai được phát triển thêm để tạo ra phiên bản thứ ba, phiên bản này không hoạt động. Vì vậy, các kỹ sư đã sửa lại phiên bản gốc, tạo ra phiên bản thứ tư. Sau khi thử nghiệm rộng rãi, điều này cũng được phát hiện là kém lý tưởng. Vì vậy, các kỹ sư quyết định sử dụng các khía cạnh của phiên bản thứ hai và thứ ba và tạo ra phiên bản năm, sản phẩm cuối cùng.
Nếu bạn nhìn vào các khóa trước và sau đó, bạn sẽ thấy lý do tại sao lịch sử thay đổi cần nhiều đến nhiều mối quan hệ giữa các mục và các bản sửa đổi. Nguyên tắc giống nhau được áp dụng giữa các mặt hàng, lựa chọn thay thế và biến thể.
Lời cuối về Mẫu Hóa đơn Nguyên vật liệu
Hy vọng của tôi là loạt bài viết này đã giúp bạn nhận ra mô hình BOM. Khi nó xuất hiện trong các dự án của bạn, bạn sẽ hiểu cách tốt nhất để lập mô hình nó trong miền cụ thể của mình.
Tuy nhiên, xin lưu ý rằng cấu trúc vật liệu nghiêm ngặt có ưu và nhược điểm. Pro:cấu trúc phân cấp có thể sử dụng lại. Con:cấu trúc phân cấp có thể sử dụng lại. Đây có thể là một điều xấu hoặc có thể không phải là một điều tồi tệ trong trường hợp của bạn, nhưng chắc chắn đó là điều cần lưu ý.
Điều tốt là các thứ bậc không cần phải được thiết lập sẵn. Sử dụng các lựa chọn thay thế, biến thể và bản sửa đổi, bạn có thể lập mô hình các miền nơi có các tùy chọn, nơi vị trí lịch sử phải được giữ lại và cuối cùng là nơi hằng số duy nhất là thay đổi.