PeopleTrac – 非营利组织的人员管理
演示了多项 LightSwitch 功能,包括 WCF-RIA 服务、原生 SQL、姓名和地址合并清除
引言
PeopleTrac 解决方案演示了多项 LightSwitch 功能
- 开发解决方案的能力
- 可由其他人轻松增强和修改的框架
- 使用 WCF-RIA 服务提供扩展的数据库功能
- 使用原生 SQL Transact 命令增强数据操作能力
- 通过使用自定义 LightSwitch 扩展实现姓名和地址合并/清除功能
PeopleTrac 旨在帮助组织管理其最重要的资源——人。该系统特别关注社区剧院的需求。它围绕德克萨斯州欧文市 ICT MainStage 的特定需求而设计,利用 LightSwitch 模型有效进行修改和增强。
与几乎所有社区剧院一样,我们需要一个能够快速上线、只需最少培训即可使用、并允许当时任何志愿者进行未来修改的系统。
LightSwitch 模型通过以下方式满足了我们的需求:
- 能够非常迅速地将一个可工作的应用程序呈现给用户。然后可以轻松快速地实现用户提出的更改建议
- LightSwitch 模型固有的结构鼓励开发一个解决方案,该解决方案在未来识别出新需求时可以修改——即使是由非原始开发人员进行修改
- 通过使用 WCF – RIA 和 LightSwitch 扩展提供机制,以实现复杂的处理,例如姓名和地址匹配。
PeopleTrac 的初始功能包括
-
输入和管理组织利益相关者的基本信息。对于社区剧院,这些可能包括订阅者、演员、导演、设计师、技术人员、捐助者和潜在观众。
-
捕获利益相关者的活动。此活动分为四个主要类别
- 订阅 - 某人购买一整个演出季的门票
- 捐赠 - 有时人们只是捐钱
- 节目活动 – 与特定节目相关的活动,例如,为特定演出试镜
- 一般活动 – 与特定节目无关的活动,例如,在董事会任职
- 为邮件服务生成邮件列表,用于邮寄宣传材料。
-
提供从其他来源导入列表的功能。有时,剧院不管理自己的票房,因此需要从票房来源导入文件。这不仅涉及将数据导入系统,还涉及识别与现有人员的重复项。
PeopleTrac 需要能够将基本功能生成与处理识别潜在重复姓名和地址所需的更复杂处理相结合。姓名和地址在不同系统之间不完全一致。姓名可能拼写错误;地址可能以不同形式表示。开发了一个 LightSwitch 扩展来提供工具以帮助识别潜在的重复项。
虽然其他平台(例如 Access)可以提供构建基本解决方案的便利性,但它们无法如此轻松地适应额外的复杂性。事实上,LightSwitch 应用程序取代了一个现有的 Access 解决方案,该解决方案变得难以维护和修改。
为了提供所需的功能,使用了以下扩展
- Visual Studio 的 Excel 导入器。可从此处下载
- PeopleTrac 主题扩展
utlleStringUtilities
– 在地址匹配中使用的字符串
实用程序集合。进一步的讨论出现在下面的“字符串实用程序扩展”下- WCF – RIA 服务 – 提供了额外的数据库访问,这对于开箱即用的 LightSwitch 来说不容易实现
此外,客户端/用户代码库中还包含两个模块
- ImportExport.vb 用于处理输出到逗号分隔文件
- MatchPeople.vb 用于处理导入人员和外部列表与
People
表的匹配
字符串实用程序扩展
字符串实用程序扩展提供了一系列用于对字符串
执行比较的方法。在 PeopleTrac 解决方案中,它们用于比较来自不同来源的姓名和地址。姓名和地址比较是需要比较可能不完全相同但实际上代表同一实体的字符串
的经典示例。看看你自己的垃圾邮件就会明白你的姓名和地址可以以不同的方式表示。
该扩展提供了许多单一用途的方法,允许开发人员根据需要进行混合和匹配。
以下方法接受一个字符串
inout
参数并返回一个字符串
。
RemoveUnprintableCharacters
- 删除可能隐藏在
字符串
中的任何不可打印字符
- 删除可能隐藏在
RemoveCarriageReturnsAndLineFeeds
- 删除回车符和换行符
RemoveSpecialCharacters
- 删除所有特殊字符,包括标点符号
RemoveFillerWords
- 专门用于公司名称,删除并标准化填充词,例如“
Company
”、“Limited
”
- 专门用于公司名称,删除并标准化填充词,例如“
RemoveAddressTypeWords
- 用于姓名和地址匹配
- 删除地址中发现的词语,例如“
Street
”、“Blvd.
”
RemoveDuplicateSpaces
- 删除任何重复的空格,并在其位置留下一个空格
RemoveAllSpaces
- 删除所有空格
CleanAndTrim
- 删除不可打印字符和重复空格,然后对
字符串
执行左右修剪
- 删除不可打印字符和重复空格,然后对
CleanCompanyNames
- 执行多个清理功能并以大写形式返回结果。
- 执行的功能
- 删除特殊字符
- 删除填充词
- 删除重复空格
CleanAndRemoveSpaces
- 清理公司名称并删除所有空格
以下方法需要不同的参数,并且可能返回字符串
以外的值
IncludeExcludeNumerics(InputString as String, IncludeNumerics as Boolean)
- 返回一个
字符串
- 如果
IncludeNumerics
为True
,返回的字符串
将只包含输入字符串
中的数字字符 - 如果
IncludeNumerics
为False
,返回的字符串
将包含除字符串
中数字以外的所有字符
- 返回一个
Function GetDamerauLevenshtein(InputString1 as string, InputString2 as string)
- 返回一个整数
- 比较两个
字符串
并返回一个分数,显示它们有多相似 - 分析基于 Damerau 和 Levenshtein 开发的算法
FixEuropeanCharacters(ByRef InputArray() as Byte)
- 请注意,此方法会修改输入数组
- 修复有时在公司名称中发现的欧洲字符
- 主要用于比较可能正确或不正确显示欧洲字符的公司名称
GetRatcliffObershelpScore(String1 as String, String2 as String, Optional MinimumStringPercent as integer)
- 返回一个
double
- 比较两个
字符串
并返回一个介于零和一之间的分数,表示字符串
相互匹配的程度。一表示完美匹配。 MinimumStringPercent
标识要返回的最小值。如果未提供,默认值为75
,这意味着返回的最小值将是0.75
。此字段的重要性在于,值越低,计算执行的工作量越大——可能会对响应产生影响。
- 返回一个
GetFolderFromFilePath(FilePath as string)
- FilePath 包含文件的完整路径名
- 该方法返回文件夹路径
Soundex(s as string)
- 返回一个
字符串
- 此方法由 Christian d'Heureuse 构建。
- 计算输入
字符串
的 4 个字符 Soundex 代码
- 返回一个
一些统计数据
- 屏幕数量:27
- 实体数量:17
- WCF_RIA 虚拟实体数量:5
- 附加查询数量:12
- 构建基本解决方案的时间:约 1 周
- 增加额外功能的时间:约一个月
- 支持的用户数量:无已知限制
下载和屏幕截图
PeopleTrac Visual Studio 解决方案可从以下地址下载
请参阅文件 PeopleTrac.rtf,了解有关构建解决方案和演示演练的说明。
主屏幕
个人信息
管理导入人员
管理邮件列表
要发送邮件的人员
历史
- 2012 年 1 月 3 日:初始版本