编者按:今日博客由Icertis首席技术官Monish Darda编写,介绍公司如何使用Windows Azure和SharePoint Online,向客户提供可伸缩的合同管理和工作流程服务。
Icertis 合同周期管理(CLM)向企业管理者提供包括:运行,支持和对合同的周期报告的服务。合同及其相关的模板具有高度管理实体和可以运行几个月乃至几年的复杂的业务流程。
我们有一些有趣的要求——并不是独一无二的,但是作为一个组合整体,这将会是一个有趣的挑战。依靠灵活的部署架构,使 SharePoint Online和Windows Azure具有混合和完美部署。Windows Azure是一个必然决定——我们的客户希望微软的云产品可以拓展他们的需求和符合成本效益。Icertis只需要做的是借助微软的云服务建立企业解决方案!Icertis的合同周期管理软件就是一个建立在Windows Azure平台上的产品。
确定部署选择意味着我们需要在SharePoint设计工作流程(在SharePoint Designer中让用户自己设计工作流程,无需编写代码)并在Windows Azure上部署工作流程。在Windows Azure上运行Windows Workflow Foundation是明确的选择。一个很难回答的问题是,如何将复杂的事情按要求运行?在Windows Azure中工作流程服务的关键是:
运行在一个支持工作流上的,具有可高度扩展的和可用的并超过200,000个活跃合约工作流服务,仍有相当比例的工作流被定制。 声明,版本控制的工作流程 启用持久工作流实例,具有可靠的长时间运行的工作流支持(几个月或几年以上)
我们开始构想在Windows Azure上的工作流程。这样的话,如果有需要,我们可以选择转换到另非云端的工作流引擎,也为以后的托管工作流服务敞开大门。
(图片1)
合同生命周期工作流是自定义的并以XAML文件格式保存在SQL Azure管理和元数据库中。使用的Windows Workflow Foundation(WF)的基础设施,工作流的加载(混合)和编程执行是基于用户操作或系统事件的。一个自定义工作流以一个工作者角色托管运行并使用SQL Azure作为其持久性存储。由于是持续运行工作流实例,执行工作流工作者角色可以逐步扩展。在运行时通过增加工作者角色实例的数量,可以处理并发的工作流实例,从而提供弹性计算密集型的关键组件。
我们以状态机工作流形式写下工作流-- 合同的生命周期的理想比喻。自定义活动提供强大但是简单合同的生命周期声明,企业用户能够迅速涉及到状态机范式。
好了,事情立竿见影!我们可以快速部署和测试我们觉得非常复杂难以实现的工作流。一些有趣的监测代码,允许基于当前运行的工作流的执行特性来动态拓展。事实证明,这更高效节约。我们可以演示根据具体事件进行动态调整(例如,本月底,今年年初的时候,日历事件更新会触发数以千计的合同到期)。
(图片2)
计算机实例选择工作流服务原来是一项有趣的练习。工作流服务要计算机内存密集,因此我们为变化的工作量尝试使用不同的实例大小。当工作量变化时(混合的合同类型表示不同的工作量),同较大实例和极大实例相比,在缩放方面中等实例提供了更大的灵活性(因此成本较少)。这项练习证明实例大小选择影响价格,工作量的类型不仅是实例数量需要匹配,实例大小也需要匹配。对于工作量,对于工作流服务、提供最佳的缩放成本,中等(双核,3.5GB)电脑实例可获得最佳效果。
在我们所掌握的当中,现在有一个可扩展的工作流服务,sharepoint团队也能利用该服务来运行一些不可能在SharePoint Online沙盒环境运行的集成工作流。当然,我们也有我们的问题,尤其是在分布式事务(还不支持SQL Azure,某一天我打算参与这一有趣的主题),我们一切不能左右。我们预计需要数月的东西几周就运行完成了。这使得Windows Azure有趣:一点现成的思考可以产生巨大的回报。
下面是我们做一些东西帮助提高服务规模和效率:
Windows Azure 队列 通过使用队列移交长时间运行的工作流活动到其他服务,允许工作流需要
大量的响应和更少的资源。 Windows Azure 缓存 使用 Windows Azure 缓存服务帮助工作流在不牺牲数据完整性和减少数据库流量的情况下运行得
更快。我们使用 128 MB 缓存。 SQL Azure 工作流的持久存储区允许我们 (使用 SQL Azure 报告) 报告工作流的执行和合同状态。 Windows Azure存储 表存储是我们对于日志和工作流服务触发的审计事件的选择
需要注意的关键点是:
控制的可扩展性。工作流可用于作为一种在Windows Azure上同时保留的业务流程的声明和启用可扩展性的机制。在客户工作流活动中隔离开计算机和内存密集型任务可以更好地进行成本管理 长时间运行的工作流。长时间运行计算机密集型工作流可以利用 Windows Azure 的固有的
好处,同时还可保留声明式编程的优势。工作流也可以用于处理复杂的系统集成的挑战 计算实例选择。计算机实例大小的选择是工作量的一个功能,它除去了对内存和计算机需求的时间差异。
总而言之,它是一个伟大而有益的经验。并且它加深了我们的信念,Windows Azure有没被企业应用程序发掘的巨大潜力。成为早期采用者是很好的,我们期待与客户分享继续发现Windows Azure潜力的更多的实际经验。