1.1  概述

在企业中,组织是为了完成企业目标而形成的具有特定结构、分工协作的团队。组织模型就是用来定义企业的组织形式的模型,它以职责、权限的形式定义了企业成员、企业各个部门的作用与任务,同时提供灵活的结构以适应不同的企业或企业中不同的组织结构。

组织模型是业务模型的重要组成部分和基础,它是企业中组织机构计算机化的抽象定义,对应于一个业务模型,其组织模型是唯一的。X5平台中的组织机构模型的核心是组织(org)【注:组织(org)是一个泛化的机构概念,它可以是机构(ogn)、部门(dpt)、岗位(pos)、人员成员(psm)等形式】、人员(person)和角色(role),通过这三个核心元素就可以完备地描述组织机构,如图6.1。角色是权限的集合,角色能分配到组织(org)上。

10

图6.1  组织构成图

说明:

  • 人员(person):人员分配到相关的组织后才具有相关的功能和数据权限(即角色),分配到组织下的人员称之为人员成员,一个人员可以分配到多个组织单元从而形成多个人员成员。
  • 组织(org)只是一个泛化的抽象概念,组织单元可以从组织中继承出各种具体的组织,并扩展各个具体的属性。目前系统的组织包括:机构、部门、岗位、人员成员。
  • 组织具有自动继承的能力,子组织自动继承父组织的所有权限。
  • 角色只能授给组织。

企业的经营活动是由多个业务功能【业务功能:业务过程中的业务环节】组成的,业务功能首先分配到组织模型中的角色上,也就是说角色拥有了哪些业务功能,然后将角色分配给组织,从而形成业务分工即组织拥有业务功能。最后由组织模型中的人员登录业务运行平台,以人员成员的身份运行业务功能,实现企业经营活动。在这些业务功能中,有些是可以独立执行的,而大多是根据其逻辑关系串接组合在一起,形成一系列的经营过程,即业务流程,人员通过运行业务功能借以启动、执行、控制流程,最终实现企业的经营过程的运作。

11

图6.2  组织模型与模型体系各个部分的关系图

1.2  机构

机构(ogn)是对企业中各种单位的抽象,是组织(org)中的一种表现形式,机构是一个容器,它可以包含多个子组织。

机构可以被分配角色,机构的角色可以被它的子组织继承。

1.3  部门

部门(dpt)对应于企业的静态结构划分,由企业的实际部门设置情况来决定,是以传统的面向职能或者现在流行的面向过程与客户方式对机构进行的划分,是机构的主要组成部分。例如:某公司的行政、销售、技术等部门,以及各个科室等等,都可以认为是部门。

对应着企业的实际经营活动,部门下可以设置子部门和分配岗位。部门不能独立存在,必须从属于机构或上级部门。

1.4  岗位

岗位(pos)是组织(org)的一种特殊形式即一种组织单元。岗位具有组织的所有特性。岗位是组织中对具有特定分工组织单元的抽象,如:一个项目组,可以出现“项目经理”、“开发工程师”、“测试工程师”等岗位;在岗位下的人员同时就拥有了岗位所具备的所有功能及数据权限(即拥有了岗位的所有角色)。

1.5  人员

人员(person)–客观存在,在组织中从事具体工作的最小个体。将人员分配到组织机构中任何组织(org)下,形成一个新的组织单元,即人员成员(psm)。在组织模型中,只有成为人员成员才能使他(她)承担起相关的职责,实现他(她)的使命。人员登录业务运行平台后,只能以人员成员的身份运行系统,才能实现其特定的职责。如果登录人员承担了多个职责(对应多个人员成员),那么在处理工作上,不同的功能会根据功能的环境选择和本功能对应的人员成员。

12

图6.3  人员列表界面图

13

图6.4  人员详细信息界面图

1.6  角色和授权

角色(role)–指应用领域内一种权力和责任的语义综合体,可以是一个抽象概念,也可以是对应于实际系统中的特定语义体,比如组织内部的职务等。其本身并不能代表权限的大小,只是权限的集合,可以被用来分配给组织(org)。权限只能通过角色分配给到组织(org),不能被直接分配。

角色作为组织 (org)与权限(permission)的代理层,解耦了权限和组织机构的关系,所有的授权应该给予角色而不是直接给组织机构。

角色继承就是角色获得已有角色(被继承者)的所有权限。

角色分配就是将角色分配给组织,使组织获得相应的权限。

权限(permission)描述了对资源的访问和操作所具有的能力。权限可以分为功能权限和数据权限。功能权限是指约束角色对功能的访问或功能中动作的访问;数据权限是指约束角色对数据访问。

14

图6.5   角色列表

 15

图6.6  授权

1.6.1  权限

权限分两种:功能权限和数据权限。

权限设置中,有三个关键的参数:业务过程(process)、业务功能或业务环节(activity)、业务动作(action)。

功能权限是指能够执行哪引些功能或动作,其中,process必须是具体的业务过程;activity可以是具体的业务功能或“*”(表示拥有相应业务过程下所有业务功能); action可以为空,表示没有action的权限,也可以是“*”表示拥有相应业务过程下某个或某些业务功能所有action的权限。

数据权限分为参数权限和语义权限两种,参数权限是指绑定到具体参数的数据权限,参数权限必须指定具体的process、activity、action,以及需要绑定的参数名。语义权限是指指定名称的可在所有的action内使用的权限,语义权限的process、activity和action的名称必须为“*”。

1.7  管理权限

管理权限定义了组织单元所能管理的下属范围,即定义哪些组织单元成为它的下属。管理权限体现了组织单元的行政职能。

在系统中,可以分配管理权限的组织单元类型有:人员成员;被分配的管理权限中可以包括的组织单元类型有:机构、部门、岗位和人员成员。

管理权限包括组织管理权限和业务管理权限。

组织管理权限: 描述组织上的上下级关系(如:对于组织上的下级,上级可以对它进行工作或任务的分配,或者再给它分配下级),它定义的下属称为组织下属。

业务管理权限: 描述的是业务上的分管,即业务上的下属,提供了对业务监控、上下级业务管理的支持,业务管理权限定义的下属称为业务下属。

例如:某部门经理,他的组织上的下属为部门A(组织管理权限),此外,他还分管部门B的销售业务(业务管理权限),即部门B 是他业务上的下属。业务管理权限是通过给管理权限加上一个业务类型实现的,此业务类型代表了管理权限的业务意义。

组织单元的下属范围:包括管理权限中定义的组织单元及其下级组织单元。如:对人员成员A分配的管理权限中包含机构B,则机构B及其下级的所有部门、岗位、人员成员都将成为人员成员A的下属。

16

图6.7  管理权限

1.8  分级授权

权限的分级授权,是指对管理者已有的权限逐级往下分配,即组织单元把自己管理的角色分配给组织下属,而组织下属又可以把获得的角色分配给它自己的组织下属,依此类推,逐级向下分配。

17

图6.8  分级授权

1.9  组织机构管理的分级

是指对当前登录者所能管理的组织机构进行新增、删除、修改和将自己所能管理的组织机构成员分配给下属组织成员。

所涵盖的功能包括:组织管理-分级 、授权管理-分级,分级管理-分级,业务管理权限-分级。

1.10  权限管理的分级

是指当前登录者将所能管理的角色授权给其能管理的组织成员,或分配给其所能管理的人员成员管理。

所涵盖的功能包括:授权管理-分级,分级管理-分级,业务管理权限-分级。

1.11   代理

代理是指某人在他人的授权下,以自己的口令登录系统并以他人的身份代替他人处理他人许可范围内的事务。其中,被代替的一方称为被代理人或者委托人,代替方称为代理人。代理人获得委托人的授权及其能够处理事务的范围,是委托人通过“代理设置”将自己拥有的角色、功能或某个模块下的功能代理给代理人。委托人可以通过“代理设置”功能一次性回收所有代理出去的角色、功能或某个模块下的功能。代理设置中还可以设定代理有效时间段,只有在设置的时间内,代理关系才成立。

18

19

图6.9  分级授权

1.11.1   代理的收回

代理的收回是指委托人或者被代理人取消代理人对自己代理出去的角色、功能或某个模块下的功能,并保留代理的历史记录。代理收回后,代理人和被代理人的代理关系取消,被代理的人员成员的岗位职责重新由被代理人来承担。

1.12   组织机构相关本体定义及其物理表结构

  • 概念SA_OPOrg中的关系sCode的规则是:

同级组织的sCode不重复;

概念SA_OPOrg中的关系sFCode的规则是(用正则表达式描述):

(/A(/B)*/)?C含义为:由当前组织的所有祖先到当前组织的sCode由“/”进行连接而成,其中:A表示最顶层的sCode的值,C表示当前的sCode,B表示除最顶层和当前的组织节点的sCode,

例:/JUSTEP/X5CPSYB/KFYZ

  • 概念SA_OPOrg中的关系sFID的规则是(用正则表达式描述):

(/A(/B)*/)?C含义为:由当前组织的所有祖先到当前组织的“SID + ‘.’ + sOrgKindID”由“/”进行连接而成,其中:A表示最顶层的“SID + ‘.’ + sOrgKindID”的值,C表示当前的“SID + ‘.’ + sOrgKindID”,B表示除最顶层和当前的组织节点的“SID + ‘.’ + sOrgKindID”对于人员成员的SID,有特殊的规则:“当前人的SID + ‘@’ + 父组织的SID + ‘’”

例:/JUSTEP.org/X5.dept/KF1.dept

  • 概念SA_OPOrg中的关系sFName的规则是(用正则表达式描述):

(/A(/B)*/)?C含义为:由当前组织的所有祖先到当前组织的sName由“/”进行连接而成,其中:A表示最顶层的sName的值,C表示当前的sName,B表示除最顶层和当前的组织节点的sName

例:/起步软件/X5产品事业部/开发一组

1.12.1   组织机构表(SA_OPOrg)

6.1 组织机构表

字段名 描述
sID 唯一标识
sName 名称
sCode 编码
sLongName 长名称
sFName 全路径名
sFCode 全路径编码
sFID 全路径ID
sOrgKindID 组织类型
sSequence 序号
sValidState 可用状态
sParent 父任务
sLevel 级别
sPhone 电话
sFax 传真
sAddress 地址
sZip 邮编
sDescription 描述
sPersonID 人员ID
sNodeKind 节点类型
version 版本

1.12.2  人员表(SA_OPPerson)

6.2 人员表

字段名 描述
sID 唯一标识
sName 名称
sCode 编码
sIDCard 身份证号
sNumb 数据编号
sLoginName 登录名
sPassword 密码(MD5)
sPasswordTimeLimit 密码时限(天)
sPasswordModifyTime 密码修改时间
sMainOrgID 所属部门
sSafeLevelID 密级
sSequence 序号
sValidState 可用状态
sDescription 描述
sSex 性别
sBirthday 出生日期
sJoinDate 参加工作日期
sHomePlace 出生地
sDegree 学历
sGraduateSchool 毕业院校
sSpeciality 专业
sSchoolLength 学年制
sTitle 职称
sMarriage 婚姻状态
sCardNO 证件号码
sCardKind 证件类型
sFamilyAddress 家庭住址
sZip 邮编
sMsn MSN
sQQ QQ
sMail 电子邮件
sMobilePhone 移动电话
sFamilyPhone 家庭电话
sOfficePhone 办公电话
sPhoto 照片
sCountry 国家
sProvince
sCity
sEnglishName 英文名称
version 版本

 

1.12.3  角色表(SA_OPRole)

6.3 角色表

字段名 描述
sID 唯一标识
sName 名称
sCode 编码
sCatalog 分类
sRoleKind 角色类型
sParentRolesNames 父角色名称列表
sDescription 描述
sSequence 序号
sValidState 可用状态
version 版本

1.12.4  代理表(SA_OPAgent)

6.4 代理表

字段名 描述
sID 唯一标识
sOrgFID 委托人的FID
sOrgFName 委托人的Fname
sAgentID 代理人
sValidState 可用状态
sStartTime 开始时间
sFinishTime 结束时间
sProcess 业务过程
sCreatorID 创建者
sCreatorName 创建者的名称
sCreateTime 创建时间
sCanTranAgent 是否允许转交
Version 版本号

1.12.5  管理权限类型表(SA_OPManageType)

6.5 管理权限类型表

字段名 描述
sID 唯一标识
sName 名称
sCode 编码
sManageOrgKind 管理组织类型
sManageOrgKindName 管理组织类型名称
sLeaderNumber 上级个数
sIsSystem 是否系统
version 版本

1.12.6  授权表(SA_OPAuthorize)

6.6 授权表

字段名 描述
sID 唯一标识
sOrgID 组织单元
sOrgName 组织单元名称
sOrgFID 组织单元的FID
sOrgFName 组织单元的Fname
sAuthorizeRoleID 授权角色
sDescription 描述
sCreatorFID 授权人的FID
sCreatorFName 授权人的Fname
sCreateTime 创建时间
version 版本

1.12.7  权限表(SA_OPPermission)

6.7 权限表

字段名 描述
sID 唯一标识
sPermissionRoleID 所属角色
sProcess 业务过程
sActivity 业务功能
sActivityFName 业务功能全路径名
sActions 业务动作
sActionsNames 业务动作名称
sSemanticDP 语义数据权限
sPermissionKind 语义数据权限类型
sDescription 描述
sSequence 序号
sValidState 可用状态
version 版本

1.12.8  管理权限表(SA_OPManagement)

6.8 管理权限表

字段名 描述
sID 唯一标识
sOrgID 组织单元
sOrgName 组织单元的名称
sOrgFID 组织单元的FID
sOrgFName 组织单元的Fname
sManageOrgID 管理组织
sManageOrgName 管理组织的名称
sManageOrgFID 管理组织的FID
sManageOrgFName 管理组织的FName
sManageTypeID 管理类型
sCreatorFID 授权人
sCreatorFName 授权人的Fname
创建时间
version 版本

1.12.9   分级授权表(SA_OPRoleManagement)

6.9 分级授权表

字段名 描述
sID 唯一标识
sOrgID 组织单元
sOrgName 组织单元名称
sOrgFID 组织单元的FID
sOrgFName 组织单元的Fname
sRoleID 角色
sCreatorFID 授权人的FID
sCreatorFName 授权人的Fname
sCreateTime 创建时间
version 版本

 

1.13   扩展配置

1.13.1   密码模式

从5.2.6版本开始支持两种可选的密码模式。

  • “固定密码”模式

X5的新建人员和重置密码时默认采用“固定密码”模式,默认密码是“123456”。用户可以通过配置文件设置默认密码,配置文件位于“/BIZ/system/config/opm.config.m”。

20

  • “动态密码”模式

用户也可以选择“动态密码”模式,如果设置为动态密码模式,管理员在新建人员和重置密码时,需要记录动态生成的密码,并通知对应人员。

21

  • 密码模式配置

位于“/BIZ/system/config/opm.config.m”(见图6.10 动态密码模式配置)。

22

图6.10 动态密码模式配置

1.13.2   组织节点类型

从5.2.6版本开始支持可配置的组织节点类型。

组织节点类型配置用于定义组织节点的类型及其属性,用户可以对除“psm(人员)”以外的组织节点类型进行增减扩展。例如:可以增加新的组织节点类型“集团”、“公司”、“一级部门”、“二级部门”;可以增加虚拟组织节点类型“机构分组”、“部门分组”等。

配置后,系统的组织管理功能、组织相关组件都会自动支持配置后的组织节点类型。

系统还提供一组新的前后台API,用于代码中读取和识别配置后的组织节点类型。

  • 配置文件

配置文件位于“/BIZ/system/config/opm.config.m”。

<!– 组织机构节点配置

此配置用于定义组织节点的类型及其属性,用户可以对除“psm”以外的组织节点类型进行增加扩展。例如:可以增加新的组织节点类型“集团”、“公司”、“一级部门”、“二级部门”;可以增加虚拟组织节点类型“机构分组”、“部门分组”等。

  • 属性说明:

parents – 父节点类型,多个以半角逗号分隔,用于限定组织节点的上下级关系

root – 是否可以成为组织的根节点

virtual – 是否虚拟节点,虚拟节点一般指现实中不存在的组织节点(例如:分组节点、非本单位等),虚拟节点不能作为流程执行者

sequence = 显示顺序,用于组织节点类型列表显示时的排序

–>

<config name="orgKind" value="">
		<item name="ogn" value="">
			<label language="zh_CN">机构</label>
			<label language="en_US">Organization</label>
			<item name="parents" value="ogn"/>
			<item name="root" value="true"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="01"/>
		</item>
		<item name="dpt" value="">
			<label language="zh_CN">部门</label>
			<label language="en_US">Department</label>
			<item name="parents" value="ogn,dpt"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="02"/>
		</item>
		<item name="pos" value="">
			<label language="zh_CN">岗位</label>
			<label language="en_US">Position</label>
			<item name="parents" value="ogn,dpt"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="03"/>
		</item>
		<item name="psm" value="">
			<label language="zh_CN">人员</label>
			<label language="en_US">Person</label>
			<item name="parents" value="ogn,dpt,pos"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="04"/>
		</item>
	</config>
  • 图片配置

组织类型的图片配置位于“/UI/system/images/org/orgKind”,每个类型的图片4张一组。

23

  • 配置示例
<config name="orgKind" value="">
		<item name="ogn" value="">
			<label language="zh_CN">集团</label>

			<item name="parents" value=""/>
			<item name="root" value="true"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="01"/>
		</item>
		<item name="com" value="">
			<label language="zh_CN">公司</label>

			<item name="parents" value="ogn"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="02"/>
		</item>
		<item name="dgp" value="">
			<label language="zh_CN">部门分组</label>

			<item name="parents" value="ogn,com,dpt"/>
			<item name="root" value="false"/>
			<item name="virtual" value="true"/>
			<item name="sequence" value="03"/>
		</item>
		<item name="dpt" value="">
			<label language="zh_CN">部门</label>

			<item name="parents" value="ogn,com,dgp"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="04"/>
		</item>
		<item name="pos" value="">
			<label language="zh_CN">岗位</label>
			<label language="en_US">Position</label>

			<item name="parents" value="dpt"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="05"/>
		</item>
		<item name="psm" value="">
			<label language="zh_CN">人员</label>
			<label language="en_US">Person</label>

			<item name="parents" value="pos"/>
			<item name="root" value="false"/>
			<item name="virtual" value="false"/>
			<item name="sequence" value="06"/>
		</item>
	</config>

24     25

  • 配套API

Java

com.justep.system.opm.OrgUtils

getRealFName 获取组织真实路径名称(排除虚拟节点)

com.justep.system.opm.OrgKinds

getIDs      获取所有组织节点类型ID

getLabel 获取名称

isRoot 是否是根节点

isVirtual 是否是虚拟节点

getParents 获取父节点类型

JavaScript

justep.Org

getRealFName 获取组织真实路径名称(排除虚拟节点)

justep.Org.OrgKinds

getIDs      获取所有组织节点类型ID

getLabel 获取名称

isRoot 是否是根节点

isVirtual 是否是虚拟节点

getParents 获取父节点类型

本文由WeX5君整理,WeX5一款开源免费的html5开发工具H5 App开发就用WeX5!

阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443