Следует ли использовать хост WF SharePoint для рабочих процессов, которые включают внешние (для SharePoint) источники данных? - PullRequest
1 голос
/ 11 февраля 2009

Нам нужно создать пару приложений, которые требуют довольно продвинутых функций рабочего процесса. Планируется хранить данные в SQL Server, использовать Windows Workflow Foundation в качестве механизма рабочего процесса и создавать интерфейс с использованием технологии RIA, такой как Flex или Silverlight.

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

Мой вопрос заключается в том, имеет ли смысл использовать Sharepoint для рабочего процесса, в то время как фактические данные хранятся вне Sharepoint в отдельной базе данных? Нам нужны задачи, аутентификация и функции электронной почты Sharepoint, но наша модель данных немного сложна, поэтому мы не будем хранить данные в Sharepoint. Мы не будем начинать с нуля с Workflow Foundation, потому что Sharepoint уже предоставляет нам 90% необходимой нам функциональности.

Есть мысли / советы?

Ответы [ 4 ]

1 голос
/ 11 февраля 2009

Я согласен, что SP может предоставить хороший WF-движок, но позвольте мне спросить это ... Вы что-то храните в SharePoint? (задачи, источники данных и т. д.)

Я спрашиваю, потому что может быть так же легко (и более уместно) запустить свой собственный движок WF. Если вы используете все встроенные функции WF и вам нужен только движок, вы можете написать быстрое консольное приложение, которое может запускать рабочие процессы.

Если вы используете SP для чего-либо за пределами WF, тогда я полностью согласен использовать SP.

1 голос
/ 11 февраля 2009

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

Я разработал множество рабочих процессов WF, размещенных на SharePoint, и единственной реальной проблемой, с которой я когда-либо сталкивался, было обращение к долго выполняющимся веб-службам (асинхронные операции), поскольку у хоста SharePoints WF есть некоторые ограничения на тип внешних поставщиков, которых он может прослушивать для событий. с.

Решение, которое я разработал (поначалу было чем-то вроде взлома, но в конечном итоге имело определенную ценность для моих клиентов), заключалось в создании прокси-сервера службы (WCF), который находился вне SharePoint и перенаправлял вызовы на удаленные службы. и ждать их ответа. Параллельно с выполнением этого асинхронного вызова параллельное действие создаст задачу SharePoint, связанную с асинхронной операцией. Затем WF остановится на операции OnTaskCompleted, которая приведет к освобождению ресурсов WF и сохранению состояния в SQL. Поскольку длительная операция будет вызывать события обновления состояния или уведомления о завершении, внешняя служба будет обновлять связанную задачу SharePoint. Как только задача помечена как выполненная, WF обезвоживается и продолжает выполняться. Отличительной особенностью этого подхода было то, что я мог затем создать панель мониторинга, которая отображала бы состояние всех долго выполняющихся процессов, происходящих вне SharePoint. Наконец, я упаковал все эти вещи в составное упражнение, чтобы оно не мешало моим симпатичным диаграммам рабочего процесса.

1 голос
/ 11 февраля 2009

SharePoint идеально подходит для этого сценария. Я бы предложил использовать каталог бизнес-данных (BDC) для доступа к внешним источникам данных. Это дает огромное преимущество, прежде всего, делая ваш источник данных доступным для поиска, а также предоставляя веб-части OOB для отображения данных с основными дочерними отношениями, фильтрацией и богатым API.

Я бы предостерег от слишком усложнения рабочих процессов, а вместо этого разбил бы процесс на этапы, используя меньшие рабочие процессы, InfoPath и действия пользователя, чтобы облегчить весь процесс. это то, где SharePoint действительно сияет, так как вы можете передавать видимость этапов процесса другим в организации, используя информационные панели (если это имеет смысл для вашего сценария), а также совместную работу, утверждения ... список можно продолжить.

1 голос
/ 11 февраля 2009

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

...