ViewFUNCTION 智慧协作管理平台系统架构概述
❏ 什么是 ViewFUNCTION 智慧协作管理平台
随着企业的发展,会产生各种类型的工作流程,这些流程会交织在日常业务之中以确定业务运营的步调;而伴随着企业业务的增长,又会给企业带来海量的电子内容资产,这些电子内容资产互相交织在一起并与企业的流程息息相关。为了满足企业的多种业务需求,需要有一个统一的平台来管理内容和流程;通过自动化、简化和优化流程与内容之间的关系,来提高流程绩效、缩短循环周期时间,提升企业生产力。
ViewFUNCTION 智慧协作管理平台是新一代的、集成式企业工作流程处理
、业务内容管理
以及团队协作应用
系统。它结合了企业内容管理架构以及全面的业务流程管理框架,能够满足企业的各种复杂内容和流程管理需求。通过使用 ViewFUNCTION 智慧协作管理平台,可以方便快捷的构建功能强大的企业业务活动管理应用。同时通过独特地耦合流程、内容,以及与现有 IT 环境进行集成,ViewFUNCTION 智慧协作管理平台可以高效地为那些每天需要制订关键业务决策的人员提供内容支持。
❏ 系统架构概述
ViewFUNCTION 智慧协作管理平台主要使用 Java EE
技术开发服务层, JavaScript
技术开发各类 Web 端应用。前后端统一使用 REST Web Service
进行数据通讯。
为实现系统中各种复杂的业务功能,平台内部按照不同的业务功能分为若干独立的业务服务层子功能组件,每个组件提供专门满足某一特定领域的子业务需求所需的全部功能特性。平台的整体业务功通过组合使用各个子功能组件的功能特性而实现。各个业务服务层子功能组件之间相互独立,所有子功能组件都可以独立运行,为各类外部调用应用系统提供相关领域的全部功能特性。
下图为 ViewFUNCTION 智慧协作管理平台架构框图:
➜ 平台数据存储层结构
根据不同的业务需求以及功能扩展的需要,在 ViewFUNCTION 智慧协作管理平台中使用了多种不同的数据存贮技术和产品来保存业务数据和支撑业务功能需求。以下是这些技术和相应产品的简要说明:
◼︎ RMDB - MySQL( www.mysql.com )系统中使用关系数据库MySQL
存储流程系统中的流程节点状态数据,消息系统中的持久化邮件数据和日程调度系统中的定时任务记录数据。
◼︎ NoSQL - MongoDB( www.mongodb.com )系统中使用 NoSQL 数据库MongoDB
存储流程系统中的结构化流程数据,附着在流程上的非结构化文件内容,以及其他的所有和内容关系系统相关的数据。
◼︎ LDAP - ApacheDS( directory.apache.org )系统中使用 LDAP 服务器 ApacheDS存储所有的活动空间中的人员基本信息和登录信息以及执行安全策略管理。
◼︎ AMQP - Apache Qpid( qpid.apache.org )系统使用 AMQP 消息队列服务器 Apache Qpid 来存储中转存储所有执行异步通讯的临时数据和信息。
➜ 平台业务服务层子功能组件
平台内部按照不同的业务功能分为多个业务服务层子功能组件,每个子功能组件都是以一个 Jave EE
Web Application
的形式统一的运行在同一个Web Application Container
中。在 ViewFUNCTION 智慧协作管理平台的默认安装中使用 Apache Tomcat(tomcat.apache.org )做为 Web Application Server(Container)。每一个子功能组件都以一个独立的 Application 的形式部署在 Tomcat 中。以下是各个业务服务层子功能组件的简要说明:
◼︎ VFBAM Service Application 通过直接在 Java 运行时环境中调用核心中央活动引擎 API 的方式提供了对业务活动空间
进行业务操作的功能。VFBAM Service Application 提供了一套包含了所有针对业务活动空间
进行操作功能的 REST API
供外部应用系统调用。通过调用这套 REST API, 可以实现例如 启动业务流程实例;查询、分配、完成流程节点任务,为流程添加文件 等各种业务功能。
◼︎ VFBAM Admin Application 通过直接在 Java 运行时环境中调用核心中央活动引擎 API 的方式提供了对业务活动空间
进行管理的功能。VFBAM Admin Application 提供了一个 Web Application 应用,通过在 Web 浏览器中使用该应用。用户可以完成针对特定业务活动空间
的所有管理工作(例如部署、更新业务流程定义;管理参与者,角色,角色队列;实时处理运行中流程实例 以及 实时对流程运行进行内容管理 等)。
◼︎ VFBAM Client Application ViewFUNCTION 系统的所有功能都以 REST API
的形式提供给外界应用系统使用。通过组合使用各类 REST Service,可以开发出使用 ViewFUNCTION 平台做为后端的各类应用。VFBAM Client Application 是 ViewFUNCTION 平台客户端应用的官方参考实现。它是一个使用 Javascript
技术编写的纯 WEB 客户端应用。它组合使用了平台提供的全部 REST Service,为平台的所有功能提供了操作界面。
◼︎ Message Engine Service 提供平台系统中所有和消息通讯相关的业务功能。Message Engine Service 使用 Apache Qpid 消息队列技术提供了一个泛用的异步数据交换机制,能够通过系统配置来动态添加消息主题供外部系统调用。针对 ViewFUNCTION 系统的信息和通知功能,Message Engine Service 提供了专门的实现机制,使用 MySQL 将消息队列中的异步临时存储和中转数据内容,持久化存储为ViewFUNCTION 系统的信息和通知,并提供 REST API
供其他业务服务层功能组件使用。Message Engine Service 本身是一个可以脱离 ViewFUNCTION 体系独立运行的产品。其功能的实现不依赖于 ViewFUNCTION 系统的其他业务服务层功能组件。
◼︎ Participant Management Service 提供平台系统中所有和用户身份信息管理和登陆认证相关的业务功能。所有功能的操作都以REST API
的形式提供给外界应用系统使用。Participant Management Service 使用 LDAP
规范存储和管理用户身份信息。并通过使用 LDAP 服务器自身的用户身份验证机制和安全策略来执行ViewFUNCTION 平台的用户登录管理。默认安装下Participant Management Service 使用 ApacheDS
作为后端的 LDAP服务器。通过使用配置文件中的 LDAP 属性映射,Participant Management Service 也可以透明切换使用任何其他的 LDAP 服务器作为用户身份管理的后端数据源。Participant Management Service 本身是一个可以脱离 ViewFUNCTION 体系独立运行的产品。其功能的实现不依赖于 ViewFUNCTION 系统的其他业务服务层功能组件。
◼︎ Scheduler Management Service ViewFUNCTION 平台的很多功能依赖于定时任务调度和日程提示。Scheduler Management Service 使用 Quartz (www.quartz-scheduler.org )技术构建了定时任务调度系统供其他服务层功能组件调用,定时任务调度数据使用 MySQL持久化存储。在目前的 ViewFUNCTION 平台功能范围内,只有当业务活动定义中使用了任务截止日期提醒功能时才需使用 Scheduler Management Service。
ViewFUNCTION 智慧协作管理平台用户客户端介绍
❏ 用户客户端程序基础功能概述
ViewFUNCTION 智慧协作管理平台用户客户端程序是一套使用Javascript技术开发的Web应用程序。它是企业的业务人员在日常的业务工作中使用的主要工具,具有以下主要业务功能:
◼︎ 启动、操作业务流程 在业务协同处理平台中能够定义各种复杂的业务活动,这些业务活动可以包含多个活动任务,涉及多个业务角色。用户可以按需要启动这些预定义的业务活动;浏览、处理、返还或转发各种与自己工作角色相关的活动任务;为活动或任务添加备注,以及查询各种业务活动的历史和运行状态。
◼︎ 处理业务活动数据 用户可以按照业务定义为每个业务活动任务添加预定义的各种结构化(文本,日期,数字,数组等)或非结构化(二进制数据)的业务任务数据。还可以在每个业务活动中添加文件夹目录结构和日常业务活动中需要的各种文件例如图片,word,excel,pdf 等。这些目录结构和文件可以在业务活动涉及的所有用户之间共享。
◼︎ 管理企业业务文件 智慧协作管理平台包含企业知识库的功能,用户可以按照企业,部门和个人等不同的范围来组织、存储、共享或浏览各种业务所需的文件和文件夹目录结构。此外还可以在知识库中使用全文检索功能来查询文件。
◼︎ 发送接收业务活动消息 智慧协作管理平台内置了消息服务机制,用户可以使用业务操作客户端来查看各种与本人和部门相关的业务活动消息,并且可以给企业中的各个部门和人员发送业务活动消息。
在操作界面组织形式上,客户端系统由以下独立的视图构成:
信息中心: 用户的所有消息,通知以及待办事项的处理中心。
我的工作: 集中显示用户以及部门的所有待办任务,是用户任务的汇总中心。
工作日程表: 以日历的组织形式展现用户的待办工作任务。
文档中心: 企业、部门以及个人的文档知识库系统。
任务详情: 用户详细工作任务的处理中心。
➜ 信息中心视图
信息中心视图中集中显示了用户的所有消息,接收到的通知以及待办的任务。用户可以在信息中心中完成以下操作:
处理消息:查看用户接收到的所有消息。过滤查询,阅读,回复,转发,删除和新建消息。
处理通知:查看用户接收到的所有系统通知。过滤查询,阅读,删除和处理通知
◼︎ 下图为用户消息列表界面:
◼︎ 下图为阅读消息界面:
◼︎ 下图为系统通知列表界面:
➜ 我的工作视图
我的工作视图中集中显示了用户的所有待处理任务的详细信息和所有用户所属部门的待处理任务。以及其他若干处理业务活动所需的工具。用户可以在我的工作中完成以下操作:
启动新业务活动: 查根据业务需要启动新的业务活动。
处理待办任务: 处理、返还或重新分配自己的待办任务。查看、接受或分配部门的待办任务。
处理常用文档: 创建、下载、浏览或删除用户工作中常用的文件和文件夹。
与同事交流: 查找业务联系密切的同事并且与其交流信息。
◼︎ 下图为用户和部门待办任务列表界面,用户部门同事列表界面:
◼︎ 下图为用户和部门待办任务列表界面,用户常用文件列表界面:
➜ 工作日程表视图
工作日程表视图中以日历的形式集中显示了用户以及用户所属的部门的所有待处理任务。用户可以在工作日程表中完成以下操作:
查看任务: 以天,周,月的日历形式查看待完成的工作任务。
任务过滤: 以日期,业务活动类型,部门等条件过滤显示工作任务。
◼︎ 下图为用户工作日程表天工作任务界面:
➜ 任务详情视图
任务详情视图中包含了一个特定工作任务的所有详细信息,用户可以在任务详情视图中完成以下操作:
处理任务数据: 更新工作任务的业务数据,设定工作任务的状态以及后续任务的流转。
处理业务活动附件文档: 添加,删除,下载,预览工作任务所属业务活动中的附件文档以及目录。
获取业务活动协同信息: 查看业务活动中的所有业务参与人员。查看业务活动的历史处理记录。查看,添加业务活动以及工作任务中的备注。
◼︎ 下图为任务详情和任务相关业务活动附件界面:
◼︎ 下图为任务详情和任务相关业务活动附件界面中预览Office Excel格式的文档:
◼︎ 下图为任务详情和任务备注界面:
◼︎ 下图为任务详情和任务参与人界面:
➜ 文档中心视图
文档中心视图中集中显示了企业和用户的所有文档,是企业的知识库系统的展示界面。用户可以在文档中心中查询、下载、预览、锁定、添加、更新、删除用户个人,用户所属部门以及企业的业务文档以及文件夹。
◼︎ 下图为个人文档列表界面:
◼︎ 下图为预览图片格式文件界面:
◼︎ 下图为预览PDF格式文件界面:
◼︎ 下图为预览Open Office格式文件界面:
❏ 用户客户端程序功能扩展
ViewFUNCTION 智慧协作管理平台用户客户端包含有插件系统。可以以插件的形式添加新的功能模块或调用其他外部IT应用界面。并在操作界面中无缝的展示出来。添加插件只需编写少量集成和配置代码,无需改动已有模块的代码逻辑。
◼︎ 下图为使用插件机制直接集成外部第三方网站:
◼︎ 下图为使用插件机制,通过Javascript和REST技术扩展系统基础功能(添加用户管理模块):
◼︎ 下图为使用插件机制,通过Javascript和REST技术集成第三方应用(使用现有系统外观样式创建外部知识管理应用):
ViewFUNCTION 智慧协作管理平台系统管理客户端介绍
ViewFUNCTION 智慧协作管理平台系统管理客户端程序是一套使用Vaadin技术开发的Web应用程序。它是系统管理员执行各种系统管理任务所使用的主要工具。主要具有以下主要功能:
◼︎ 活动管理 管理工具客户端中包括参与者管理、角色管理、活动定义管理、活动登记表管理、角色队列管理等业务活动管理功能。使用这些活动管理功能系统管理员可以以图形化的方式完成创建活动参与者与角色、部署流程定义、创建角色队列、查询活动运行状态等各种任务。
◼︎ 流程管理 通过使用流程管理功能,系统管理员可以便捷的查询和操作各个不同业务活动定义中的工作流实例以及已结束了的流程的历史信息。
◼︎ 内容管理 使用内容管理功能,系统管理员可以浏览、查看、添加、修改和删除与各种业务活动相关的所有业务数据,业务属性以及业务文件,对数据对象进行版本控制,锁定控制和链接控制。
◼︎ 系统配置 使用系统配置功能,系统管理员可以设定、配置和监控业务活动管理器系统中的各种功能参数。例如配置流程定义的步骤编辑器、配置内容存储库,流程存储库和消息服务的系统参数等
◼︎ 下图为系统用户管理界面,通过该界面系统管理员可以执行各类与系统用户相关的操作:
◼︎ 下图为系统角色管理界面,通过该界面系统管理员可以执行各类与业务角色(部门)相关的操作:
◼︎ 下图为系统业务活动(流程)定义管理界面,通过该界面系统管理员可以设定各类业务流程配置信息:
◼︎ 下图为系统业务活动(流程)数据项管理界面,通过该界面系统管理员可以根据业务需要为各类业务流程配置数据属性信息:
◼︎ 下图为系统业务活动流程定义管理界面,通过该界面系统管理员可以管理业务活动的流程图定义:
◼︎ 下图为系统业务活动附加属性管理界面,通过该界面系统管理员可以管理业务活动的各类全局与局部的基础元数据信息:
ViewFUNCTION 智慧协作管理平台中央活动引擎概述
❏ 什么是 中央活动引擎(Central Activity Engine)
ViewFUNCTION 系统平台使用了若干基于 Java 技术的核心功能组件,中央活动引擎(Central Activity Engine)是其中最重要的组件,它通过提供 Java API
的方式实现了所有 ViewFUNCTION 系统平台中与业务流程管理以及企业内容管理相关的功能支持。
下图为中央活动引擎在 ViewFUNCTION 平台中与其他组件的系统交互图:
在 ViewFUNCTION 平台中中央活动引擎(Central Activity Engine)是以 Java 类库的形式存在的。平台中的 VFBAM Service Application
和 VFBAM Admin Application
通过使用 JAVA API 调用的方式使用中央活动引擎来处理流程和内容相关的数据。中央活动引擎本身也是通过 JAVA API 调用的方式使用 Central Process Repository
处理 流程相关操作,使用 Central Content Repository
处理内容相关的操作。
❏ 中央活动引擎(Central Activity Engine)逻辑模型概述
为了对业务活动中的流程信息和内容信息提供透明无缝的集成操作,中央活动引擎设计了专门的领域逻辑模型。通过使用 Java API 对这些领域逻辑模型进行操作,可以编程实现 ViewFUNCTION 平台中的所有相关功能。在中央活动引擎的业务领域逻辑模型中最基础的模型对象是 Activity Space(活动空间)
,所有的其他模型对象都运行在 Activity Space 中。Activity Space 对应了一个使用 ViewFUNCTION 平台的最小单元的业务组织。根据在平台系统中运行时的具体作用,其他的领域逻辑模型可分为业务活动定义相关领域逻辑模型
和业务活动运行相关领域逻辑模型
两类。
➜ 业务活动定义相关领域逻辑模型
中央活动引擎中与业务活动定义相关的模型对象共有以下三类。它们共同定义了在一个 Activity Space 中包含的业务活动的具体运行细节:
◼︎ Participant(参与者) 参与者代表了一个活动空间(业务组织)中所有参与业务运行的真实人员。每一个参与者都拥有一个全局唯一的ID。参与者是执行业务活动定义中的节点任务的真正主体。在实践中可以认为角色类似于一个企业组织中的一个业务人员。
◼︎ Role(角色) 角色代表了一个活动空间(业务组织)中按照特定的业务规则划分而具有共同特性的一组参与者。通常情况下角色是用来与业务活动定义中的节点任务进行关联的逻辑模型。在实践中可以认为角色类似于一个企业组织中的一个部门。
◼︎ Business Activity Definition(业务活动定义) 业务活动定义通过使用工作流引擎的流程定义技术来表示具体的流程运行的节点任务跳转逻辑以及在整个流程中和各个流程节点中可以使用的数据项目的定义。
下图为业务活动定义相关领域逻辑模型之间的相互关系:
在一个特定的 Activity Space 中可以包含有任意数量的Participant(参与者)
,Role(角色)
以及Business Activity Definition(业务活动定义)
。一个Participant(参与者)可以隶属于任意数量的Role(角色)。每一个Role(角色)都可以关联到任意Business Activity Definition(业务活动定义)中的任意任务节点上。同时根据特定的业务需求也可以将Participant(参与者)与任意Business Activity Definition(业务活动定义)中的任意任务节点进行关联。
为了在实践中使用 ViewFUNCTION 平台,必须首先按照以下步骤定义好所需的业务活动定义相关领域逻辑模型
- 创建 Activity Space(活动空间)。
- 在 Activity Space(活动空间)中根据业务组织中的行政或业务规则创建所需的 Role(角色)。一般情况下角色与一个业务组织中的业务部门一一对应。
- 在 Activity Space(活动空间)中根据业务组织中的人员信息创建所需的 Participant(参与者)。一般情况下一个参与者与业务组织中的一个自然人相对应。
- 根据企业的行政或业务规则将所有的Participant(参与者)添加到他所属的 Role(角色)中。一个参与者可以隶属于任意数量的角色。
- 根据业务需求设计并部署具体的Business Activity Definition(业务活动定义)。在业务活动定义中各个流程任务节点相关的人员或部门必须与活动空间中已经定义过的角色相对应(
关联
角色与流程任务节点)
➜ 业务活动运行相关领域逻辑模型
当业务活动定义相关领域逻辑模型数据在活动空间中定义完毕后就可以创建已经部署了的业务活动定义的运行时实例。在运行中活动空间中会同事存在数量众多的各种不同业务活动定义的运行时实例。每个业务活动实例上还包含若干与角色或参与者相关的业务活动节点任务。为了按照业务需求获取这些数据,需要使用业务活动运行相关领域逻辑模型。
中央活动引擎中负责在平台运行时处理具体业务操作的模型对象共有以下三类。它们共同定义了如何在一个 Activity Space 中获取特定业务活动实例或业务活动流程任务节点的操作方式。
◼︎ Participant Task(参与者任务) 每一个参与者都与一个特定的参与者任务模型对象相对应,通过使用参与者任务模型对象可以获取到一个特定的参与者在活动空间中所有正在处理中的业务活动节点任务。
◼︎ Role Queue(角色队列) 角色队列与若干个特定的角色相互关联,通过使用角色队列模型对象可以获取到与它相关联的所有角色在活动空间中所有等待处理的业务活动节点任务。
◼︎ Roster(活动登记表) 活动登记表与若干个特定的业务活动定义相互关联。通过使用活动登记表模型对象可以获取到与它相关联的所有业务活动定义在活动空间中正在运行中的业务活动实例。
下图为业务活动运行相关领域逻辑模型之间的相互关系:
当一个Business Activity Definition(业务活动定义)相关的业务活动实例创建之后,根据该业务活动定义中的流程设计,会自动生成若干流程任务节点。如果在流程设计中任务节点的处理者是角色,那么这些任务节点被称为待处理角色任务
。当任务节点被分配给具体的执行人(参与者)后,这些任务节点则被称为参与者工作任务
。
在一个活动空间中每一个Participant(参与者)都有一个对应的Participant Task(参与者任务)
与之关联。通过使用Participant Task(参与者任务)对象可以获取到一个参与者在活动空间中所有正在处理中的参与者工作任务
列表,可以通过遍历该列表处理参与者正在工作中的任务节点。
Role Queue(角色队列)
是用来获取与特定角色相关的待处理角色任务
的模型对象。在一个特定的 Activity Space 中可以包含有任意数量的Role Queue(角色队列)。每一个Role Queue(角色队列)都可以与任意数量的Role(角色)相关联(同一时间一个角色可以与多个角色队列相关联)。使用中可以通过角色队列模型对象获取到所有与该模型相关联的Role(角色)的待处理角色任务
列表。
Roster(活动登记表)
是用来获取业务活动实例本身的模型对象。在一个特定的 Activity Space 中可以包含有任意数量的Roster(活动登记表)。每一个Roster(活动登记表)都可以和任意数量的Business Activity Definition(业务活动定义)相关联(但是同一时间一个业务活动定义只能与一个活动登记表相关联)。使用中可以通过角色队列模型获取到所有与它相关联的业务活动定义的运行中实例。
在实践中推荐使用以下方式在客户端业务系统中操作 业务活动运行相关领域逻辑模型
:
- 在客户端系统中,用户登录系统,使用与之对应的Participant(参与者)模型来获得相关联的Participant Task(参与者任务)。通过使用参与者任务模型对象来获取该用户所有待处理的工作中任务。
- 根据业务需求在活动空间中创建若干Role Queue(角色队列),并将所有的Role(角色)与之关联。之后在客户端系统中,用户登录系统,使用与之对应的Participant(参与者)模型来获得它所属于的所有Role(角色),再根据Role(角色)获得相关联的Role Queue(角色队列)。最后通过操作这些Role Queue(角色队列)模型对象来获取所有该用户在业务定义中可以访问到的待处理角色任务。
- 根据业务需求,如果需要获取某些特定Business Activity Definition(业务活动定义)的所有运行中实例。首先在活动空间中创建Roster(活动登记表)并将需要获取的Business Activity Definition(业务活动定义)与之关联。之后在客户端系统中操作活动登记表模型对象来获取所需的业务活动实例。
➜ 系统功能模块项目
功能模块项目地址
平台基础服务系统(https://github.com/wangyingchu/ServiceApplication_viewfunction)
平台用户客户端(https://github.com/wangyingchu/ClientApplication_viewfunction)
平台系统管理客户端(https://github.com/wangyingchu/AdminApplication_viewfunction)
中央活动引擎(https://github.com/wangyingchu/CentralActivityEngine_viewfunction)
中央流程存储库(https://github.com/wangyingchu/CentralProcessRepository_viewfunction)
中央内容存储库(https://github.com/wangyingchu/CentralContentRepository_viewfunction)