Подтвердить что ты не робот

Используя механизм рабочего процесса, механизм машинного перевода или переверните мой собственный?

Я в замешательстве. Я разрабатываю внутренний инструмент, основанный на Grails для моей компании. Одним из компонентов этого инструмента является простой трекер (функция Helpdesk). У меня есть объекты домена, такие как "Проблема", "Вопрос" и "NewFeature". Каждый из этих классов домена имеет разные рабочие процессы.

Моя первоначальная идея состояла в том, чтобы свернуть мою собственную функцию конечного автомата внутри объектов домена. Затем я googled для двигателей государственных машин и механизмов документооборота. И теперь я потерян.

Я хотел бы получить комментарии о том, как другие разработчики решили эту проблему. Используете ли вы Drools, Jbpm, Activiti? Или какой-нибудь более простой механизм машинного механизма?

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

Я использую Grails для этого, но, конечно, легко использовать библиотеки Java.

4b9b3361

Ответ 1

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

Кроме того, механизмы рабочего процесса обычно дают вам возможность определять бизнес-транзакции и правила, которые очень долго выполняются. Например, у вас может быть рабочий процесс для авторизации заказов на покупку, где первый шаг заключается в том, чтобы ввести некоторую информацию о том, что нужно приобрести, тогда у вас есть правила вдоль линий, если покупка за меньшие 100 долларов в порядке, сразу, если ее между $100 и $2000 линейным менеджером может быть в порядке, если он больше отправляет его кому-то еще для утверждения... и т.д. Эти типы бизнес-правил, как правило, меняются с годами по мере увеличения сумм или бизнес-политики для компании изменение. Поэтому имеет смысл использовать механизм рабочих процессов в этих сценариях. Другими хорошими примерами сложных бизнес-операций, которые могут извлечь выгоду из механизма документооборота, являются страховые претензии, авторизация кредита или ипотеки, оценка заявки на кредит от клиента... и т.д. Эти бизнес-транзакции, как правило, проходят через несколько человек/отделы и занять несколько часов до нескольких дней или недель.

Механизмы правил хороши для извлечения сложного, но изменяющего правила из приложения. Допустим, вы являетесь интернет-продавцом, который поставляется клиентам в США, Канаде, Великобритании, Германии и Франции. Вы обязаны взимать налоги с продуктов, которые вы продаете в своем интернет-магазине, но правила расчета налогов отличаются от страны к стране и от провинции к провинции внутри страны. Также некоторые вещи освобождаются от налога в одной провинции, но не в других провинциях. Механизмы правил отлично подходят для этих типов сложных бизнес-правил, которые могут меняться всякий раз, когда правительство меняет свою налоговую политику. Модификаторы правил могут дать вам ответ правильно, как вам нужно перейти к движку правил, я говорю, что я хочу запустить правило № 10, и вот входы для правила № 10 x, y, z, и вы получите ответ.

Основные отличия между механизмом правил и механизмом документооборота - это то, что механизм правил не отслеживает состояние транзакции, он должен быть безстоящим, работающим только на входных данных, которые вы ему предоставляете. Механизм Workflow является statefull, он должен знать, что текущее состояние является рабочим процессом и должно сохранить это состояние в базе данных. Двигатели Workflow также ждут ввода от внешних источников, таких как люди или системы.

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

Ответ 2

Я не могу согласиться с ответом выше AMS, и еще одна вещь, которую я хочу добавить, - это для большинства сценариев, использование механизма workflow/rule является излишним и ненужным. KISS (Keep It Simple and Stupid) всегда лучший выбор. и Оккам Бритва также говорит: "Сущности не должны умножаться без необходимости"

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

Итак, есть ли руководство, когда следует использовать рабочий процесс или нет? честно говоря, я не знаю, но я знаю, что это определенно не мы должны использовать рабочий процесс всякий раз, когда логика логики находится в потоке. потому что если вы это сделаете, каждая логика biz может быть представлена ​​в блок-схеме.

Наконец, одна из моих самых правильных вещей, которые я делал в прошлом году, - это редизайн приложения для замены Drools на groovy script, что делает всю систему более простой, простой и быстрой.