2008-08-21 6 views
13

Tôi đã sử dụng WWF một thời gian như là một phần của ứng dụng trung tâm cuộc gọi nội bộ (ASP.NET), và trong khi học nó là một thực hành tốt trong việc hiểu làm thế nào một hệ thống công việc dựa trên máy nhà nước nên làm việc, tôi chắc chắn không yêu WWF. Theo tôi đó là:Giải pháp thay thế cho Windows Workflow Foundation?

  1. quá phức tạp, đặc biệt để sử dụng trong các ứng dụng web (tất cả những gì luồng thứ runtime)
  2. Immature (từng làm việc với mà nhà thiết kế kinh khủng?)
  3. thiếu máu ở bộ tính năng hiện tại của nó

Có ai có đề xuất về khung công việc dựa trên .NET tốt hơn không? Cụ thể, tôi đang tìm kiếm các tính năng sau: Máy dựa (bang lập bản đồ để hành động có sẵn)

  1. Nhà nước
  2. Một tập trung vào điều khoản sử dụng (kiểm soát những người có quyền truy cập vào những hành động gì)
  3. Khả năng chạy quy trình làm việc dưới dạng tác vụ nền theo thời gian (ví dụ: để gửi lời nhắc cho các mục đã ngồi trong một trạng thái nhất định trong x ngày)

Đó thực sự là tất cả những gì tôi cần. Tôi không cần phải "kéo và thả" bất kỳ hoạt động nào hoặc thiết kế trực quan luồng. Tôi hoàn toàn thoải mái khi viết mã thực tế khi một hành động cụ thể được kích hoạt.

Trả lời

13

Bạn có thể thử Simple State Machine. Bạn sẽ phải thực hiện kiểm soát truy cập và bộ đếm thời gian nền cho chính mình, nhưng đó không phải là một việc lớn. SSM cũng được xây dựng trong sự thất vọng với WF. There are some other state machine implementations on Codeplex. Nếu một trong số họ không phù hợp với anh ta ra khỏi hộp, họ là mã nguồn mở và sẽ giúp bạn đủ gần. Tôi hoàn toàn đồng ý với bạn về các máy trạng thái trong WF - chúng không thể kiểm tra được, quá phức tạp, mô hình luồng là đặc biệt và khó theo dõi, và tôi không chắc một nhà thiết kế trực quan có thể được hình thành kém hơn hay không. để thiết kế các máy trạng thái đồ họa. Tôi nghĩ rằng điều này có thể là do khái niệm máy nhà nước cảm thấy bị dính vào thời gian chạy WF, được thiết kế cho các máy trạng thái tuần tự, một cái gì đó mà WF thực hiện tốt hơn, theo ý kiến ​​của tôi. Vấn đề là các máy trạng thái thực sự không phải là động vật giống như một dòng công việc tuần tự, và đáng lẽ phải được thực hiện một lớp đầu tiên của riêng chúng, bởi vì cong vênh của WF để làm cho nó dường như hỗ trợ chúng hóa ra là nhiều hay ít không được hỗ trợ, nếu không thực sự không sử dụng được.

+2

Máy trạng thái đơn giản là thông minh. Nếu mô hình của nó phù hợp nhưng bạn thích làm việc trong C# hơn Boo, bạn cũng có thể xem xét Stateless (http://stateless.googlecode.com) –

+0

Xin lỗi, tôi mới ở đây (và .NET) vì vậy tôi trễ cho trò chơi. :) Tôi đồng ý rằng việc thực hiện máy trạng thái trong WF khá phức tạp. Bản thân tôi đang sử dụng luồng công việc tuần tự vì chúng phù hợp với yêu cầu của tôi, nhưng việc xử lý lỗi thực sự phức tạp (đối với tôi) khi mọi thứ liên quan vẫn bao gồm các yêu cầu cập nhật GUI. Cảm ơn bạn đã giới thiệu Simple State Machine - Tôi thích việc thực hiện các luồng công việc tuần tự trong WF dễ dàng như thế nào, nhưng tôi tưởng tượng rằng nó vẫn khá dễ dàng trong SSM, và có lẽ việc xử lý lỗi sẽ đơn giản hơn nhiều để thực hiện. – Dave

0

Bạn có tùy chọn để xem xét BizTalk Server không?

1

Hãy thử Drools.NET

4

tôi sẽ tránh xa Drools.Net vì nó SVN cam kết cuối cùng là vào tháng năm 2007. Trông đẹp, nhưng nó có vẻ hơi quá mạo hiểm để làm như vậy một phần thư viện lớn của dự án của bạn khi bạn biết nó không nhận được bất kỳ sự chú ý nữa.

0

Hãy thử WF4.5. Nó đã được thiết kế lại hoàn toàn từ .NET4.0.

1

Hãy xem Workflow Engine. Nó là một khung công việc nhẹ cho các giải pháp .NET và Java. Nó có một thiết kế trực quan HTML5, kiểm soát phiên bản, một giao diện người dùng phong nha và hỗ trợ một loạt các cơ sở dữ liệu.

0

Trước hết, bạn nên tìm kiếm động cơ hỗ trợ BPMN. BPMN là một tiêu chuẩn trong quy trình làm việc và quy trình và được hỗ trợ tốt từ rất nhiều dự án. Thứ hai, bạn nên suy nghĩ về các yêu cầu để làm động cơ. Khi bạn tìm kiếm một Công cụ BPMN, có hai cách tiếp cận khác nhau:

công tác định hướng

Những động cơ (ví dụ JBoss BPM - jbpm) được thiết kế để xử lý một dữ liệu đầu vào bằng một mô hình quy trình được xác định rõ. Mỗi tác vụ trong mô hình cho phép kiểm soát một đoạn mã - hoặc là một sự triển khai tiêu chuẩn hoặc cá nhân. Quá trình kết thúc khi quá trình mã thông báo đến cuối mô hình quy trình (Sự kiện kết thúc). Loại xử lý này mất một phần nghìn giây. Động cơ có thể được sử dụng cho các công việc hàng loạt hoặc xử lý dữ liệu với quy trình định hướng phức tạp.

Event-Driven

động cơ công việc Nhân-Centric là sự kiện định hướng (ví dụ Imixs-Workflow). Đây là một loại máy nhà nước nhưng cung cấp nhiều chức năng hơn. Bạn có thể bắt đầu một tiến trình mới bằng cách gán đối tượng nghiệp vụ của bạn với nhiệm vụ ban đầu (được xác định bởi sự kiện bắt đầu). Hơn so với công cụ luồng công việc cho phép bạn kích hoạt các sự kiện được gán cho từng tác vụ, được xác định trong mô hình của bạn. Mỗi sự kiện (Intermediate CatchEvent) kích hoạt công cụ luồng công việc để chuyển tiến trình đang chạy đang chạy đến nhiệm vụ tiếp theo (trạng thái). Cho đến khi không có sự kiện mới được kích hoạt, processinstance sẽ đợi trong nhiệm vụ hiện tại (state). Một quá trình phê duyệt là một ví dụ điển hình cho loại công việc con người làm trung tâm này.

Bạn có thể tìm danh sách các công cụ here.