2009-09-03 4 views
3

В качестве части нашего приложения мне нужно написать «простую» систему документооборота, которая будет использоваться для поддержки жизненного цикла создания документа. Он должен поддерживать: - различные действия: редактировать документ, проверять документ (утверждать, отклонять), публиковать документ ... - назначить эту деятельность различным людям/пользователям - «параллельное разделение и объединение». Например, я хочу, чтобы поддерживать рабочий процесс, как это:Напишите простую систему документооборота

- begin 
1.) Create document 
2.) Translate document 
2.1) Translate into English 
2.1.1) Translate document into English 
2.1.2) Verify English translation 
2.2) Translate into Italian 
2.2.1) Translate document into Italian 
2.2.2) Verify Italian translation 
3.) Verify complete document 
4.) Publish document 
- end 

Он будет использоваться в приложении ASP.NET (C#).

Последняя часть: Я хотел бы знать, есть ли какой-либо шаблон, библиотека или статья, которая поможет мне начать работу с этой задачей? Будет ли WWF соответствовать этому?

Есть некоторый материал (даже на stackoverflow), но я не знаю, как иметь дело с параллелизмом?

ответ

4

Механизм рабочего процесса - обманчиво простая концепция. Создание надежной, управляемой реализации намного больше, чем кажется. Настоятельно одобряйте готовые вещи, а сами создавайте их. WWF (Windows Workflow Foundation) выглядит в соответствии с вашими потребностями.

0

Я бы просто использовал Windows Workflow, для этого должно быть относительно легко смоделировать рабочий процесс, и вам не придется беспокоиться о проблемах, о которых вам не беспокоиться, например, отслеживать состояние рабочего процесса и тому подобное. за пределами проблемы вашего бизнес-домена.

http://msdn.microsoft.com/en-us/library/aa480214.aspx

0

Несколько лет назад я работал над проектом, который реализуется в рабочем процессе system.It был дома выращенное решением в качестве базы данных уже existed.Basically мы предоставили веб-интерфейс для решения на основе какао.

Вы можете использовать BPM-решение с открытым исходным кодом (я видел JBPM для Java, вы можете найти хорошее решение на базе ASP с открытым исходным кодом). Преимущество этих решений заключается в обработке процессов, другими словами, вы определяете процесс или рабочий процесс в xml file.Each Approver - это узел, а следующий узел в дереве попадает в изображение, если только одобрен только родительский узел. Вы можете получить хорошую документацию по этому вопросу в Интернете.

Также ASP не будет проблемой. Для вашего собственного решения я бы предложил создать базу данных сначала. В принципе, вам нужен способ хранения древовидной структуры в базе данных. Параллельно можно обрабатывать, если два узла имеют одинаковые родительские , вы можете поместить атрибут «has_approved», а поток будет продолжен, только если оба узла имеют hasapprop = 1.

Его более обширная тема, я надеюсь, что я поняла это сообщение. Также, если вы возьмете решение с открытым исходным кодом BPM выберите тот, который прост, потому что вам нужно будет внести изменения в код в соответствии с вашим конкретным решением.

0

В то время как то, о чем вы спрашиваете, возможно, нет ничего простого в том, что нужно переместить собственный хост рабочего процесса на основе рабочего процесса .NET 3.x. Возьмите это от того, кто это сделал. Это будет намного проще в .NET 4.0, поэтому стоит также подумать, что ваше решение будет устаревшим через несколько месяцев.

Если ваш проблемный домен содержит только документооборота, я настоятельно рекомендую вместо этого рассмотреть решение SharePoint.Пожалуйста, смотрите следующие ссылки на некоторую информацию об этом варианте:

http://office.microsoft.com/en-us/sharepointdesigner/HA101005911033.aspx http://channel9.msdn.com/posts/RobertShelton/Building-an-Approval-Workflow-with-SharePointMOSS-2007-and-Visual-Studio-2008/

0

Это не так сложно реализовать. Я нашел его достаточно простым, ему не понадобилось огромное упакованное решение.

Вам необходимо определить, какие предметы должны контролироваться (документы). Затем вам нужно определить, в каких состояниях (или статусах) могут находиться эти документы. Статусы записывают, на каком этапе находится документ в вашей обработке. (Где он находится в вашем «рабочем потоке»). Вы уже сделали это в своем посте.

Конечный автомат отличный образец для обработки движения документов через различные статусы: http://en.wikipedia.org/wiki/State_machine

Вы все еще должны построить список каждого государства документ может быть, и что происходит с ним, чтобы переместить его к новое состояние. Вы уже проделали большую часть работы. Код для вашего задания не должен занимать больше одной или двух страниц.

Пример реализации:

присвоить каждому документу номер, так что вы можете отслеживать его, и присвоить ему статус, который показывает, где она находится в вашем процессе. Обычно оба они выполняются с номером, но не обязательно.

Что-то вроде этого:

public class document 
{ 
    public int documentId; 
    public String documentStatus; 
} 

// create a new document to track 
document doc = new document(); 
doc.documentId = 42;  // arbitrary id# 
doc.documentStatus = "1"; // document is at the start of the process 
2

Поиграйте с WF Virtual Labs. Как только вы освоите технологию, у вас будет гораздо лучшее понимание, если WF подходит, или вы должны катиться самостоятельно. Кроме того, вы можете проверить K2, но это намного больше тяжеловеса.