组织机构表达式的说明
一、 组织机构表达式的意义:
通常,查找组织单元只能靠底层提供的各种函数、方法。这种做法带来的是如:提供的这些函数和方法能力远远不能达到用户的需求、组织机构的底层是在枚举用户有可能的使用方式、取到的组织单元不能方便的参与业务运算(如:参与业务表达式)等等问题。为了只解决这一系列的问题,同时也为了给用户提供一个可操作性,可扩展性更好的组织机构系统,提出了组织机构表达式。
二、组织机构表达式的概念
1、 组织机构表达式
组织机构表达式就是通过表达式的方式来指定组织单元的范围和条件从而得到组织单元。组织机构表达式可以嵌入到业务表达式中。它主要就是由组织机构表达式函数和组织机构表达式原子构成。
2、 组织机构表达式原子
组织机构表达式原子就是OrgCondition,它是用来定义查找条件的,是组织机构表达式的最小组成单位。OrgCondition有三个参,OrgCondition(文件条件,属性条件,索引条件),三个参数不能同时为空。原子不能独立使用,它必须配合函数使用。原子之间可以进行逻辑运算,如:OrgCondition('*.PSM', '', '') or OrgCondition('*.PSN', '', '')
3、 函数
在组织机构表达式是中用来做范围限制的,在解释函数之前有两个概念需要解释即:组织机构范围表达式和组织机构条件表达式。
4、 组织机构范围表达式:
它就是一个组织机构表达式。用来限定组织单元范围。
5、 组织机构条件表达式:
它是由N个原子组成的条件表达式。用来限定条件范围。
构成组织机构表达式的函数有:OrgKey、OrgSelect、OrgParent、OrgChildren、OrgFamily。
(1)OrgKey:
它通过部门ID,岗位ID,人员ID确定一个唯一的组织单元。OrgKey的格式是:OrgKey(部门ID,岗位ID,人员ID),三个参数不能同时都为空。如:查找部门ID为'BM1'的组织单元,表达式为:OrgKey('BM1', '', '')
(2)OrgSelect
查找符合条件的组织单元。OrgSelect的格式是:OrgSelect(组织机构条件表达式),其中“组织机构条件表达式”代表要查找符合哪些条件的组织单元,在函数OrgSelect中“组织机构条件表达式”不能为空。如:查找所有人员成员,表达式为:OrgSelect(OrgCondition('*.PSM', '', ''))。
(3)OrgChildren
查找组织单元的子。OrgChildren的格式是:OrgChildren(组织机构范围表达式,组织机构条件表达式,是否取所有子),其中“组织机构范围表达式”代表要查找哪些组织单元的子(查找谁的子),在函数OrgChildren中“组织机构范围表达式”不能为空。“组织机构条件表达式”要查找符合哪些条件的子(子要满足哪些条件),在函数OrgChildren中“组织机构条件表达式”可以为空。“是否取所有子”是一个值只能为True或者False的参数,当值为True是代表要取所有的子,反之当值为False时只取直接的子(第一层子)。如:查找BM1下的所有的人员成员,表达式为:OrgChildren(OrgKey('BM1', '', ''), OrgCondition('*.PSM', '', ''), True)
(4)OrgParent
查找组织单元的父。OrgParent的格式是:OrgParent(组织机构范围表达式,组织机构条件表达式,是否取所有父),其中“组织机构范围表达式”代表要查找哪些的组织单元的父(查找谁的父),在函数OrgParent中“组织机构范围表达式”不能为空。“组织机构条件表达式”要查找符合哪些条件的父(父要满足哪些条件)在函数OOrgParent中“组织机构条件表达式”可以为空。“是否取所有父”是一个值只能为True或者False的参数,当值为True是代表要取所有的父,反之当值为False时只取直接的父(第一层父)。如:查找BM1的上的所有部门,表达式为:OrgParent(OrgKey('BM1', '', ''), OrgCondition('*.DPT', '', ''), True)
(5)OrgFamily
查找组织单元相关的单元(相关单元包括父、子和自己)。OrgFamily的格式是:OrgFamily(组织机构范围表达式,组织机构条件表达式,是否取所有)。其中“组织机构范围表达式”代表要查找哪些组织单元相关的单元(查找谁的相关单元)。“组织机构条件表达式”代表查找符合哪些条件的相关单元(相关单元要满足哪些条件)。“是否取所有”是一个值只能为True或者False的参数,当值为True时代表要取所有的父相关单元(所有的父、所有的子和自己),反之当值为False时只取直接的相关单元(直接父,直接子和自己)。如:查找BM1的所有相关单元OrgFamily(OrgKey('BM1', '', ''), '', True)
6、 组织机构表达式的多个函数之间可以进行逻辑运算,
如:查找所有的人员成员或者BM1,表达式为:OrgKey('BM1', '', '') or OrgSelect(OrgCondition('*.PSM', '', ''))
三、组织机构表达式在业务流程中的使用
当组织机构表达式在流程中使用作为任务执行者表达式的时候,在组织机构表达式函数的基础上流程扩充了查找任务执行者的函数,这些扩充的函数只能在流程中使用,它们包括:GetProcUnitExecutor、
GetProcUnitExecutorPositionMember、
GetProcUnitExecutorPosition、
GetProcUnitExecutorDept、
GetProcUnitExecutorWorkGroup、
GetProcUnitExecutorOrgan。
注意,以下函数中用到的执行者表示真正执行任务的人。
1、 GetProcUnitExecutor
查找环节的执行者,它的格式是:GetProcUnitExecutor(环节ID),其中“环节ID”代表要查找哪个环节的执行者。
2、 GetProcUnitExecutorPositionMember
查找环节执行者所属的岗位成员,它的格式是GetProcUnitExecutorPositionMember环节ID,是否包含子),其中是否包含子是一个值只能为True或者False的参数,当只为时代表查找环节执行者所属的岗位成员下的人员成员,反之为时代表仅仅只是查找岗位成员本身。
3、 GetProcUnitExecutorPosition
查找环节执行者所属的岗位,它的格式是GetProcUnitExecutor(环节ID,是否包含子),参数“是否包含子”代表是否是查找岗位下的组织单元。
4、 GetProcUnitExecutorDept
查找环节执行者所属的部门,它的格式是GetProcUnitExecutorDept环节ID,是否包含子),参数“是否包含子”代表否是查找岗位下的组织单元。
5、 GetProcUnitExecutorWorkGroup
查找环节执行者所属的工作组,它的格式是GetProcUnitExecutorWorkGroup环节ID,是否包含子),参数“是否包含子”代表是否是查找工作组下的组织单元。
6、 GetProcUnitExecutorOrgan
查找环节执行者所属的部门机构,它的格式是GetProcUnitExecutorOrgan环节ID,是否包含子),参数“是否包含子”代表是否是查找机构下的组织单元。 |