扩展 WSS3 任务列表以支持重复提醒
当新任务添加到任务列表时,WSS 3.0 将允许我向组发送电子邮件。我想做的是运行一个每周任务,发送特定时间段内到期的任务提醒,即 2 天、7 天、14 天等。我认为最简单的方法是构建一个位于WS2K3 框并查询 WSS 数据库。我应该检查哪些表有什么想法吗?更一般地说,WSS3 数据库系统有一个总体架构吗?
如果有人知道现有的代码解决方案,请告诉我。
谢谢++
杰瑞
WSS 3.0 will let me send an email to a group when a new task is added to a task list. What I would like to do is to run a weekly task that sends out reminders of tasks due within certain periods, i.e. 2 days, 7 days, 14 days etc. I thought the simplest way would be to build a little C# app that sits on the WS2K3 box and queries the WSS database. Any ideas on which tables I should be checking? More generally is there an overall schema for the WSS3 database system?
If anyone is aware of an existing solution with code please let me know.
Thx++
Jerry
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我的建议:
SPJobDefinition
的类。SPJobLockType.Job
设置为此计时器,这将允许该作业在整个场中仅执行一次,即使您在计时器作业中 ,打开SPSite
,您需要的SPWeb
对象,然后找到SPList
\SPQuery
过滤出您需要的项目 - 我相信,您必须过滤掉 Status!=CompleteSPListItemCollection
),应用您的规则,检查DueDate
和 < code>Datetime.Now,发送电子邮件SPListItem
,它有一个Properties
属性,它实际上是一个属性包 -您可以添加所需的任何属性。因此,请添加一个属性My_LastSentReminderDate
不要忘记
Threading.Thread.CurrentThread.CurrentCulture = Your_SPWeb_Instance.Locale
,否则如果网络具有不同的区域设置,则日期比较可能不起作用!编辑:这是我的应用程序中典型提醒的样子:
要注册计时器作业,我通常使用这种脚本:
My suggestions:
SPJobDefinition
.SPJobLockType.Job
to this timer, this will grant that the job is executed only once in the whole farm, even if you are running multiple front-end serversSPSite
,SPWeb
objects you need, then find theSPList
\SPQuery
filter out only the items you need - I believe, you will have to filter out the ones where Status!=CompleteSPListItemCollection
, apply your rules, checking theDueDate
andDatetime.Now
, send the e-mailsSPListItem
, it has aProperties
property, which is actually a property bag - you can add whatever properties you need. So, add a propertyMy_LastSentReminderDate
. Use this property to check if you are not sending too much of "corporate spam" :-)SPJobDefinition
in a SharePoint farm, you can use a PowerShell script. I can give you examples, if needed.Don't forget to
Threading.Thread.CurrentThread.CurrentCulture = Your_SPWeb_Instance.Locale
, otherwise date comparisons may not work if the web has a different locale!EDIT: This is how a typical reminder looks like in my applications:
To register a timer job, I typically use this kind of a script:
每当您需要在共享点中定期执行某些内容时,100 次中有 99 次您都需要构建 TimerJob。这些是在 SharePoint 内部运行的计划任务,您可以创建自己的计划任务,然后使用功能 + 功能接收器实际“安装”timoerjob(定义)并为其分配计划。
有关详细信息:请参阅 Andrew Connell 的有关 TimerJobs 的文章。
PS 切勿直接查询/更新与 SharePoint 相关的数据库!这将使您“不受支持”,即如果发生任何事情,微软将收取(大量)金钱来修复它,而不是能够请求定期支持。 (如果您是 MSDN 订阅者,您每年最多可以获得 4 次免费支持电话)。
Any time you need something in sharepoint that is executed periodically, 99 times out of a 100 you'll need to build a TimerJob. These are scheduled tasks that run inside SharePoint and you can create your own, then using a feature + featurereceiver to actually "install" the timoerjob (definition) and assign it a schedule.
For more info: see Andrew Connell's article on TimerJobs.
P.S. Never query /update the databases related to SharePoint directly! This will make you "unsupported", i.e. if anything happens microsoft will charge (a lot of) money to come and fix it, instead of being able to ask for regular support. (if you are say an MSDN subscriber you get up to 4 free support calls a year).
不必费心尝试直接访问数据库。您将会遇到非常困难的情况,因为它没有文档记录、不受支持且不推荐。事实上,SharePoint 确实有一个功能齐全的对象模型。
如果您引用 Microsoft.SharePoint.dll(位于安装了 SharePoint 的计算机的全局程序集缓存中),您可以通过这种方式访问数据。您想要开始的对象是 SPSite、SPWeb、SPList、SPQuery 和 SPListItem 。您可以通过搜索 http://msdn.microsoft.com 轻松找到所有这些内容。
您可以尝试的另一种不太灵活但无需代码的可能性是创建几个不同的视图,其中包括即将到来的任务,然后通过 GUI 设置何时将项目添加到该视图的警报。
Don't bother trying to go directly to the database. You will have a very hard time because it's undocumented, unsupported, and not recommended. SharePoint does in fact have a full featured object model though.
If you reference Microsoft.SharePoint.dll (located in the Global Assembly Cache of a machine with SharePoint installed on it) you can access the data that way. The objects you'll want to start with are SPSite, SPWeb, SPList, SPQuery, and SPListItem. All of which you can find very easily on http://msdn.microsoft.com in a search.
Another less-flexible but code-free possibility you could try is creating several different views that include upcoming tasks then via the GUI set up an alert for when items are added to that view.