Re: Представление последовательности обработки документа
От: Baudolino  
Дата: 20.12.13 13:06
Оценка: 2 (2) :)
PS>Имеется задача — обработать документ, т.е. провести документ по цепочке обработчиков. Не пойму, как лучше описать программно схему обработки. Т.е. необходимо задать, чтобы документ одного типа прошел по цепочке модулей 1, 2, 3, а, например, документ второго типа, по цепочке 2, 3, 4. Требование такое, чтобы описание схемы было несложным, плюс простота изменения, м.б. наглядность. Т.е. либо это XML, либо какой-нибудь WWF, или еще что-то. Другие требования: .NET, persistence (состояние и местонахождение документа в цепочке обработки должно сохраняться в базе данных). Подскажите в каком направлении смотреть.

1. Записать все условия на английском языке списком пунктов, привести к единому виду, например:
   In my workflow, when document is "Invoice" then do A, then do B, finally perform C and save.
   In my workflow, when document is "Shipping label" then do print, finally perform save.

2. Расставить скобки, запятые и точки, объединить некоторые слова в camelCase идентификаторы таким образом, чтобы получился синтаксически корректный для вашего языка программирования код:
   Workflow workflow = inMyWorkflow()
     .when(document, is(INVOICE)).thenDo(a()).thenDo(b()).finallyPerform(c().and(save()))
     .when(document, is(SHIPPING_LABEL)).thenDo(print()).finallyPerform(save())
     .build();

3. Реализовать получившиеся функции с помощью паттернов "фабричный метод", "фабрика", "сборщик" и т.п., определить константы.
    class BAction implements DocumentAction {
          static BAction b() { return new BAction(); }
          execute() { ... }
    }
   
    class WorkflowBuilder {
          WorkflowDSL when(Document document, DocumentMatcher matcher) { ... }
          Workflow build();
    }
    class WorkflowDSL {
          WorkflowDSL thenDo(DocumentAction action) { ... return this; }
          WorkflowBuilder finallyPerform(DocumentAction action) { ... return workflow; }
    }

    ...
    
    workflow.process(document);

4. Результат назвать MDWSL (my document workflow specification language) и получить профит.

Ну или поискать готовое решение...
Re: Представление последовательности обработки документа
От: dilmah США  
Дата: 20.12.13 02:12
Оценка: 1 (1) :)
марковскую цепь им заделай
Re: Представление последовательности обработки документа
От: Vzhyk  
Дата: 20.12.13 09:19
Оценка: 1 (1) :)
12/20/2013 4:37 AM, PetrS пишет:

> Имеется задача — обработать документ, т.е. провести документ по цепочке

> обработчиков. Не пойму, как лучше описать программно схему обработки.
> Т.е. необходимо задать, чтобы документ одного типа прошел по цепочке
> модулей 1, 2, 3, а, например, документ второго типа, по цепочке 2, 3, 4.
> Требование такое, чтобы описание схемы было несложным, плюс простота
> изменения, м.б. наглядность. Т.е. либо это XML, либо какой-нибудь WWF,
> или еще что-то.
А может просто нарисовать твои N прямоугольничков и соединить их
стрелочками? И без WTF всяких обойтись?
Posted via RSDN NNTP Server 2.1 beta
Re: Представление последовательности обработки документа
От: Sharov Россия  
Дата: 20.12.13 09:10
Оценка: 2 (1)
Здравствуйте, PetrS, Вы писали:

подумалось, что Вам может стоить посмотреть на что-нибудь типа XProc...
Кодом людям нужно помогать!
Re: Представление последовательности обработки документа
От: hrensgory Россия  
Дата: 20.12.13 13:20
Оценка: 2 (1)
On 20.12.2013 05:37, PetrS wrote:

> Имеется задача — обработать документ, т.е. провести документ по цепочке

> обработчиков. Не пойму, как лучше описать программно схему обработки.
> Т.е. необходимо задать, чтобы документ одного типа прошел по цепочке
> модулей 1, 2, 3, а, например, документ второго типа, по цепочке 2, 3, 4.
> Требование такое, чтобы описание схемы было несложным, плюс простота
> изменения, м.б. наглядность. Т.е. либо это XML, либо какой-нибудь WWF,
> или еще что-то.

BPM? Про дотнет не знаю, в яве — activiti bpm, jbpm.

Теоретически схема прохождения рисуется аналитиками даже визуально (есть
тулзы), вы только кодите получение документов в определённом статусе и
их обработку в своих модулях, не забывая регистрировать события
обработки в БПМ движке (чтобы маршрут документа продолжился дальше в
соотв. со схемой).

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Представление последовательности обработки документа
От: Figaro Россия  
Дата: 20.12.13 03:14
Оценка: 1 (1)
Все просто, задаёшь матрицу переходных вероятностей в бесконечномерном пространстве (не помню точно, в банахавом или в другом измеримом пространстве)... дальше пусть работает прога
avalon/1.0.433
Представление последовательности обработки документа
От: PetrS  
Дата: 20.12.13 01:37
Оценка:
Добрый день всем.

Имеется задача — обработать документ, т.е. провести документ по цепочке обработчиков. Не пойму, как лучше описать программно схему обработки. Т.е. необходимо задать, чтобы документ одного типа прошел по цепочке модулей 1, 2, 3, а, например, документ второго типа, по цепочке 2, 3, 4. Требование такое, чтобы описание схемы было несложным, плюс простота изменения, м.б. наглядность. Т.е. либо это XML, либо какой-нибудь WWF, или еще что-то. Другие требования: .NET, persistence (состояние и местонахождение документа в цепочке обработки должно сохраняться в базе данных). Подскажите в каком направлении смотреть.
Re[2]: Представление последовательности обработки документа
От: PetrS  
Дата: 20.12.13 02:41
Оценка:
Здравствуйте, dilmah, Вы писали:

D>марковскую цепь им заделай


Эм, пока не понимаю как это, но я посмотрю
Re[4]: Представление последовательности обработки документа
От: Vzhyk  
Дата: 20.12.13 09:20
Оценка:
12/20/2013 6:14 AM, Figaro пишет:

> Все просто, задаёшь матрицу переходных вероятностей в бесконечномерном

> пространстве (не помню точно, в банахавом или в другом измеримом
> пространстве)... дальше пусть работает прога
А матрицу вероятностей состояний куда потерял?
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Представление последовательности обработки документа
От: Figaro Россия  
Дата: 20.12.13 09:57
Оценка:
Матрица переходных вероятностей... Можно назвать и матрицей состояний, смотря кто у кого учился и по какой бумажке...
avalon/1.0.433
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.