Làm thế nào để sử dụng một công cụ quy tắc ảnh hưởng đến thiết kế, thực hiện và hiệu suất của một ứng dụng?


11

Tôi quan tâm đến khả năng của các công cụ quy tắc:

  • khởi chạy và lặp lại trên logic điều khiển kinh doanh
  • có "người dùng doanh nghiệp" thực hiện sửa đổi thực tế các quy tắc đó thay vì nhà phát triển
  • hiểu các quy tắc kinh doanh nói chung

Ngoài ra, việc sử dụng một công cụ quy tắc có ảnh hưởng đến chất lượng của một ứng dụng không?

Việc sử dụng công cụ quy tắc có thay đổi không nếu bạn đang triển khai cài đặt 1 máy so với kiến ​​trúc của bạn so với kiến ​​trúc phân tán dựa trên đám mây nhiều tầng sử dụng hàng ngàn máy? Làm thế nào nó sẽ khác nhau?

Câu trả lời:


5

Quyết định về việc có nên đưa ra giao diện cho nhân viên phi kỹ thuật để sửa đổi quy tắc kinh doanh hay không phụ thuộc vào một số yếu tố, bao gồm các mục tiêu của dự án, chi phí của dự án, thời gian tồn tại của dự án và tỷ lệ được biết đến trong ẩn số dự án.

Ví dụ, nếu tôi tin rằng không ai sẽ sử dụng giao diện quy tắc, thì có lẽ tôi sẽ từ chối thực hiện nó. Tuy nhiên, nếu tôi có lý do để tin rằng những thay đổi sẽ xảy ra thường xuyên và những người dùng cuối khác nhau sẽ mong đợi các quy tắc khác nhau được đưa ra, thì tôi sẽ xem xét việc xây dựng chức năng đó.

Tôi đã chọn thực hiện điều này trong một dự án và phải mất nhiều năm trước khi tính năng này được sử dụng rộng rãi. Tôi nghi ngờ rằng cuối cùng chúng ta sẽ có những người dùng cuối muốn tự mình tùy chỉnh mọi thứ, vì vậy chúng tôi đã triển khai chức năng này thành từng mảnh.

Nó bắt đầu như một thứ mà chỉ một số người nhất định, như nhà phát triển hoặc quản trị viên có thể sử dụng. Giao diện rất cục mịch, nhưng có thể sử dụng được nếu bạn biết bạn đang làm gì. Nhưng vào thời điểm sản phẩm gần hoàn thành, logic phụ trợ của công cụ quy tắc đã có ích và đội ngũ thiết kế của chúng tôi đã cho nó một giao diện người dùng đẹp mắt, hướng tới khách hàng.

Nếu tôi làm điều đó khác đi, tôi có thể chọn một kiến ​​trúc cơ sở dữ liệu khác chỉ vì đường cong học tập cao. Nhưng tóm lại, việc xây dựng nó sớm đã dẫn đến nhiều khách hàng phải đối mặt với các tính năng sau này mà không phải đau đầu về việc phải quay lại mã và cấu trúc lại nó để bao gồm tất cả các quy tắc động.


1
Tôi muốn thêm rằng người dùng doanh nghiệp nên dành thời gian để tìm hiểu giao diện quy tắc. Giao diện sẽ dễ sử dụng hơn cho người dùng, nhưng chắc chắn sẽ mất thời gian và công sức để học. Họ không nên mong đợi một điều gì đó kỳ diệu có thể hiểu được.
9000

@ 9000 - Điểm rất tốt. Tôi đã thấy điều này trong các dự án của riêng tôi. Trên thực tế, đôi khi vẫn cần đào tạo để giúp người dùng tăng tốc, cũng như một khía cạnh nhất định của việc 'bán' giao diện cho người dùng và cho họ thấy giá trị của nó đối với họ.
jmort253

4

Nếu tôi làm điều này, tôi sẽ tạo một Ngôn ngữ cụ thể cho miền để thể hiện các quy tắc và có thể cung cấp cho các loại biz một UI để sửa đổi nó nếu được yêu cầu. Sau đó sử dụng ngôn ngữ chức năng (như Haskell, Lisp hoặc Erlang) để đánh giá các quy tắc.

Nếu cần phải có sự song song lớn, tôi sẽ sử dụng Erlang, điều này đồng thời rất tốt. Sử dụng Erlang sẽ mở rộng quy mô từ 1 nút đến 100 hoặc nhiều hơn.

Nếu bạn nghĩ về các quy tắc như một Đại số sẽ được áp dụng cho một tập dữ liệu, việc logic hóa những gì cần thiết trong mã của bạn sẽ trở nên dễ dàng hơn nhiều và để chứng minh cho chính bạn (hoặc người quản lý của bạn) rằng nó là chính xác. Đây là một trong những nơi mà một ngôn ngữ chức năng sẽ làm việc có lợi cho bạn.


3

Tôi đã viết một ứng dụng dựa trên WF (nền tảng quy trình làm việc của windows). Sếp của tôi (một DBA) đã bị thuyết phục rằng WF có thể thực hiện đa luồng mà không cần lập kế hoạch đồng thời. Bộ nhớ được phân chia kỹ lưỡng, nhưng có rất nhiều vấn đề tôi không thể giải thích nó chỉ trong một vài đoạn và nó chỉ liên quan một chút đến câu hỏi của bạn ... vì vậy tôi tiếp tục.

Khả năng lặp lại BL:
WF làm tốt điều này.
cho phép những người không phải "xây dựng một ứng dụng":
WF thực hiện tốt điều này NẾU kiến ​​trúc hoạt động VÀ những người không hiểu biết về những hạn chế kỹ thuật ... Chúng ta thì không.
Khả năng hiểu các quy tắc kinh doanh nói chung:
Có một số bổ trợ có thể thực hiện một số nội dung cơ bản giống như sharepoint có thể tự động hóa quy trình công việc. Tôi đã không nhận được vào các mục này.
Chất lượng của phần mềm phát hành:
Tầm thường. WF đã không hoạt động tốt cho mục đích của chúng tôi, nhưng hệ thống được thiết kế tồi và tay tôi bị trói.
Tốc độ của ứng dụng:
Chậm. Đường cong học tập khá dốc cho các nhà phát triển và người dùng cuối. Cách bộ nhớ tách biệt WF (miền ứng dụng Nếu tôi nhớ lại) đã thực hiện giao tiếp luồng chéo, các trường hợp đột biến và các khái niệm luồng khác không có hoặc đơn giản là không hoạt động.

Cuối cùng, tôi đã viết một nguyên mẫu để chứng minh WF thất bại trong cách nó được thực hiện. Tôi thay thế nó bằng đa luồng thông thường. Hiệu suất và khả năng đọc mã tăng lên. Hãy dùng nó với một hạt muối vì đây là ứng dụng WF chuyên nghiệp đầu tiên của tôi.

Nontechs có thể tin rằng thực tế mọi thứ đều có thể mà không cần lập trình viên, một tiêu cực tiềm tàng lớn đối với toàn bộ "giả" của BL; các vấn đề xã hội học liên quan đến điều này đã giết chết dự án.

Nếu tôi có thể quay lại và thực hiện theo cách của mình : sử dụng phân luồng truyền thống và tạo khuôn BL đạt được thông qua Mẫu trang trí. Tôi đã viết một bằng chứng về khái niệm sử dụng các công nghệ này và nó hoạt động tốt. ánh xạ BL phải được bọc trong giao diện người dùng SIMPLE.
Cập nhật
Tôi tìm thấy một bài viết cũ tôi đã viết khi làm việc thông qua các vấn đề tương tranh. Mã cho thấy cách in "hello world" trong quy trình làm việc song song không hoạt động mà không hiểu những gì diễn ra bên dưới trang bìa (đánh bại toàn bộ mục đích của sự trừu tượng WF). Người điều hành MSDN giải thích một tổng quan cấp cao về cách các hoạt động song song thực sự tuần tự. Về cơ bản, ông kết luận "bạn cần đọc toàn bộ hướng dẫn" để làm điều gì đó cơ bản này. http://social.msdn.microsoft.com/Forums/en/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b361-7ea5fc31fed8

Chúc may mắn.


Tôi không có kinh nghiệm với WF, nhưng luôn tránh xa nó, bởi vì bản năng ruột của tôi là làm điều đó. Nhưng tôi không thể tự hỏi, nếu WinWF không chỉ là phiên bản chậm của hệ thống ETL, chẳng hạn như Rhino ETL, về những gì có thể được thực hiện một cách dễ dàng với nó?
Henrik

3

Tôi đã có một trải nghiệm chưa hoàn hảo khi kết nối từ mã Java với một công cụ quy tắc của Oracle. Một số điều này có thể là do thiếu kinh nghiệm từ phía các tác giả quy tắc, nhưng đây là những gì tôi phải đối mặt.

  • Chúng tôi thực hiện công cụ quy tắc của chúng tôi như một thiết bị phi trạng thái. Người gọi phải thu thập tất cả các tham số và chuyển chúng đến động cơ để đánh giá. Điều này có nghĩa là nếu quy tắc cần một trường dữ liệu khác, tất cả các máy khách cần được cập nhật, Điều này phủ nhận lợi thế được chào hàng là có thể cập nhật các quy tắc một cách độc lập từ người tiêu dùng của họ.
  • Công cụ đã xuất bản WSDL SOAP, nhưng nó được tạo tự động từ bộ quy tắc. Những thay đổi nhỏ trong quy tắc sẽ phá vỡ hợp đồng với người tiêu dùng.
  • Công cụ này rất tốt trong việc đánh giá các quy tắc, nhưng thật tồi tệ khi cho chúng tôi biết lý do tại sao việc đánh giá thất bại. Rất khó để cung cấp thông báo lỗi thông tin lại cho người dùng.
  • WSDL không phù hợp cho tiêu dùng chung. Bộ quy tắc đơn giản nhất có WSDL 14 trang, hiển thị phần bên trong của cơ sở quy tắc. Chúng tôi đã phải đặt một lớp dịch thuật ở phía trước để trình bày một mặt tiền thân thiện với doanh nghiệp. Vì vậy, thay vì gọi một thư viện địa phương đáng tin cậy 100%, có hai máy chủ bổ sung trong vòng lặp. Điều đó không thêm vào độ tin cậy trong ít nhất. Cộng với bất kỳ thay đổi nào đối với chữ ký quy tắc liên quan đến ba nhóm khác nhau đang cập nhật mã. Không phải định nghĩa của tôi về nhanh nhẹn!
  • Bất cứ khi nào bộ quy tắc cần bổ sung, WSDL sẽ phải được cập nhật, điều đó có nghĩa là khách hàng không còn hiểu nó nữa. Điều này dẫn đến việc thêm các điểm cuối SOAP mới cho v2, v3 .. có tác dụng kích thích các quy tắc tường lửa cần được cập nhật.
  • Các quy tắc được thể hiện bằng "tiếng Anh có cấu trúc" dễ hiểu đối với các quy tắc đơn giản, nhưng gần như mờ đối với các quy tắc phức tạp.
  • Chúng tôi không bao giờ có thể tìm thấy các nhà thầu biết ngôn ngữ tác giả.
  • Ngôn ngữ quy tắc không thực hiện các mảng, đệ quy hoặc hướng đối tượng. Trong một trường hợp, cách duy nhất để thực hiện quy tắc là thông qua chú thích đến bảng tính Excel, trong đó quy tắc được triển khai trong VB. Quan tâm làm gì?

Tôi không nghĩ rằng sự lựa chọn sử dụng một công cụ quy tắc (hoặc không) là rõ ràng. Tôi đề nghị bạn tạo nguyên mẫu cho bất kỳ động cơ nào bạn định sử dụng, sau đó đưa ra quyết định sáng suốt. Họ chắc chắn không phải là một viên đạn bạc ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.