هنگام تولید یک سرویس، موارد زیر با توجه به کاربرد این سرویس مورد توجه قرار می گیرد:

- نوع خدمتی که که سرویس ارایه می دهد (Type of Logic)

- میزان قابلیت استفاده مجدد از آن سرویس (Reusability)

- سرویس در چه حوزه و دامنه ای (Domain) از سازمان دسته بندی می شود

 

با توجه به موارد بیان شده، سرویس ها را می توان به سه دسته زیر تقسیم بندی کرد:

- Entity Services

- Task Services

- Utility Services

 

در نتیجه این دسته بندی، لایه های زیر ایجاد می گردد:

 

Entity Services:

در هر سازمان با توجه به حوزه خدمات و نوع تجارت آن، موجودیتهای مختلفی وجود دارند. به عنوان مثال، تقریبا در همه سازمانهای موجودیت "پرسنل" (Employee) وجود دارد. سرویس هایی که بر اساس موجودیتهای (Entities) مورد نیاز سازمان ایجاد می شوند در دسته بندی Entity Services قرار می گیرند. این دسته از سرویس ها دارای قابلیت استفاده مجدد (Reusability) بالایی هستند چرا که وابسته به یک وظیفه (Task) یا پروسه خاص سازمانی نبوده و مستفل از عملیات سازمانی با حیات خود ادامه می دهند.

Task Services:

سرویسی که عملکرد آن به طور مستفیم با کار یا وظیفه ای (Task) در سازمان مرتبط باشد در این دسته بندی قرار می گیرد. مثلا سرویس "تولید گزارشات مالی" در این دسته بندی قرار می گیرد. با توجه به ماهیت این نوع از سرویس ها، قابلیت استفاده مجدد این سرویس ها کم است.

Utility Services:

سرویس های دسته بندی شده در دو مورد بالا همگی وابسته به موجودیت یا وظیفه ای خاص مرتبط با سازمان مورد نظر هستند. در مواردی لازم است که سرویسهای ایجاد شوند که وابستگی مستقیم به امور سازمانی یا تجارت خاصی ندارند. این گونه سرویس ها سرویس هایی هستند که قابلیت استفاده مجدد بالایی داشته و در بسیاری از کاربردها مورد استفاده قرار می گیرند. سرویس "ثبت وقایع" (Log) کاندید خوبی برای این دسته بندی است.

 Service Abstraction Layers

جدول زیر خلاصه ای از این دسته بندی را نمایش می دهد:

 

Short Description

Example

Best Practices / Characteristics

Task Service

A business service directly associated with a specific parent business task or process.

- AnalyzeRevenue

- GenerateReport

- HandleOrder

- Naming convention: [verb][noun]

- Low reusability

- Business Centric

- aka: “Task-centric Business Services” or “Business Process Services”

Entity Service

A business centric service based on one or more business entities.

- Employee

- Invoice

- Customer

- Naming convention: [noun]

- Highly reusable

- Business Centric

- aka: “Entity-centric Business Services” or “Business Entity Services”

Utility Service

Cross-cutting, non-business centric service providing utility functionality

- Logging

-Exception Handling

- Highly reusable

- Non-Business Centric

- aka: “Application Services”, “Infrastructure Services” or “Technology Services

 

 توجه شود که با توجه به تصمیم معماران محیط سرویس گرایی سازمان، می توان دسته بندی ها (لایه ها) ی دیگری نیز تعریف کرد. اما به نظر می رسد که سه دسته بندی بالا، تقریبا برای هر سازمانی قابل گسترش است.

 

دسته بندی سرویس ها در شرکت کالایاب

پس از تحلیل نیازمندیهای شرکت و برگزاری چندین جلسه با حضور معمار سازمانی (Enterprise Architect)، معمار راه حلها (Solutions Architect)، معمار اطلاعات سازمانی (Information Architect) و همچنین چند نماینده از بخش های مختلف سازمان (Subject Matter Experts)، تصمیم گیری شد که لایه های زیر برای دسته بندی سرویس ها در شرکت کالایاب مورد استفاده قرار گیرد:

- Task Service Layer

- Entity Service Layer

- Utility Service Layer

- External Partners Service Layer

دسته بندی چهارم (External Partners Service Layer) به این منظور پیشنهاد شده است که شرکت کالایاب از بسیاری از خدمات دهندگان خارج از سازمان برای پیشبرد اهداف سازمانی خود استفاده خواهد کرد. به عنوان مثال، هنگامی که درخواست مشتری برای استعلام قیمت در مورد نوع خاصی شکلات به شرکت می رسد، شرکت باید از تامین کنندگان شکلات استعلام قیمت کرده و پایین ترین قیمت را به مشتری پیشنهاد دهد (برای اطلاعات بیشتر در مورد شرکت تخیلی کالایاب به اینجا مراجعه کنید).

به این منظور، شرکت کالایاب برای اتصال به Web Service های تامین کنندگان، سرویسی خاص طراحی و اجرا خواهد کرد که وظیفه آن صدا زدن (Service Call-out) سرویس های خارجی است. هرچند می توان این سرویس را در دسته بندی Task Services قرار داد، تیم تصمیم گیرنده برای شفافیت بیشتر و جداسازی بهتر لایه ها از نظر کاربرد، تصمیم بر ایجاد لایه چهارم External Partners Service Layer گرفت.

جدول زیر نمونه ای از دسته بندی ها و سرویس های موجود در هر دسته بندی را در شرکت کالایاب نمایش می دهد:

Service Layer

Service Name

Service Description

Task Service Layer

ManageOrder

This service handles orders from the point it is made by customer, up to the point the order is fulfilled.

GenerateFiscalReport

Responsible to generate financial reports

...

...

Entity Service Layer

Supplier

External Supplier

Employee

Company’s internal employee

Product

A particular product (e.g. X Chocolate, Y Flower, etc.)

Order

An order made by a customer

Customer

A customer making an order

...

...

Utility Service Layer

Exception Handling

Service handling exceptions

Logging

Service responsible for logging different activities

Notification

Responsible for notifying users (e.g. when an order cannot be fulfilled successfully, a notification email is sent to sales team to manually handle the situation

...

...

External Partners Service Layer

GetQuote

Send quote request to external suppliers and get the result

SendShipmentRequest

Send shipment request to successful supplier to send the product to the customer

...

...

 

<بخش قبل   بخش بعد>