-
labview报表生成工具包_企业人员结构分析工具包:3份PPT+10份Excel,搞定方法 报告 工具...
2020-11-26 11:31:50企业人员结构分析工具包此工具包包含,企业人员结构分析的方法、报告、模板等。如下具体内容:一、3套人员结构分析PPT①人力资源结构分析报告②企业用工分析报告(季度)③人力资源调研及分析报告二、10套人员结构工具...企业人员结构分析工具包
此工具包包含,企业人员结构分析的方法、报告、模板等。如下具体内容:
一、3套人员结构分析PPT
- ①人力资源结构分析报告
- ②企业用工分析报告(季度)
- ③人力资源调研及分析报告
二、10套人员结构工具表格(Excel)
- ①HR月分析数据模板
- ②某公司人力结构分析报告
- ③企业年度人员结构报表分析
- ④人力资源结构分析表
- ⑤人力资源年龄结构分析(按职位分析,生成图表)
- ⑥某公司人力资源状况分析
- ⑦人事档案管理系统(Excel版)
- ⑧某公司人员结构分析模型
- ⑨年度离职率分析报告
- ⑩员工学历结构分析模板
一、人员结构分析PPT
1、人力资源结构分析报告,29页PPT
共4部分内容:
- ①人事现状分析:公司整体人员规模、人员流动情况、人员结构变化、用人成本分析;
- ②招聘运作分析:招聘需求情况分析;
- ③培训情况分析:培训进度情况、文化活动情况;
- ④总结:现状说明、存在的问题与建议;
2、企业用工分析报告(季度),28页PPT
此报告,包含如下内容:
- 季度整体现状:从职位、性别、岗位三个维度,分析籍贯、职称、年龄、司龄、学历等人员结构;
- 人员结构变化:主要与去年同期同比分析;
- 一季度人员流动情况:流动指标(离职率、总体流动率、内部变动率、主动离职率)、新员工入职、离职、调动情况分析;
- 总结
3、人力资源调研及分析报告,28页PPT
此分析报告,主要包含如下几个方面:
- 人力资源管理5P结构:识人、选人、用人、育人、留人;
- 人力资源规划(理论、现状、分析思路):供给分析、企业内部管理环境、组织机构、人员配置需求分析、建立员工发展规划机制、现状及改善思路;
- 素质测评与岗位分析系统(识人):分析及思路;
- 招聘与选拔系统(选人):分析及思路;
- 人员配置和使用系统(用人):分析及思路;
- 培训和开发管理系统(育人):分析及思路;
- 考评与薪酬系统(留人):分析及思路;
- 劳动关系::分析及思路;
二、分析Excel工具表格
1、HR月分析数据模板
包含了,重点工作描述、异动分析、离职人员分析、在职人员分析、招聘分析、成本分析、考勤分析、培训分析、社保分析几个部分内容。
2、某公司人力结构分析报告
包含,分析报告、 人力结构分析、 职级统计、 培训需求、 职级配置、 岗位配置、 薪酬与考核、 组织架构内容。
3、企业年度人员结构报表分析
人员年度分析:员工数量、各部门员工数量、净增长、入职数量、离职数量、离职率
人员结构:岗位结构、司龄结构、工龄结构、学历结构、性别结构
4、人力资源结构分析表
分析维度:职种、 学历、 年龄、 评定类、 技术职称、 性别、 入职年限、 工作年限、 地区;
5、人力资源年龄结构分析
按职位分析,生成图表
6、某公司人力资源状况分析
包含,分析说明、 公司及各部门人数、 公司员工籍贯分布、 公司人员年龄结构、 公司员工学历结构、 公司员工工龄结构、 人员流失情况、 总结;
7、人事档案管理系统(Excel版)
含,基本配置、 员工信息管理、 培训信息管理、 工作经历管理、 人事报表、 员工查询;
8、某公司人员结构分析模型
含,学历结构分析、 年龄结构分析、 司龄结构分析、 层级结构分析、 职能配置分析;
9、年度离职率分析报告
含,公司组织架构、 离职率定义、 各事业部入职离职率、 HR相关数据,离职司龄、学历、工龄、性别、主被动离职、原因分析、 公司离职率对比、 5年数据分析模板;
10、员工学历结构分析模板
含,学历的分析及图表的生成。
获取工具包
①加入圈子;
②点击群公告;
③人员结构分析专题;
-
基于.Net的Microsoft企业体系结构的分析x_数据库的体系结构分为
2020-11-06 00:42:26基于.Net的 Microsoft 企业体 系结构的分析 基于.Net的Microsoft企业体系结构的分析 学号姓名 摘要 本专题的目标读者是那些希望理解 Microsoft在企业应用程序和 技术体系结构方面提供的方法的商业软件和基础设施体系... -
从大脑结构分析创业人员应该如何做Pitch
2015-04-17 10:36:42Neil是被美国总统奥巴马认为30岁以下最优秀的100个企业家之一,其非常引以为荣的一点是曾经帮助国外非常优秀的互联网媒体网站TechCrunch在60天时间内提升了30%的访问量!Neil通过结合自己多年的实战经验和自己的聪明...编者注:本文由Neil Patel于2015-04-03 发布在其个人博客,中文版本由天地会珠海分舵进行编译。这里值得一提的是,Neil是被美国总统奥巴马认为30岁以下最优秀的100个企业家之一,其非常引以为荣的一点是曾经帮助国外非常优秀的互联网媒体网站TechCrunch在60天时间内提升了30%的访问量!Neil通过结合自己多年的实战经验和自己的聪明才智,用信息图的形式将我们的大脑进行深入的解剖,从解剖学层面为我们解密初创企业应该如何才能说出一个出类拔萃的故事。
大脑对故事反应存在固定电路
—
”Storytelling是最有效的提高用户参与度和说服用户的方法“。以上信息图中作者指出人类的大脑对说故事的方式进行沟通其实存在固定的反应区域的,同时也指出了人们喜欢用说故事的方式进行交流的基本事实:
“每个人的大脑其实对故事的反应都是存在固定的电路的。”
“在我们的日常生活中,个人的生活小故事和小道消息其实占了我们日常对话的65%。”
“而我们人类以说故事的方式和别人进行沟通的行为已经源用了40,800多年。”经验元素的说服力
在说故事的时候加入一些经验元素会让你变得非常有说服力,我们认为“原因”和“效果”这些短语之所以会浮现在我们的脑海中都是因为之前的经历所带来的经验的结果。而故事又会反过来给大家带来经验。往下作者提出了一个实验去验证经验是如何影响个人的判断的。他找了两组人到一个实验的房间里面,在实验之前先邀请其中一组进来请他们喝了杯实验室里面的温咖啡,然后又单独叫另外一组人进来请他们喝了冰冷的咖啡。然后两组人都进来,再叫了个穿着工作服的文员进来,该文员一手拿着一杯咖啡一手托着厚厚一叠的文案,静静站在众多试验者面前。然后大家都轻松的在等待者实验的开始,而事实上,该实验已经开始了,作者没有说穿只是想大家有一个轻松的心态来做出他们最真实的判断而已。
实验证明:
之前喝过温咖啡的那一组人倾向于认为该文员拥有着一个比较温顺的个性。
而喝冰冷咖啡的那一组认为该文员是一个比较冷酷不苟言笑的人。为什么会有这样的结果呢?这就是上面说的经验这个元素所带来的力量。因为我们都根据自己的经验先入为主的认为文员所拿着的咖啡应该跟自己刚才喝的咖啡是一样的,而都认为喜欢喝温咖啡的人必然是个性格比较温顺的人,喜欢喝比较刺激的冷咖啡的人应该会是比较冷酷不苟言笑的人。就好像我们看到的国内很多现在描述历史的学者分析的那样,认为气候比较极端的地方生长的人都比较好战,如以前的女真;认为气候比较温和的地方的人相对没有那么好战,比较温和,如中原地带。
实验证明:
我们说故事的过程中可以加入一些经验元素作为听众情感的纽带,让听众觉得你的想法就是他们自己的想法来影响他们的判断。另外来自普林斯顿大学的Uri Hasson研究成员的研究成果表明,人类的脑岛皮层与意识和刺激有关,它可以控制人们将听到的故事和自己的经验进行同步转化。脑岛就是我们大脑中处理下面信息的情感纽带:激励 · 痛楚 · 愉悦 · 噁心* · 恐惧*。
好故事善用比喻
“通过打比方的方式说故事,听众会很容易被吸引。你的比喻越生动,听众的参与感就越强。“在2012年2月份,爱摩尔大学的研究院进行了一次关于比喻是如何影响大脑行为的实验。该实验同样将试验者分成两组。其中一组人会听到一些用如下这些没有使用比喻进行表达的语句“该歌星的声音让人非常愉悦”,“他的臂弯很有力”。
而另外一组人会听到一些运用了比喻的描述方式所进行表达的语句“该歌星有着有如天籁般的歌喉“,”他有着有如铠甲般强壮有力的臂弯“。
实验表明:
- 第一组人的大脑在听到相应直白没有比喻的描述后只有布罗卡氏区和韦尼克区是处于活跃程度的。布罗卡氏区是大脑的一区,它主管语言讯息的处理、话语的产生;韦尼克区是左半球另一个重要的语言区域,有着控制语言理解的技能,大脑中韦尼克区受伤会产生严重的理解力缺失。
- 第二组人的大脑在听到相应运用了比喻的描述后其感知皮层是处于活跃程度的。感知皮层会将感知到的外界刺激进行编码,如看到铠甲时,会将其进行图像处理,以便大脑能够接收和识别;好故事嗅之有味
“故事能将吸引力直接提升到嗅觉感知级别并激活大脑的嗅觉感知控制区域。”
2006年西班牙那边的研究员主导了一次实验,参与实验人员在他们的大脑被功能性磁共振机器监控着的情况下会被问到两组不同的单词。其中一组单词是由中性词如“凳子”,钥匙“等组成的;另外一组单词是由带有气味色彩的词组成的,如“香水”,“咖啡”等。实验证明:
- 听到中性词的那一组人的大脑只有布罗卡氏区和韦尼克区这两个语言控制的区域是处于活跃状态的。
- 听到由气味色彩的一组人的大脑中除了布罗卡氏区和韦尼克区处于活跃状态之外,控制嗅觉感知的主嗅皮层同样也会被激活起来。好故事让听众蠢蠢欲动
“故事会激活听众大脑中控制运动的一些区域”
来自法国语言动力学实验室的认知科学家Veronique Boulenger做了一个实验,在参加实验的人员听到如以下语句的时候,Veronique Boulenger会对他们的大脑进行扫描:“John快去抓住它。”
”Pablo快去开球。“实验证明:
扫描结果显示试验者大脑中控制身体运动的运动皮层区域会被激活起来。过度用语将扼杀你的故事
“当说故事的时候,请别使用那些过度使用得已经烂大街的陈词滥调。事实上,你应该将它们剔出你的产品所处的市场生命周期中。“
科学家在研究storytelling这个课题期间同时也发现了这样一个事实,一些非常盛行的已经烂大街的字眼和短语在听众的脑海中其实只会被当作一个词语来对待而已,并不会起到其他更多的作用。
下面就是作者认为一些我们应该避免的陈词滥调的说法和形容词:
“又一天了“
“真丢人”
“下不为例”
“负责任的说…“
“积极向上”
“建设性”<完>
版权:本作品采用[创作共用署名3.0中国大陆版许可证], 若非授权,转发时切勿删除以下联系信息,否则追究相应责任。本文首发iDoNews 专栏。
提醒:更多相关文章将请关注微信公众号:techgogogo或官网www.techgogogo.com,当然,你也可以直接微信(zhubaitian1)舵主我进行互动。 -
分销系统结构分析个x_分销返利表结构
2020-05-15 10:35:35三分销分析 下图为分销咨询提纲图 第一阶段结果分析 预备阶段首先分析分销系统结构 在分析分销网络结果之前咨询人员首先熟悉企业建立的系统 采用了哪种分销方式相应的销售方法是什么 对这些问题的回答将在很大程度上... -
高新技术企业认定八大条件之科技人员,申报要求及案例分析
2021-02-04 16:55:56企业的人力资源结构也需要达到一定的要求——“从事研发和相关技术创新活动的科技人员,占企业当年职工总数的比例不低于10%”,但是在实际申请的过程中,部分企业因为自身发展的阶段、行业特点等会遇到一些问题,...在高新技术企业认定的过程中,企业的人力资源结构也需要达到一定的要求——“从事研发和相关技术创新活动的科技人员,占企业当年职工总数的比例不低于10%”,但是在实际申请的过程中,部分企业因为自身发展的阶段、行业特点等会遇到一些问题,华夏泰科、指尖申报小编在下面对一些问题做简要总结及实际案例分析,希望有所帮助。
一、案例分析
1.公司全职员工偏少,组织架构严重缺失,但已经取得较为客观的收入,在所得税减免方面存在较为明显需求?
高新技术企业认定申报对于企业全职员工的具体数量是没有要求的,但是申报企业的组织架构应该基本健全。
2.公司员工数量较多,但是实际的研发人员的数量严重不足,甚至是外部私,人兼职的研发人员,所发生的的费用没有任何的财务凭证?
人员数量过少,特别是研发人员的数量过少,往往会给研发费用带来一定的压力,在实际的申报过程中的研发费用的结构来看,绝大多数企业还是人员工资占比较高的。
3.部分民营企业老板名下有多家企业,一套班子同时做几家公司,认为有研发人员,忽略申报主体和高企管理办法对于研发人员的界定要义,高企申报时发现科技研发人员都不在申报主体名下?
企业科技人员占比是指企业科技人员数与当年职工总数的比值:
(1)企业科技人员不一定全是在职人员,像兼职和临时聘用人员也包括在内。但要直接从事研发和相关技术创新活动,以及专门从事上述活动的管理和提供直接技术服务等工作,并且是全年累计实际工作时间在183天以上的人员。
(2)企业职工总数包括企业在职、兼职和临时聘用人员。在职人员可以通过企业是否签订了劳动合同或缴纳社会保险费来鉴别;兼职、临时聘用人全年须在企业计工作183天以上。
(3)企业当年职工总数和科技人员数均按照全年月平均数进行计算和统计:月平均数=(月初数+月末数),全年月平均数=全年各月平均数之和÷12。年度中间开业或者终止经营活动的,以其实际经营期作为一个纳税年度确定上述相关指标。
二、高新技术企业认定科技人员要求常见的误解解析
1.对科技人员的理解有误?
这里还要指出的是,科技人员的要求不是非要专职研发人员才行,要根据科技人员的定义来做判断,必须是全年累计实际
工作时间在183天以上的人员(自申请认定前一年12月底为准)。专职研发人员的科技人员当然最好理解,但是提供相关技术创新活动管理和直接提供技术服务的两类科技人员(像直接提供技术服务的品管部、检测中心及车间骨干人员等;还有从事管理的技术副总、生产副总等)也算作在内。
2.误认为只有在职人员才能计人科技人员?
这里要说明的是,不一定非要是在职人员,高新技术企业认定科技人员还包括兼职和临时聘用人员。
3.对职工总数的定义理解有误?
这里要注意的是,凡签订了劳动合同或缴纳社会保险费的在职人员,以及在企业全年累计工作183天以上的兼职或临时聘用人员都可计人。申请认定企业可参考工资列支名单作为依据。
4.对统计方法理解有误?
将近1年的12月工资表人数作为科技人员的统计依据。这里要注意的是,当年职工总数、科技人员数均按照全年月平均数计算,可参考所得税纳税申报表填写人数。
5.对当年职工总数的理解有误?
误认为申请认定前连续3年的科技人
员数必预要达到职工总数的10 %。这里要说明的是,根据上述件,认定前
两年不一定要达到相应的比例,仅为近1年占比达到要求即可。
6.对科技人员的工作岗位填写理解有误?
在申请认定时要求标注科技人员的工作岗位,评审时也可判断该人是否属于科技人员。这里要注意的是,科技人员的工作岗位应填写市场调研和数据采集、样品图纸设计、工艺配方设计、工艺控制技术、样品测试和中试等按科研活动过程设定的岗位。
一言以蔽之,高新技术企业认定工作特别是在对科技人员认定上,也并非一蹴而就地简单而过。还是需要企业有针对性的做出提前做好规划,这样才有助于企业提高认定成功率。如果意向申报高新的企业,可以从以上几个方面开始着手准备了。 -
建筑结构设计中的工程问题分析
2020-07-05 04:54:36建筑结构设计是建设工作的重要环节和难点所在,结构设计是否合理直接关系着整个建筑工程...就建筑结构抗震设计、混凝土结构设计、钢结构设计中的一些常见工程问题进行了探讨,以期能为设计人员和设计企业提供一定的帮助。 -
长难句结构分析最新经典100句.pdf
2020-08-07 15:24:48(1)现在这个社会,海外人员越来越多,海外合作的公司也越来越多,走在街上,说不定一天能遇到好几个问路的外国人。所以如果你没有能证明你英语能力的一纸证书,你很难向公司证明你的外语水平和能力。 (2)在北上... -
煤炭企业人力资本投资分析
2020-05-22 20:50:02据此提出了煤炭企业加强人力资本投资的路径,并以某矿生产科工作人员为例,建立了相应的评价指标,运用专家打分和层次分析法,得出了该岗位人力资本投资方案,对于煤炭企业加强人力资本分析具有重要的指导意义。 -
企业经营数据分析——思路、方法、应用与工具
2018-06-21 15:21:25《企业经营数据分析——思路、方法、应用与工具》主要内容包括企业中的大数据介绍、数据分析的目的、数据分析的思路、对比与对标、分类、聚类、逻辑关系、预测、结构、各职能部门的具体数据分析、常用的数据分析工具... -
企业经营数据分析__思路、方法、应用与工具
2018-06-17 14:32:49《企业经营数据分析——思路、方法、应用与工具》主要内容包括企业中的大数据介绍、数据分析的目的、数据分析的思路、对比与对标、分类、聚类、逻辑关系、预测、结构、各职能部门的具体数据分析、常用的数据分析工具... -
企业财务分析报告写作指导.doc
2021-01-15 17:05:32同时提供给不同层次阅读对象的分析报告,则要求分析人员在写作时准确把握好财务分析报告的框架结构和分析层次,以满足不同阅读者的需要。再如,报告分析的范围若是某一部门或二级公司,分析的内容可以稍细、具体一些... -
企业财务分析与盈余管理 .ppt
2020-03-12 13:58:18财务分析与盈余管理;企业财务管理的框架;...财务情况说明包括公司基本情况简介会计数据和业务数据摘要股本变动及股东情况公司董事监事高级管理人员和员工情况公司治理结构股东大会情况简介董事会报 -
Activiti6.0表结构完整分析记录
2020-04-27 15:26:09Activiti 是一个针对企业用户、开发人员 、系统管理员的轻量级工作流业务管理平台(Business Process Management, 简称BPM),其核心是使用 Java 开发的快速 、 稳定的 BPMN2.0 流程引擎 。Activiti是开源的,并基于...Activiti 是一个针对企业用户、开发人员 、系统管理员的轻量级工作流业务管理平台(Business Process Management, 简称BPM),其核心是使用 Java 开发的快速 、 稳定的 BPMN2.0 流程引擎 。Activiti是开源的,并基于Apache许可发行。Activiti可以在任何Java应用程序、服务器、集群或云中运行,它可以与 Spring 完美集成。
Activiti Github地址:https://github.com/Activiti/Activiti
工作流的生命周期
在介绍Activiti的表结构之前,非常有必要先对工作流的生命周期有一定的了解。因为在对业务流程进行设计与运行的过程中,都在体现着工作流的生命周期,并且,Activiti的表结构中有一部分也是基于生命周期设计的。
一个完整的工作流生命周期会经过以下五个阶段:定义、发布、执行、监控、优化。
- 定义:业务需求人员收集业务需求,然后交由开发人员加工转化为计算机可以识别的流程定义
- 发布:开发人员打包各种资源,然后在系统管理平台中发布流程定义(包括流程定义文件 、自定义表单 、 任务监听类等资源 )
- 执行:流程引擎按照事先定义好的流程,以任务驱动的方式予以执行
- 监控:监控依赖执行阶段 。业务人员在办理任务的同时,引擎会收集每个任务的办理结果,然后根据结果做出处理
- 优化:对整个流程的运行结果进行分析,在此基础上进一步改进,并再次开始一个新的周期
Activiti表结构
Activiti(6.0.0)总共包含28张数据表,所有的表名默认以"ACT_"开头
Activiti数据表按类别可以分为五大类:
数据表分类 描述 ACT_GE_* 通用数据表(2张) ACT_HI_* 历史数据表(8张) ACT_ID_* 身份数据表(4张) ACT_RE_* 仓库数据表(3张) ACT_RU_* 运行时数据表(9张) 上述总共26张表,剩余两张表:
数据表分类 描述 ACT_EVT_LOG 事件日志数据表 ACT_PROCDEF_INFO 流程定义动态改变信息表 一、通用数据表
数据表分类 描述 ACT_GE_PROPERTY 属性表 ACT_GE_BYTEARRAY 资源表 1. ACT_GE_PROPERTY
该表为属性表,保存流程引擎的KV键值属性,用于存储流程引擎的级别信息,包括数据库历史操作和数据库版本等,在启动流程引擎时创建。上图中底下的三条记录是创建数据库时自动插入的,插入语句写在建表的 sql 语句中。
该表的字段说明:cfg.execution-related-entities-cout
:流程执行相关的实例计数器功能,默认是关闭的,开启后在 ACT_RU_EXECUTION 表的后几个带有 *COUNT 的字段会显示计数信息,可以通过配置 activiti.cfg.xml 添加以下语句来开启配置。
<property name="enableExecutionRelationshipCounts" value="true"/>
next.dbid
:记录数据库的主键ID,每对数据库进行一次修改(如部署流程定义文件)该值就会发生变化:next.dbid值+步长,默认步长idBlockSize = 2500。其中的 VALUE_ 和 REV_ 初始值为1,上图中表示我总共进行了59次修改:1+59*2500=147501schema.history
:表示对Activiti整个数据库的操作历史,这里是 create,表示目前仅做过创建表的操作,若整个数据库是从5.x的版本进行升级的,那么该值就会是update的值,同时 REV_ 的值会+1schema.history
:表示Activiti的数据库的版本
通过 ManagementService 的 getProperties 方法可以获取属性值
/** * 获取属性表中的属性信息 */ public static void getProperties(){ ManagementService managementService = processEngine.getManagementService(); Map<String, String> properties = managementService.getProperties(); for(String str: properties.keySet()){ logger.info(str + ":" + properties.get(str)); } }
2. ACT_GE_BYTEARRAY
该表为资源表,用于保存Activiti运行过程中的资源(如:流程定义文件bpmn和对应的png图片,需要持久化保存的序列化对象,手工添加的资源信息)关键字段说明:
REV_
:该字段为版本号,本质是一个乐观锁,若我们对资源文件进行过修改操作,该值+1;DEPLOYMENT_ID_
:流程资源文件对应的流程部署ID;BYTES_
:流程定义文件一般都是以大对象进行保存,类型为BLOB;点击该字段的值,若为PNG的图片信息,我们将显示方式由文本改为图片,会在下方显示流程图片;GENERATED_
:表示该资源是手动添加的还是自动生成的,0为用户添加,1为引擎生成;若我们在部署资源文件的时候只添加了bpmn文件,流程引擎会为我们自动生成 png的图片
除了以资源文件添加的方式,也可以通过手工方式添加资源信息,我们以插入一个字符串为例:
public static void testByteArrayInsert(){ ManagementService managementService = processEngine.getManagementService(); managementService.executeCommand(new Command<Object>() { @Override public Object execute(CommandContext commandContext) { ByteArrayEntityImpl entity = new ByteArrayEntityImpl(); entity.setId("10004"); entity.setName("testSource"); entity.setBytes("testSource".getBytes()); commandContext.getByteArrayEntityManager().insert(entity); // commandContext.getByteArrayEntityManager().deleteByteArrayById("10004"); return null; } }); }
二、流程定义存储表
数据表分类 描述 ACT_RE_DEPLOYMENT 流程部署表 ACT_RE_PROCDEF 流程定义表 ACT_RE_MODEL 流程模型表 1. ACT_RE_DEPLOYMENT
该表为流程部署表,用于记录流程的部署情况(流程部署的名称、类别、key标识、租户ID、部署时间等)
关键字段说明:CATEGORY_
:用于标记该流程所属的流程类型KEY_
:流程标识TENANT_ID_
:该流程所属的租户,不同租户对应的流程为不同的版本
想要对上表中的字段有更清晰地认识,可以操纵下面这段代码:
/** * 部署流程定义文件 */ private static void deploy() { Deployment deployment = processEngine.getRepositoryService() .createDeployment() .addClasspathResource("diagrams/MyProcess.bpmn") .addClasspathResource("diagrams/MyProcess.png") .name("FirstApprove流程") .category("测试流程") .tenantId("A") .key("simpleForm") .activateProcessDefinitionsOn(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS") .parse("2020-04-15 09:46:00:545")) .deploy(); System.out.println("流程部署ID:"+deployment.getId()); System.out.println("流程部署Name:"+deployment.getName()); }
1)当我们部署了一个流程的时候,默认是激活状态的,若我们设置了 activateProcessDefinitionsOn则表示流程未激活,需要以手工方式进行激活。2)上述代码执行后,相应的有三张表发生了变化,ACT_GE_BYTEARRAY 表中增加了两条资源记录,ACT_RE_DEPLOYMENT 表中增加了一条部署记录,ACT_RE_PROCDEF 表中增加了一条流程定义信息记录。
2. ACT_RE_PROCDEF
该表为流程定义信息表,用于记录部署的流程定义信息
关键字段说明:-
REV_
:表示的是乐观锁(对流程的修改操作后,该字段值加1,如对流程定义的暂定和激活操作)
-
CATEGORY_
:流程定义类别,表示的是流程定义文件(xml格式)中的targetNamespace的属性值
-
NAME_
:流程定义文件的 name 属性值 -
KEY_
:流程定义文件的ID值,我们一般以 KEY 值作为流程定义的唯一表标识,并且通过 KEY 值来启动流程定义文件 -
VERSION_
:流程定义的版本号,只要流程定义的ID值不变,每进行一次流程发布,该值加1 -
DESCRIPTION
和HAS_START_FORM_KEY_
对应流程定义文件:
-
SUSPENSION_STATE_
:流程暂停状态,1为激活状态,2为暂停挂起状态。
3. ACT_RE_MODEL
模型信息表(用于WEB设计器),在5.x的版本用于WEB设计器,一些json数据会存在此表中,这里不做过多说明。
三、运行时数据表
数据表分类 描述 ACT_RU_EXECUTION 运行时流程实例执行表 ACT_RU_TASK 运行时任务表 ACT_RU_IDENTITYLINK 运行时参与者信息表 ACT_RU_VARIABLE 运行时变量表 ACT_RU_EVENT_SUBSCR 运行时事件订阅表 ACT_RU_JOB 运行时作业表 ACT_RU_TIMER_JOB 运行时定时器表 ACT_RU_SUSPENDED_JOB 运行时暂停作业表 ACT_RU_DEADLETTER_JOB 运行时死信表 1. ACT_RU_EXECTION
该表记录运行时的流程实例与分支的执行信息
该运行时执行表为启动下面的流程图后的结果,我们启动该流程,首先进入到callActivity(调用式子流程),该子流程会调用第二幅图中的流程,因此运行时的执行表会有这么多条记录(包括两条主干线,以及其他的节点记录)。
关键字段说明:
BUSINESS_KEY_
:为业务标识,主流程才会拥有业务主键,可以在开启流程实例的时候注入,该业务标识只有在主线流程中可以查看到。
PARENT_ID_
:父执行ID,对应的是上一执行信息的ID号SUPER_EXEC_
:调用式子流程的父执行ID(一般为CallActiviti所对应的ID)IS_ACTIVE_
:是否活动流程实例,0为非活动,1为活动(一个分支节点完成,则该分支的IS_ACTIVE会变为0)- IS_CONCURRENT_:是否并发,0为非并发,1为并发(这里的并发并非并行执行的概念)
IS_SCOPE
:是否全局流程执行,0非,1是- IS_EVENT_SCOPE_:是否激活状态,没有使用到事件的情况下,一般都为0
- IS_MI_ROOT_:是否多实例根执行流
SUSPENSION_STATE_
:挂起状态,1正常,2挂起- CACHED_ENT_STATE_:缓存结束状态
- LOCK_TIME_:锁定时间,锁定时间是不被并发操作的
剩下的几个带有 _COUNT_的字段为其他几张运行时表的记录数,需要配置activiti.cfg.xml的
<property name=“enableExecutionRelationshipCounts” value=“true”/>计数器功能,才生效2. ACT_RU_TASK
该表记录运行时的 userTask任务信息。
关键字段说明:- PARENT_TASK_ID_:父节点任务ID,由父节点间接启动
- OWNER_:拥有人,一般情况下为空,只有在委托时才有值
- DELEGATION_:委托状态,PENDING委托中,RESOLVED已处理,无委托则为空
PRIORITY_
:优先级别,默认为50(Main Config中可配置)DUE_DATE_
:过期时间(Main Config中可配置)CATEGORY_
:类别(Main Config中可配置)SUSPENSION_STATE_
:挂起状态,1正常,2挂起CLAIM_TIME_
:该任务节点的获取时间
3. ACT_RU_VARIABLE
记录运行时的变量信息
关键字段说明:TYPE_
:类型integer,String,double,json,null等BYTEARRAY_ID_
:资源信息ID,若该变量需要用到资源表中的信息,则对应的是资源表中的ID值TEXT2_
:存储持久化对象的对象ID
4. ACT_RU_IDENTITYLINK
记录运行时相关的用户信息
关键字段说明:
TYPE_
:类型assignee,candidate,owner,starter,participant
设置用户类别的方式为:@Test public void query(){ TaskService taskService = processEngine.getTaskService(); Task task = taskService.createTaskQuery().processDefinitionKey("simpleProcess").singleResult(); // taskService.setOwner(task.getId(), "李四"); taskService.addUserIdentityLink(task.getId(), "赵六", IdentityLinkType.STARTER); }
5. ACT_RU_EVENT_SUBSCR
事件订阅表,记录与消息事件定义相关的信息
事件订阅表可以通过部署并启动
包含消息事件的流程定义来测试
(案例1)消息开始事件
流程定义文件(my-process-message.bpmn20.xml)如下:<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <message id="messageStart" name="my-message"></message> <process id="myProcessMessage"> <startEvent id="start" > <messageEventDefinition messageRef="messageStart" /> </startEvent> <sequenceFlow id="flow1" sourceRef="start" targetRef="someTask" /> <userTask id="someTask" name="Activiti is awesome!" /> <sequenceFlow id="flow2" sourceRef="someTask" targetRef="end" /> <endEvent id="end" /> </process> </definitions>
(案例2)中间捕获消息事件定义
流程定义文件(my-process-message-received.bpmn20.xml)如下:<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <message id="messageStart" name="my-message"></message> <process id="myProcessCatchMessage"> <startEvent id="start" /> <sequenceFlow id="flow1" sourceRef="start" targetRef="message-received" /> <intermediateCatchEvent id = "message-received"> <messageEventDefinition messageRef="messageStart" /> </intermediateCatchEvent> <!--<userTask id="someTask" name="Activiti is awesome!" />--> <sequenceFlow id="flow2" sourceRef="message-received" targetRef="end" /> <endEvent id="end" /> </process> </definitions>
关键字段说明:
EVENT_TYPE_
:事件订阅类型,message,signalEVENT_NAME_
:事件订阅名称ACTIVITY_ID_
:流程定义节点IDCONFIGURATION_
:配置信息(若在开始事件中配置了消息事件定义,则该配置信息即流程定义ID)CREATED_
:创建时间,时间戳形式
6. ACT_RU_JOB
运行时作业表,这一类的总共有四张表:- ACT_RU_JOB:记录异步任务的数据
- ACT_RU_TIMER_JOB:记录定时事件的数据
- ACT_RU_SUSPENDED_JOB:记录暂停的的数据,比如流程中有一个定时任务,如果把这个任务停止工作了,这个任务会在ACT_RU_SUSPENDED_JOB中写入数据
- ACT_RU_DEADLETTER_JOB:无法执行工作表的数据, 如果一个任务执行了很多次,都无法执行,那么这个任务会写到该表中
备注ps:
- ACT_RU_JOB 和 ACT_RU_TIMER_JOB 两张表的表结构为一模一样的
- ACT_RU_JOB 比 ACT_RU_DEADLETTER_JOB 多了三个字段LOCK_EXP_TIME_、LOCK_OWNER_和 RETRIES
- ACT_RU_JOB 比 ACT_RU_SUSPENDED_JOB 多了两个字段LOCK_EXP_TIME_、LOCK_OWNER_
(案例)定时开始事件
启动一个定时事件事件流程(my-process-job.bpmn20.xml):
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <process id="my-process"> <startEvent id="start"> <timerEventDefinition> <!-- 配置定时器 --> <timeCycle>R5/PT10S</timeCycle> <!--循环执行5次,每10秒执行一次--> </timerEventDefinition> </startEvent> <sequenceFlow id="flow1" sourceRef="start" targetRef="someTask" /> <userTask id="someTask" name="Activiti is awesome!" /> <sequenceFlow id="flow2" sourceRef="someTask" targetRef="end" /> <endEvent id="end" /> </process> </definitions>
关键字段说明:
LOCK_OWNER_
:锁定节点EXCLUSIVE_
:是否唯一RETRIES_
:重试次数3EXCEPTION_STACK_ID_
:异常堆栈(资源表ID)EXCEPTION_MSG_
:异常信息REPEAT_
:重复表达式,如R5/PT10SHANDLER_TYPE_
:处理器类型,如 timer-start-eventHANDLER_CFG_
:处理器配置,如 {“activityId”:“start”}表示配置的节点为 start 节点
四、身份数据表
数据表分类 描述 ACT_ID_USER 用户基本信息表 ACT_ID_GROUP 用户组表 ACT_ID_MEMBERSHIP 用户与组关系表 ACT_ID_INFO 用户扩展信息表 这一类表是五大类中最简单,最容易理解的,但一般在项目开发中,我们通常会使用自己的用户表。
Activiti中对用户和用户组的支持自带有POJO对象,并支持序列化。如下面表示 ACT_ID_USER 表对应的POJO类1. ACT_ID_USER
该表存放用户的基本信息,包括用户名、电子邮箱、密码、照片等
REV
:仍然表示的是乐观锁,表示对该用户进行修改的次数。public static void setUser() throws Exception { User user = identityService.newUser("004"); user.setFirstName("刘"); user.setLastName("启明"); user.setEmail("14851511@163.com"); user.setPassword("123456"); identityService.saveUser(user); //为某个用户设置照片 InputStream imInputStream = IdentityServiceTest.class.getClassLoader() .getResourceAsStream("diagrams/photo.jpeg"); byte[] data = toByteArray(imInputStream); String mimeType = "photo"; Picture picture = new Picture(data, mimeType); identityService.setUserPicture("001" ,picture); System.out.println("设置用户成功"); }
2. ACT_ID_GROUP
用户组表存放用户的群组信息,包括用户组名、组类型。
private static void setGroup(){ Group userGroup = identityService.newGroup("01"); userGroup.setName("用户组"); userGroup.setType("用户"); identityService.saveGroup(userGroup); System.out.println("设置组成功"); }
当然,上面的 ID_值,不一定要是数字,可以是字符串类型。
3.ACT_ID_MEMBERSHIP
用户关系表存放用户隶属的表,通过 IdentityServiceImpl 的 createMembership(String userId, String groupId) 方法可以直接创建用户组关系
private static void setMembership(){ identityService.createMembership("001", "01"); identityService.createMembership("003", "01"); identityService.createMembership("004", "01"); identityService.createMembership("002", "02"); identityService.createMembership("003", "03"); identityService.createMembership("004", "04"); System.out.println("设置用户关系成功"); }
同样的,这里的 USER_ID_ 和 GROUP_ID_ 只要是字符串类型就可以。
4. ACT_ID_INFO
用于存放除基本信息外的的扩展信息,如年龄、地址、联系方式等
private static void setInfo(){ identityService.setUserInfo("001", "age", "18"); identityService.setUserInfo("001", "address", "BeiJing"); }
关键字段说明:
TYPE_
:信息类型,可以设置用户账号(account)、用户信息(userinfo)和NULL三种值。PASSWORD_
:用户账号的密码字段,当前的Activiti版本并没有使用该字段。PARENT_ID_
:该信息的父信息ID,如果一条数据设置了父信息ID,则表示该数据是用户账号(信息)的明细数据,例如一个账号有激活日期,那么激活日期就是该账号的明细数据,此处使用了自关联来实现。
五、历史数据表
数据表分类 描述 ACT_HI_ACTINST 历史节点信息表 ACT_HI_ATTACHMENT 历史附件表 ACT_HI_COMMENT 历史评论表 ACT_HI_DETAIL 历史详细变更表 ACT_HI_IDENTITYLINK 历史参与者表 ACT_HI_PROCINST 历史流程实例表 ACT_HI_TASKINST 历史任务表 ACT_HI_VARINST 历史变量表 1. ACT_HI_PROCINST
历史流程实例表,该表记录流程引擎启动的流程实例。只要有一条实例启动,无论该实例是否完成,都会在该表中插入一条记录。
关键字段说明:-
DURATION_
:记录流程开始到结束的时间,单位为毫秒 -
SUPER_PROCESS_INSTANCE_ID_
:调用式子流程中的父流程的ID值
2. ACT_HI_ACTINST
历史节点信息表,该表记录流程运行过程中的每个节点信息,包括开始节点、结束节点、用户任务、服务任务、网关等
关键字段说明:-
TASK_ID_
:只有用户任务才有TASK_ID值 -
CALL_PROC_INST_ID_
:针对callActivity调用式子流程中的被调用的流程实例ID值
3. ACT_HI_TASKINST
用户任务实例表,记录历史的用户任务信息
关键字段说明:PARENT_TASK_ID_
:父节点调用的任务IDCLAIM_TIME_
:该节点的获取时间
4. ACT_HI_ATTACHMENT
历史附件表,记录历史附件相关信息
关键字段说明:
1.USER_ID_:用户ID
2.NAME_:附件名称
3.DESCRIPTION_:添加的描述信息
4.TYPE_:附件类型
5.URL
:附件地址
6.CONTENT_ID_
:字节表的ID
8.TIME_:创建时间在添加附件的时候需要指定任务ID和流程实例ID,并通过指定URL来声明附件的地址,如下所示:
//添加附件 taskService.createAttachment("url", task.getId(), processInstance.getId(), "name", "desc", "/diagrams/test.jpg");
5. ACT_HI_COMMENT
历史评论表,为用户任务设置评论或者设置所有者。
关键字段说明:- TYPE_:意见记录类型,有event和comment,当是comment时为处理意见。
ACTION_
:值为下列内容中的一种:AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachment,值为AddComment时为处理意见。MESSAGE_
:用于存放流程产生的信息,比如审批意见- FULL_BLOB_:全部消息,类型为LONGBLOB
下面示例的代码用于添加历史评论,指定流程任务和流程实例,添加评论信息:MESSAGE_
//添加流程所有者 taskService.setOwner(task.getId(), "user1");//ACTION_显示为AddUserLink //添加评论 taskService.addComment(task.getId(), task.getProcessInstanceId(), "record note1");//ACTION_显示为AddComment taskService.addComment(task.getId(), task.getProcessInstanceId(), "record note2");
6. ACT_HI_DETALIL
历史细节表,用于记录历史的详细信息。
关键字段说明:
1.TYPE_
:类型有FormProperty 和VariableUpdate
2. DOUBLE_、LONG_、TEXT_:分别显示变量为浮点型、整型和字符串型的变量,TEXT2为存储JPA持久化对象时,才会有值,此值为对象ID
3.VAR_TYPE_
:类型说明: jpa-entity、boolean、bytes、serializable(可序列化)、自定义type(根据你自身配置)、 CustomVariableType、date、double、integer、long、null、short、string修改历史变量并且记录在act_hi_detail表中:
//下面设置初始的变量为key0 : value0,key1 : value1等 RuntimeService runtimeService = processEngine.getRuntimeService(); Map<String, Object> variables = Maps.newHashMap(); variables.put("key0", "value0"); variables.put("key1", "value1"); variables.put("key2", "value2"); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simpleProcess", variables); //修改key1的值为value1_1,相应的修改记录在act_hi_detail表中 runtimeService.setVariable(processInstance.getId(),"key1","value1_1");
7. ACT_HI_IDENTITYLINK
该表为历史用户表,用于记录历史的参与者信息
TYPE_:类型,主要分为以下几种:assignee、candidate、owner、starter 、participant六、剩余两张表
1. ACT_EVT_LOG
事件日志表,用于记录与事件相关的一些日志信息,如流程实例结束、创建变量、变量删除、创建任务和任务分配等。
事件日志表,该表不可修改,只能写入和删除
关键字段说明:LOG_NR_
:自增主键(Activiti表中唯一有自增主键的表)TYPE_
:类型,包括:PROCESSINSTANCE_START、PROCESSINSTANCE_END、ACTIVITY_STARTED、ACTIVITY_COMPLETED、SEQUENCEFLOW_TAKEN、VARIABLE_CREATED、VARIABLE_UPDATED、TASK_ASSIGNED、TASK_CREATEDTIME_STAMP_
:时间戳,写入事件的时间点USER_ID_
:用户DATA_
:内容数据,json序列化存到数据库中,内容非常大(为该表中的最核心的数据,官方建议不要存储到mysql中而是存到MongoDB或者elisticsearch中,自动完成对json数据的解析)LOCK_OWNER_
:锁定节点LOCK_TIME_
:锁定时间IS_PROCESSED_
:是否正在执行
2. ACT_PROCDEF_INFO
该表为流程定义扩展表,一般不常用
- PROC_DEF_ID_:流程定义ID
INFO_JSON_ID_
:为主键ID,对应ACT_GE_BYTEARRAY的ID
-
基于SEM的煤矿企业安全风险管理路径分析
2020-06-14 14:39:02为了提高煤矿企业安全生产水平,降低煤矿企业安全风险,基于人-环-机三个方面及事故致因理论,构建煤矿企业安全风险管理评价指标体系,并运用因子分析法和结构方程模型,验证所构建的评价指标及理论假设。进而以淮南市5个... -
企业人力资源管理中的数据分析
2020-03-23 15:39:06人力资源管理中的数据分析最主要的就是两个方面,一方面是人员结构性分析,一个方面是人效的分析。跟踪企业人效,能够有效地监测公司经营状况,了解每个员工或者每个部门以及公司整体的人力效能情况。如果发生人效... -
《谁说菜鸟不会数据分析——入门篇》学习笔记——第三章 结构为王,确定分析思路
2020-05-11 18:23:15第二章 结构为王,确定分析思路 一 、数据分析方法论 1.1常用的数据分析方法论 (1)PEST分析法 用于宏观环境分析(政治、经济、技术、社会) (2)5W2H分析法 用于企业营销、管理活动,考虑和分析问题等,如... -
如何设计企业级大数据分析平台?
2017-08-01 16:38:00传统企业的OLAP几乎都是基于关系型数据库,在面临“大数据”...建设企业的大数据管理平台(Big Data Management Platform),第一个面临的挑战来自历史数据结构,以及企业现有的数据库设计人员的观念、原则。数据... -
stoq:用于企业级自动化分析的开源框架-源码
2021-02-04 21:24:10它使分析人员和DevSecOps团队可以使用丰富且一致的数据结构在不同的数据源,数据库,解码器/编码器和许多其他任务之间快速转换。 stoQ设计为可在企业中使用且可扩展,同时对于个人安全研究人员也足够精简。 为什么... -
通用的人员和组织结构模型
2012-02-24 16:07:00在企业IT整合的过程中,对于人员和组织机构信息的整合是一个重点。但是目前的解决方案中往往偏重于“系统用户”的整合,而对组织架构没有考虑或者考虑得很少,同时对于包含客户、合作伙伴等在内的虚拟组织往往支持... -
十家企业绩效管理优点分析(zt)
2019-07-12 12:54:05随着规模的增大、管理理念的提升和竞争压力的加大,国内企业越来越重视绩效管理。虽然经过了多年的努力探索,大多数...原因在于,不同的企业有不同的经营环境、核心能力、组织结构、业务流程和企业文化,人员的素质... -
科技型中小企业的扶持政策分析-以安徽省合肥市为例
2020-06-05 17:08:09近年来,作为技术创新和技术产业化的载体,科技型中小企业(STS-ME)为科技成果转化,产业结构优化,高新技术发展做出了巨大贡献。 ,创新/创业精神和增加就业机会。 STSME已成为经济发展的重要增长点。 但是,STSME... -
如何通过设计医药企业销售队伍结构提升销售效能(下)
2020-10-21 15:05:16有效的销售资源分析需要建立销售人员资质和增量销售以及利润之间的关系,通过了解特定客户或潜客成本与销售努力可能带来的收入和利润之间的关系,公司确定覆盖哪些客户可以最大化盈利,以及销售资源类型和数量间匹配... -
初学Power bi项目财务与人力/利润表/人员结构-刘刘的第一篇学习记录文章
2020-10-14 22:16:24盈亏平衡分析是企业结合收入、成本、利润的综合分析方法,它可以判断企业的经营状况,为企业未来的经营方向提供指引。 收入 = 总成本+利润 ,盈亏平衡点是收入正好等于总成本的销售金额,通过计算盈亏平衡点能判断... -
【毕业设计】基于C#的CS结构企业人事管理系统设计
2012-04-23 22:30:13【毕业设计】基于C#的CS结构企业人事管理系统设计,有完整代码及论文 目 录 1、绪 论 3 1.1 问题的提出 3 1.2 管理信息系统的发展历史 4 1.3 企业人力资源管理信息系统的作用 6 1.4 国内企业人力资源管理信息系统... -
Spark 实战,第 3 部分: 使用 Spark SQL 对结构化数据进行统计分析
2016-12-28 11:18:16在很多领域,如电信,金融等,每天都会产生大量的结构化数据,当数据量不断变大,传统的数据存储 (DBMS) 和计算方式 (单机程序) 已经不能满足企业对数据存储,统计分析以及知识挖掘的需要。在过去的数年里,传统的... -
成长型中小企业信息化的现状分析
2011-10-17 15:53:24成长型中小企业信息化的现状分析 (1)管理水平低 目前,成长型中小企业管理模式不适应信息化发展的要求,企业管理层的知识结构不适合信息时代的要求。许多企业的管理模式一、直是按计划经济的需求构建的,... -
论文研究 - 国有控股的混合所有制上市制造企业高管人员股权激励与成长
2020-05-22 14:51:52本文以国有制造业混合所有制企业为研究样本,选取2014-2016年的数据,研究高管股权激励与企业成长之间的... 在此基础上,提出企业应制定合理的高管人员股权激励政策,并通过国有企业混合所有制改革进一步优化股权结构。 -
(企业管理手册)财政供给单位人员信息库(单位版)操作手册基础信息管理用_财政供养人员是否参加安置
2020-06-19 00:37:26企业管理手册财政供给单 位人员信息库(单位版)操作 手册基础信息管理用 前 言 财政拨款补助行政事业单位人员信息库由财政部门与行政事业单位共同完成信息采集及分 析的信息化处理软件 手册目的 本手册旨在介绍地方...