我们需要构建一些需要相当高级的工作流功能的应用程序。计划是将数据存储在SQL Server中,使用Windows Workflow Foundation作为工作流引擎,并使用Flex或Silverlight等RIA技术构建前端。
我们已经设置了Sharepoint 2007,我们中的一些人(包括我)在创建自定义Sharepoint工作流程方面有一些经验,可以使用Sharepoint列表中的数据。
我的问题是,将Sharepoint用于工作流是否有意义,而实际数据是否存储在Sharepoint外部的单独数据库中?我们需要Sharepoint的任务,身份验证和电子邮件功能,但我们的数据模型有点复杂,所以我们宁愿不将数据存储在Sharepoint中。我们宁愿不从头开始使用Workflow Foundation,因为Sharepoint已经为我们提供了90%的功能。
有任何想法/建议吗?
答案 0 :(得分:1)
我认为这是使用SharePoint作为平台的一个很好的例子。我没有看到任何以你描述的方式使用它的概念问题。我将SharePoint视为一个开发平台。您可能想要记住的一件事是,如果您希望使工作流继续处理单独数据库中发生的事件,则可能必须更新外部程序中的工作流任务项。
答案 1 :(得分:1)
您的用例非常合适,而且SharePoint可以为其增添价值。我强烈建议使用SharePoint来托管您的工作流程。
我开发了许多SharePoint托管的WF工作流,我遇到的唯一真正问题是调用长时间运行的Web服务(异步操作),因为SharePoints WF主机对它可以侦听事件的外部提供程序的类型有一些限制从
我开发的解决方案(最初有点像黑客但最终对我的客户有一些价值)是创建一个位于SharePoint之外并将呼叫路由到远程服务的服务代理(WCF)并等待他们的回应。与进行异步调用并行活动并行创建与异步操作关联的SharePoint任务。然后,WF将停止OnTaskCompleted活动,该活动将释放WF资源并将状态保留为SQL。由于长时间运行的操作将事件返回状态更新或完成通知,因此外部服务将更新相关的SharePoint任务。一旦任务标记完成,WF就会脱水并继续执行。这种方法的巧妙之处在于我可以创建一个仪表板,显示SharePoint外部所有长时间运行的进程的状态。最后,我将所有这些内容打包成一个复合活动,这样就不会弄乱我漂亮的工作流程图。
答案 2 :(得分:1)
SharePoint非常适合这种情况。我建议使用业务数据目录(BDC)来访问外部数据源。它主要通过使您的数据源可搜索以及提供OOB Web部件来显示具有主子关系,过滤和丰富API的数据,从而提供巨大的好处。
我会警告不要让工作流程太复杂,而是使用较小的工作流程,InfoPath和用户操作将流程分解为多个阶段,以促进整个流程。这是SharePoint真正发挥作用的地方,因为您可以使用仪表板(如果对您的方案有意义)以及协作,批准等方式将流程阶段的可见性插入组织中的其他人...列表继续。
答案 3 :(得分:1)
我同意SP可以提供一个不错的WF引擎,但让我问这个......你在SharePoint中存储任何东西吗? (任务,数据源等)
我问,因为运行自己的WF引擎可能很简单(也更合适)。如果您正在运行所有本机WF功能,并且只需要一个引擎,那么您可以编写一个可以启动工作流程的快速控制台应用程序。
如果您在WF之外使用SP 任何,那么我绝对同意使用SP。