RSS 2.0 Feed

Wednesday, July 16, 2008

WSS 3.0与MOSS 2007发布了在SP1之后的又一个重要更新:Infrastructure Update。

WSS 3.0 Infrastructure Update Download
MOSS 2007 Infrastructure Update Download

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Monday, June 23, 2008

使用方法参考这里:SharePoint文件磁盘存储组件使用指南
WSP安装包下载:WSSv3.DiskFileStorage.wsp (源码 (Update 2008-6-24:为了方便大家使用源码,将源码改成了使用VS2008 + VSeWSS 1.2) )

警告:仅仅是测试版,请仅用于测试(或者你直接把源码改到认为已经足够稳定也行)。有问题请到我的备份blog(http://kaneboy.spaces.live.com)此克隆贴下留言。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Thursday, June 19, 2008

SharePoint文件磁盘存储组件可以将用户上传到SharePoint中的文件,存储到指定的磁盘目录中。基本原理可以参考我之前的blog。

1、安装Solution Package

使用stsadm.exe将Solution Package安装到SharePoint服务器上:
stsadm -o addsolution -filename DiskFileStorage.wsp

2、部署解决方案

image

image 

3、在服务器场中激活“文件磁盘存储”功能

image

image

激活后,在服务器命令提示符中运行下列指令:
IISReset
net stop sptimerv3
net start sptimerv3

4、配置Web应用程序以启用此功能

在“管理中心 - 操作 - 数据配置”点击“用户文件磁盘存储”:
image 

在下面的界面中配置每个Web应用程序是否启用磁盘存储功能,以及存储位置等:
image

搞定。

计划本周末提供组件Solution Pakcage下载。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Monday, June 09, 2008

(本文转自http://www.enet.com.cn/article/2008/0416/A20080416228677.shtml

【eNet硅谷动力消息】CIO们为什么对于微软的SharePoint产品特别关注呢?因为它使用得频繁程度正在日益增加(无论你是否知道,但这却是事实),它需要进行特殊管理以发挥最大效用。

Corridor Consulting公司是一家专门从事企业内容管理(ECM)的厂商---尤其是帮助企业部署SharePoint,并使它发挥最大效用。该公司总裁Russ Edelman(他也是即将出版的新书《轻轻松松赢得商战成功的八项战略》合作作者之一)本月初寄给我的一份有关微软SharePoint会议的报告,主要从一个SharePoint大客户的角度阐明了一些观点,以及如何使SharePoint发挥最效果的技巧。

SharePoint 2007 大会可以看作是微软内容/文档/图像/记录管理系统SharePoint发展势头的一个晴雨表,这次盛会于3月3日至7日在美国西雅图召开,门票很早就被抢购一空,等待名单中有超过500人。事实上,一些“绝望”的 SharePoint用户甚至在没有会议通行证的情况下强行冲入了会场,希望能申请到一张门票参加这次盛会。如果你认为SharePoint仅仅是一个部门级解决方案的话,那么你可能对SharePoint的理解不是很正确。许多应邀出席SharePoint 2007 大会的公司都是全球性大公司,他们对于SharePoint的使用也在迅速增加。如果你不重视这个现象,你就有可能使你的企业遭受到了损失。

General Mills公司微软卓越研发中心经理Elliot Gerard同比尔盖茨一起为SharePoint 2007 大会作了定调发言。会后,General告诉我:“ General Mills同一些核心厂商,比如微软,都有过合作,这也带来了巨大的合作机会。”General Mills 公司信息系统部负总裁Terry Brown还补充说:“这种做法让我们有机会用更低的总体拥有成本(TCO)更快的创造业务价值。微软是我们的一个主要供应商,在2001年SharePoint刚刚发布以后,我们就部署了这个系统。”

企业一般将SharePoint用于集中存放各种文件,并且它很胜任这项工作:大部分文件都可以方便地进行查询和快速存取。但SharePoint也已证明是一个非常成功的协作平台;其工作能力,虽然不能说是最好的,但可以帮助员工更告高效地处理信息和过程。

General Mills的Gerard说:“尽管SharePoint在早期有一些局限性,但是,在微软的不懈努力下,这些都已经得到了很大的改善。在General Mills,SharePoint目前被认为是一个关键技术,并且已经广泛渗透到企业的各个方面。”Brown在最后的发言中说:“我们设想,最终所有的非结构化信息将存储在SharePoint上,这样我们就可以利用记录保留策略并且对内容添加索引,因而我们的用户能够进行全文内容检索。”

General Mills还向大家展示了他们是如何使用SharePoint的;不过,他们对SharePoint的使用水平远远超过了其它公司。随着越来越多的公司加快部署SharePoint,并不断在该服务器上运行新的应用,这次大会还给大家提出了一些建议。

第一,由于很多业务人员带头支持SharePoint却没有用企业标准对它进行评估,这造成了SharePoint使用的盲目增长。必须用一种治理策略赖管理这个过程,不然的话,使用SharePoint可能会适得其反。

第二,ECM系统是一个巨大的“技术成功,但却不是伟大的“商业成功”。许多关键的业务因素常常被忽视,比如通讯规划、变更管理和配置管理。把这些重要因素融入你的策略中,因为如果不这样做,你可能从一开始就走错方向了。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Tuesday, June 03, 2008

最近新发布的SharePoint资源相当多。

微软发布了一个新的SharePoint开发网站:http://MSSharePointDeveloper.com,这个网站是专门设计给想要学习SharePoint开发的ASP.NET程序员。同时,SharePoint Development Training for ASP.NET Developer也正在进行中,这儿有一些PPT和Demo文件,这儿是动手实验文档。Paul Andrew也写了一篇《Introduction to SharePoint Products and Technologies for the Professional .NET Developer》。另外,新发布了一篇挺长的文档:《Developing Custom Applications with SharePoint Server 2007》。最后,Choral同志的51sharepoint.com也开张了。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Tuesday, May 27, 2008

早就知道了有这么一个服务,但一直没有机会尝试,今天趁有空,将一个Office Business Applications的Casestudy录像上传到了Silverlight Streaming服务,效果还不错。:)



Tips:双击可转为全屏播放模式。

posted @ | Feedback (1) | Filed Under [ SharePoint Office ]

Sunday, May 25, 2008

怎么做已经在这篇文章里面说得很清楚了。

9
7
10
11

注意事项:
1、在Windows Vista下安装和使用WSS、MOSS都是不被Microsoft支持的,也就是说,如果出了问题,得不到任何Microsoft官方的技术支持...
2、如果你不是非要使用Windows Vista,还是装Windows Server 2008 + SharePoint吧...
3、不要认为你的程序在Windows Vista + SharePoint下运行正常了,那么在Windows Server 2003/2008 + SharePoint的生产环境中就一定会运行正常,一定要测试!

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Tuesday, May 13, 2008

虽然我一直认为WSP Builder比VSeWSS好用很多,但似乎使用VSeWSS的人还是比WSP Builder多很多,所以...

最新的VSeWSS文档下载,包括了多篇不错的指导文档,以及各种典型VSeWSS项目的Walkthrough。

另1:能够支持VS 2008的VSeWSS版本计划在6月份发布。
另2:STSDev 1.3发布了,这是STSDev 2.0之前的最后一个版本,基本上是一个bug fix version。STSDev开发团队对2.0有一个很大的计划,除了功能上的改进,还打算也弄成一个VS Add-in的模式。我曾发邮件给他们抱怨说,现在VS Add-in已经够多了(WSPBuilder、VSeWSS、AC's VS SharePoint Project Utility Tool Window),Developer通常不喜欢为了同一个目的在自己的VS里面装太多插件。他们的回信很简单:“我们的目标就是把上述功能重复的Add-in都干掉”...

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Tuesday, May 06, 2008

<Module Name="" Path="" Url="">
  <File Name="" Path="" Url="" />
</Module>

Module:
Name : 磁盘上放置文件的文件夹的名称
Path : 在"Name"属性中指定的文件夹在磁盘上相对于\\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Features\Feature的路径。如果文件夹是直接放置于Feature目录,那么Path应该是空。
Url : 要拷贝到站点的哪个目录,目录的路径是相对于站点根目录的。如果站点中没有此目录存在,则会自动创建此目录。

File:
Url : 文件在站点中的名称
Path : 文件在磁盘上相对于\\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Features\Feature的路径。
Name : 通常不需要制定Name属性的值,留空即可。如果不为空,则会覆盖Url属性的值,使文件在站点中用Name指定的名称。

举例:
Feature源文件结构如下,在“AModuleSample”这个Feature目录中还有一个“AModuleSample”子目录,其中有“readme.txt”这个需要provision的文件:
image

那么Module和File就要写成下面这样:
image

上面的Module和File元素的定义表明,我们希望将readme.txt文件以newname.txt的名字放到站点的NewFolderInSite目录中。所以,激活此Feature之后,站点上就会多这样一个目录和文件:

image

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Sunday, May 04, 2008

最近,我们Team正在制作一个3天的OBA开发系列课程Video。也就是,我们将这三天的课程,包括每个课程对应的动手试验,都在自己的电脑上真实的讲演一次,同时用录屏软件将屏幕和声音实时录制下来。由于是专门进行屏幕和声音的录制,所以录制效果会比较好。

最终这个OBA Learning Series会包括:
中文PPT
课程Video
中文动手实验手册
动手实验Video(也就是按照动手实验手册上的内容,将从头到尾做一遍的过程录制下来)
课程中用到的所有Demo源代码

专题 1 – 了解 Office Business Application业务应用程序
专题 2 – 将业务数据整合到具有 Open XML 文件格式的 Office 文档
实验 – 将业务数据整合到具有 Open XML 文件格式的 Office 文档
专题 3 – 将业务数据整合到具有 Fluent UI 扩展性的 Office 文档(第一部分)
专题 3 – 将业务数据整合到具有 Fluent UI 扩展性的 Office 文档(第二部分)
实验 – 将业务数据整合到具有 Fluent UI 扩展性的 Office 文档
专题 4 – SharePoint 网站和安全框架
实验 – SharePoint 网站和安全框架
专题 5 - SharePoint 存储引擎(第一部分)
专题 5 - SharePoint 存储引擎(第二部分)
实验 - SharePoint 存储引擎
专题 6 – 定义业务流程和工作流
实验 – 定义业务流程和工作流
专题 7 – 构建、打包和部署 SharePoint 的组合用户界面
实验 – 构建、打包和部署 SharePoint 的组合用户界面
专题 8 – 整合业务实体与业务数据目录
实验 – 整合业务实体与业务数据目录
专题 9 – 企业搜索
实验 – 企业搜索
专题 10 – 利用 Excel 服务和报表中心创建报表、分析表和信息板
实验 – 利用 Excel 服务和报表中心创建报表、分析表和信息板

我们希望在5月份上旬就制作完成。具体发布方式可能会是由市场部门制作成DVD光盘,但我会尽量将完整内容直接发布到我的blog上。

试看视频:实验 - 定义业务流程和工作流

posted @ | Feedback (1) | Filed Under [ SharePoint Office ]

Thursday, April 10, 2008

好吧,用SharePoint Server 2007实现搜索Domino Notes的确是个艰苦的活儿...我也是被折磨得不行。希望本文能为你节省一些时间。

首先,我们team的Search技术专家Jie Li曾经写过一篇如何配置SharePoint Server 2007来搜索Domino Notes的中文文档,被包含在“微软企业搜索解决方案部署快速启动工具包1.0”中,而这个工具包则被包含在“微软企业业务生产力基础架构(BPIO)解决方案包”中。如果你曾经从微软拿到了那个大大的“解决方案包”(包括N张DVD),那么里面有专门的一张DVD就是“微软企业搜索解决方案部署快速启动工具包1.0”。如果没有,那么就直接用下面的链接下载。

微软企业搜索解决方案部署快速启动工具包1.0下载

Jie Li同志贡献的除了文档,在那个方案包中还有一些相关的录屏、示范代码等,都值得仔细阅读。

在微软TechNet网站上,有两篇相关的配置文档,在动手之前,也建议从头到尾仔细阅读一遍。

Prepare to crawl Lotus Notes (Office SharePoint Server 2007)
Configure Office SharePoint Server Search to crawl Lotus Notes (Office SharePoint Server 2007)

如果配置过程出现了问题,那么就到下面的页面中仔细找找,看看是否遇到了相应的问题。

Troubleshoot a Lotus Notes configuration (Office SharePoint Server 2007)

在整个配置过程中,最复杂的,应该就是如何做好AD用户与Notes用户的映射,并保证搜索结果也是进行了权限过滤的(即一个AD用户所对应的Notes用户如果在Notes中无权限查看某个文档,那么这个用户在SharePoint Server的搜索结果中也不会看到这个文档)。如果在参考了上面的配置文档仍然无法正确最好搜索的权限过滤,那么你可以考虑一个“歪招”,我将具体的做法写了一个文档,可以下载后参考。

在你的配置过程中,可能发现需要编程访问Domino中的数据。对于一个.NET Developer来说,最好的选择就是使用Domino Objects这个COM接口。在机器上安装了Notes Client之后,就可以在Visual Studio中直接引用此COM接口了。

image

更详细的做法当然是参考IBM提供的文档了。

在 Microsoft .NET 应用程序中使用 IBM Lotus Domino
Common ground: COM access to Domino objects

最后,如果你有很多很多的Domino数据库需要爬网,那么可以尝试使用MOSS Search Admin这个工具。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Wednesday, April 02, 2008

相信大家也已经知道了,Open XML已经通过了第二轮ISO投票,正式成为了ISO标准。iso.org上已经正式宣布了这个消息。这个消息意味着:

1、第三方的软件开发商和Developer现在终于可以直接参考标准的Open XML文档格式规范,来直接创建或处理Microsoft Office所生成的文档了。大家再也不需要像以前一样,艰难的对二进制文档格式(.doc、.xls...)进行反向工程...对于WPS和其他类似希望直接支持Microsoft Office文档格式的软件而言,肯定是一个利好。比如,运行在Linux中的Open Office(Novell Edition)已经直接支持Open XML文档了:

image

2、成为ISO标准后,Open XML规范将不再直接被任何一家厂商(包括微软自己)所控制,任何对ISO标准的修改和更新,都需要经过ISO组织的标准投票流程。

3、Developer现在可以很容易的处理Microsoft Office文档了,因为Open XML规范本身就是基于两种最基本也最通用的技术:XML和Zip。对Open XML的处理不会受到任何平台、任何编程语言的限制。

为了帮助.NET Developer更好的创建和处理Open XML文档,微软已经发布了Open XML SDK的第一个CTP版本。Open XML SDK可以让.NET Developer直接使用一组提供的类库来操作Open XML文档,而不需要了解太多Open XML规范的细节。下图是Open XML SDK后续发展的Roadmap。

Open XML SDK roadmap: timeline

在MSDN Webcast站点上,也有一个系列中文的Open XML开发讲座

中国之前已经提出了一个UOF文档格式标准,微软也正在支持开发一个UOF与Open XML的双向转换器,来实现UOF格式与Open XML格式之间的互转。这个转换器的目标是直接直接在Microsoft Office 2007中打开、保存成UOF格式:

image 

 image

下图显示了这个使用Microsoft Office 2007创建的UOF文档在永中Office中编辑的情况:

 image

posted @ | Feedback (0) | Filed Under [ Office ]

Tuesday, April 01, 2008

Wednesday, March 26, 2008

最近有人向我抱怨,说他在用SharePoint Designer摆弄SharePoint页面时,被同事无情的嘲笑为非真正的Developer。为了挽救他受伤的心灵,我决定录一段用Visual Studio做SharePoint页面的video,来教会他如何在同事面前抬起头了。当然,如果确实用SharePoint Designer更方便,我还是建议他每天早一个钟头去办公室,先用SharePoint Designer弄好页面,然后在同事进到办公室之前,将用SharePoint Designer弄好的页面copy到Visual Studio中...

闲话少说。先说一下Video中的那个工具:Visual Studio Extensions for WSS 1.1



再次道歉(奇怪,我为什么要说再呢?):录屏时错误的选择了WebEx,造成录像效果不是很好,但基本不影响欣赏。同时,还得麻烦您到这里去下载WebEx播放器

posted @ | Feedback (2) | Filed Under [ SharePoint ]

Tuesday, March 25, 2008

经常有人问我“如何禁止用户修改某某字段?”之类的问题。通常这一类的问题会牵涉到对列表项编辑页面的修改。

其实简单来说,如果你熟悉SharePoint开发,解决上面所说的这个问题就非常简单了。因为SPField有一个ShowInEditForm的属性,你只需要这样:

SPField titleField = item.Fields["Title"];
titleField.ShowInEditForm = false;


但如果你不想用这样的方法,或者想了解更多对列表项编辑页面的定制,那就继续看下去。

对列表项编辑页面最常见,也最方便的定制方法,就是使用SharePoint Designer打开这个页面直接进行修改。通常,通过往这个页面上添加相应的JavaScript脚本,就可以完成我们需要的效果。
image

比如下面的这个任务列表项的编辑页面,我们希望,它能够隐藏“标题”字段,同时,自动将“截止日期”所对应的文本框中的值设置为2008/1/1(是的,我知道要做到这个只需要更改字段默认值,但这不是重点...)。
image 

<script type="text/javascript" language="javascript">

// 搜索对应到每个字段的文本输入框
function searchFieldEditorElement(tagName, identifier, title) {
  var len = identifier.length;
  var tags = document.getElementsByTagName(tagName);
  for (var i=0; i < tags.length; i++) {
    var tempString = tags[i].id;
    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
      return tags[i];
    }
  }
  return null;
}

// 搜索对应到每个字段的“<TR>”标签
function searchParentTR(element)
{
    var parentElement = element.parentElement;
    if (parentElement == null)
    {
        return element;
    }
    if (parentElement.tagName.toLowerCase() == "tr")
    {
        return parentElement;
    }
    return searchParentTR(parentElement);
}

function setFieldControls()
{
    // 将“标题”字段所对应的行隐藏起来
    var txtTitle = searchFieldEditorElement("input", "TextField", "标题");
    if (txtTitle != null)
    {
        var parentTr = searchParentTR(txtTitle);
        parentTr.style.display = "none";
    }

    // 将“截止日期”字段所对应的文本框的值设置成“2008/1/1”
    var txtEndDate = searchFieldEditorElement("input", "DateTimeFieldDate", "截止日期");
    if (txtEndDate != null)
    {
        txtEndDate .value = "2008/1/1";
    }
}

// 指定在页面载入后运行指定的JS函数
_spBodyOnLoadFunctionNames.push("setFieldControls");

</script>

image

通过灵活使用JavaScript,基本上我们可以实现我们所需要的大部分效果。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Sunday, March 23, 2008

Thursday, March 06, 2008

3月3号,SharePoint Conference 2008第一天。

SharePoint Conference的会场和公司内部的TechReady会议一样,也在西雅图市区的Washington Convention & Trade Center。一大早兴匆匆的就跑过去了,扶手电梯上方挂着SharePoint Conference 2008的大牌子,下面是三个最能描述SharePoint的关键字:Connect、Collabrate和Share。:)

image

办完了注册手续,就进到一个前方有两个大投影显示屏的房间,通过投影看keynote直播。为啥不能直接到keynote会场去现场看呢?原因就是今年的SharePont Conference的票很早就卖光了,等到我注册参会的时候,只能订到Overflow类型的票了。Overflow也就是说不能进到大会的keynote现场,只能在旁边的房间看直播...不过对于所有的课程session,当然还是和普通票一样啦。俺的参会牌的后面有一个大大的OVERFLOW标签,直接被会场人员就发配到旁边的直播间了:

image

keynote第一个上台的是SharePoint的产品经理,Tom Rizzo。我能参加这个会还得多亏他的帮助,因为我注册的时候,由于票已卖光,只能放到waiting list里面,后来还是我的老板给他发了一封邮件,让他帮忙才终于弄到了一张Overflow票...

image

Tom Rizzo把大家鼓动了一把之后,就请出了号称“微软第一SharePoint粉丝”的Bill Gates同志。

image

Bill Gates同志虽然演讲风格不敢恭维,但号召力还是相当强的。上台后又给大家看了一遍网上已经流传很广的“Bill Gate's Last Day at Microosft”的搞笑Video,不过这次放的似乎和之前放的有稍许不同,因为我又看到了几个新面孔,包括沃伦巴菲特(对,就是那个股神巴菲特)。

在Bill Gates的keynote中,他正式宣布了SharePoint Online,这是一个面向企业和个人的在线托管SharePoint服务。你可以在这里看到更详细的有关SharePoint Online的信息,还可以用你的Live ID,免费试用一下SharePoint Online。

另外,在Tom Rizzo的keynote中,还发布了一个新的SharePoint资源站点:SharePoint Gear Up,里面有不少协助客户和技术人员进行SharePoint部署的资料。

技术Session在下午正式开始。第一场我去听的《AMD: Deploying MOSS 2007 in a Complex, Global Environment》,是微软的几个GG讲述的AMD在企业Intranet、Extranet与Internet环境中实施SharePoint 2007的经验。课程内容没有什么很特别的,不过在讲述其经验的时候,讲到了他们在实施过程中,对SharePoint Customization进行了严格控制,每一个Customization都需要经过技术人员以及Business Man的审批...

第二节课程本来计划去听《Code Based List Form Customization in WSS 3.0》,光看名称就已经很吸引人了,而且其课程Level被标注成了400,更加让我觉得非听不可。可到了这个课程的教室门口,才发现,和我有同样想法的人太多了,而课程又被安排在一个小教室内,我到的时候,早已经满员,不让再进人了...

无奈之下只要跑去听《A Roll-Up of Fun & Lessons Learned Using the Content Query Web Part (CQWP)》,不过还算有所收获,算是了解了一把Content Query Web Part的强大功能,以及知道了微软内网MSW站点首页上那些东东原来都是用CQWP做的。

image

今天听的最后一节Session是《Collaborating with Customers on the Extranet with SharePoint 2007: Solutions and Best Practices》,这个Session是由一个微软的合作伙伴讲的(SharePoint Conference中不少课程是微软合作伙伴讲的,其特点是,通常会给自己公司,以及自己公司的某个产品做不少广告)。其实这个Session真可以说是一个标准的“广告Session”,因为大部分时间,都是在Demo这家公司在SharePoint上做的一个Extranet Collaboration Manager的东东。不过这个ExCM的东东功能确实做得不错,部署之后,可以通过配置让SharePoint Farm直接支持Forms Auth、User Self-Registration、Site Self-Provision Request、Site Request Approval Workflow等等。

整个下午都被时差效应所折磨,在会场喝了2罐可乐也无济于事,撑到课程都结束,就闪回酒店睡觉了...

posted @ | Feedback (3) | Filed Under [ SharePoint ]

Wednesday, February 27, 2008

WSS 3.0 SDK 1.3
MOSS 2007 SDK 1.3
另外,WSS 3.0也发布了SP1之后的第一个比较大的hotfix package

posted @ | Feedback (1) | Filed Under [ SharePoint ]

Sunday, February 24, 2008

这两天帮一个朋友调试使用BDC(Business Data Catalog)来连接MySql中的数据,发现不少需要特别注意的地方。在使用BDC连接时,MySql和MS Sql Server的区别还是很大的。

我的朋友在服务器上是使用的MyODBC这个Driver。对于LobSystemInstance的定义,基本类似:

<LobSystemInstance Name="MySQL_Lob">
      <Properties>
        <Property Name="rdbconnection Driver" Type="System.String">{MySQL ODBC 3.51 Driver}</Property>
        <Property Name="rdbconnection server" Type="System.String">MySQL服务器名称</Property>
        <Property Name="rdbconnection database" Type="System.String">MySQL Database名称</Property>
        <Property Name="rdbconnection user" Type="System.String">root</Property>
        <Property Name="rdbconnection password" Type="System.String">123456</Property>
        <Property Name="rdbconnection option" Type="System.String">3</Property>
        <Property Name="RdbConnection Trusted_Connection" Type="System.String">true</Property>
        <Property Name="DatabaseAccessProvider" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider">Odbc</Property>
        <Property Name="AuthenticationMode" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode">PassThrough</Property>
      </Properties>
</LobSystemInstance>


不同的Database Driver,其Connection String是不同的。所以如果你使用的并非MyODBC Driver,那么LobSystemInstance的写法会有不同。

由于我对MySQL并不熟悉,所以在写Entity的Method的时候,又遇到不少问题。其中之一是SQL语句的Parameter的问题。对于MS SqlServer,我们可以使用类似“@ParameterName”的格式来定义SQL语句中的参数。但是,这对于MySQL并不一定有效。使用不同的Database Driver去连接MySQL,对于参数,都有不同的定义方法。我搜索了一下MyODBC的文档,发现它不支持命名参数,而直接使用“?”来代表参数,然后按照顺序来添加参数的值。

所以,在写Entity Method的SQL查询语句时,如果其中有参数,就只能写成类似:

Select CustomerID, CustomerName, ContactName from Customers where CustomerID = ?

但是Entity中Parameter的定义,仍然可以按与命名参数一模一样的写法即可。

posted @ | Feedback (0) | Filed Under [ SharePoint ]

Monday, February 18, 2008

此文是《关于SharePoint 2007的用户组和用户》一文最后一段的继续。关于SharePoint Server中的用户信息管理,choral也写过一篇相关的《SharePoint中的用户信息同步》。本文对相关的信息进行了更进一步的解释和说明。

先上一副图(图中的A、B、C、D、E等标记是为了下面文字更容易指定图片中相应部分而用,下文用类似“A标记”、“B标记”来进行标识):
 image

在一个标准的SharePoint Server服务器场部署模型中,一个用户的信息会同时存在于多个地方:

1、Active Directory(“A标记”)
在AD中会保存我们的基础信息,AD通常是企业中用户基础ID信息的所在。
image

2、SharePoint Server SSP User Profile(“C标记”)
在SharePoint Server服务器场的共享服务(SSP)的用户配置文件(User Profile)中,也会保存用户的信息。SSP User Profile中的用户信息,是作为SharePoint服务器场中集中的用户信息存储所在。如果在SharePoint应用中需要存放一些用户的特定属性信息,建议就存放在SSP User Profile中。User Profile是可以进行属性扩展的,比如,管理员可以添加一个新的“QQ号码”属性。
image

User Profile中的用户信息默认是从AD中导入而来的(“B标记”标识了这个过程),在SSP User Profile管理中,我们可以配置这个导入过程,比如指定相隔多长时间就从AD中重新完全导入用户信息一次。
image

当SSP User Profile从AD中导入用户信息的时候,SSP会根据User Profile的属性映射定义,来决定将AD中用户的哪个属性的值,赋值给User Profile的哪个属性。比如,SSP会将AD中的“显示名称”这个属性的值,导入到User Profile的“名称”这个属性中。通过SSP管理中“编辑用户配置文件属性”这个页面,就可以编辑(或者取消)这种属性映射关系。

如何修改保存在User Profile中的用户属性信息呢?首先,管理员可以在SSP管理中直接修改所有用户的属性信息。其次,每个用户通过自己的个人网站(“我的网站”),就可以修改自己的User Profile信息。
image 

特别说明1:为什么用户不能修改某些属性?比如上图中的“名称”属性,默认就不能修改?
在SSP User Profile管理中,管理员可以指定哪些属性允许用户自己修改,哪些属性不允许。比如,如果管理员允许用户自己修改User Profile的“名称”属性:
image
那么用户就可以在自己的个人网站修改“名称”属性的值了:
image

特别说明2:用户自己修改(或者管理员修改)了User Profile的值,但是岂不是在下一次从AD中完全导入用户信息时,又被覆盖成AD中的值了?
是的。比如上面我们允许用户修改User Profile的“名称”属性的值,但是由于默认“名称”属性映射到AD中的“显示名称”属性,所以下一次进行AD完全导入(“B标记”)时,User Profile中用户的“名称”属性又被自动置成了AD中的“显示名称”的值。但是,管理员可以取消这种映射关系,比如,我们取消掉“名称”属性与AD“显示名称”属性的映射:
image
改成:
image

特别说明3:修改了User Profile中的用户信息,能否自动反向同步回AD?
不能。

除了从AD中导入User Profile信息之外,SharePoint还支持从其他数据源导入,比如LDAP Server。此外,你还可以用代码来往User Profile中添加用户的信息。

3、SharePoint站点(“E标记”)
在每个SharePoint站点中(更准确说应该是站点集中),还会保存每个站点用户的信息。这些信息是保存在各个站点的内容数据库的UserInfo表中(别直接修改数据库表,那不是一个好主意,正确做法是通过SPUser对象模型来访问SharePoint站点中的用户信息)。我们在页面右上方看到的那个“欢迎XXX”信息中的“XXX”,就来自SharePoint站点中存储的用户信息数据。
image 

用户(以及管理员)不能直接修改存储在SharePoint站点中的用户信息,如果你试图修改,你只会看到这个:
image


当把用户第一次添加到SharePoint站点中时,SharePoint自动以用户的AD信息为基础,来写入到UserInfo表中。然后,“D标记”所示的同步操作,会将存储到SharePoint站点中的用户信息同步到User Profile中。同时,SharePoint Server还会自动定时的,将用户在User Profile中的信息,同步到各个SharePoint站点。这种同步是双向的。但是由于用户实际上不能在SharePoint站点中修改用户信息,所以实际上,这种同步绝大部分时候,都是将User Profile中的用户信息推送到SharePoint站点中。

“D标记”所示的同步过程是由2个SharePoint计时器作用(Timer Job)来完成的,“配置文件同步”(进行完全同步)和“配置文件快速同步”(进行差量同步):
image 

由于SharePoint Server是以User Profile来作为用户信息存储中心,所以SharePoint Server不允许用户直接修改存储在SharePoint站点中的用户信息,而是定时自动的将User Profile中的用户信息推送到每个站点中。也就是说,即使你手工修改了UserInfo表中存储的用户信息数据,或通过SPUser对象模型修改了用户的属性信息,但它们很可能很快就会又被自动的覆盖成User Profile中的值。我们应该通过修改User Profile用户信息,来达到更新和维护用户信息的目的。User Profile应该是整个SharePoint Server服务器场中唯一的用户信息存储中心。

特别说明1:如何手工来快速进行“D标记”中所示的将User Profile用户信息同步到SharePoint站点用户信息的过程?
尝试在服务器上手工执行下面两个stsadm指令:
stsadm -o execadmsvcjobs
stsadm -o sync

特别说明2:为什么似乎“D标记”所示的同步过程,不能同步某些用户在SharePoint站点中的信息?
因为“D标记”所示配置文件同步操作,只会同步那些SharePoint认为是SharePoint站点“活动用户”。一个用户是否是活动用户由UserInfo表中的某个字段来标识。当一个用户在站点中进行某些“确实的”操作时,比如上传一个文件,他就会自动被标记为“活动用户”。

总结:
简单来说,就如同第一张图片所示的那样,AD -> User Profile <-> Site User Info。

posted @ | Feedback (6) | Filed Under [ SharePoint ]

Wednesday, February 13, 2008

下载Visual Studio Extensions for SharePoint v1.1    User Guide

1、此版本(1.1)稍后会发布中文版
2、此版本仍然只支持Visual Studio 2005
3、此版本仍然必须安装在包含了SharePoint Server(或WSS)、Visual Studio的机器上
4、下个版本(1.2)会支持Visual Studio 2008,大概年中发布

posted @ | Feedback (2) | Filed Under [ SharePoint ]

Sunday, February 03, 2008

根据这篇文章,在微软刚过去的08财年第二季度(即日历年2007/10 - 2007/12这三个月),微软的SharePoint销售数据是10亿美元!如果你觉得人们不喜欢SharePoint,那么微软的利润报表会告诉你,不,无数人都很喜欢SharePoint!:)

更新:
应群主大S要求,如果您对MOSS开发有心得,欢迎加入目前来看似乎已经是最大的MOSS开发MSN群:group194869@xiaoi.com

posted @ | Feedback (19) | Filed Under [ SharePoint ]

Saturday, February 02, 2008

WF本质论WCF服务编程

“WF本质论”(“Essential Windows Workflow Foundation”),其重要性确实可以与“COM本质论”相提并论。“WCF服务编程”(“Programming WCF Services”),基本上把WCF Developer应该了解的都讲到了。两本书的中文版翻译质量皆佳,值得推荐。另外对WPF基本没有了解,就不推荐了...

posted @ | Feedback (5) |

Wednesday, January 30, 2008

之前的文章里面,写了一个方法,来禁止掉SharePoint页面的个性化。但当时就有人问了,如果我只想管理员能够个性化页面,而非管理员不能做这个操作,又应该如何做呢?下面就是方法。注意:这个方法是基于SharePoint如何显示其“网站操作”菜单的原理,也就是说,这个方法是基于其原理的“倒推论”,我没有对这个方法进行过完整的验证测试...:(

首先,WSS 3.0的Master Page是使用了下面两个方法之一来显示页面右上方的那个“网站操作”菜单的。

1、直接在master page上使用“Microsoft.SharePoint.WebControls.SiteActions”控件,比如default.master就是这样:

image

2、或者,在manster page上使用“Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES\PublishingActionMenu.ascx”这个用户控件(当然了,这个用户控件里面其实也是使用“Microsoft.SharePoint.WebControls.SiteActions”来的)。比如BlueBand.master:

image

所以,我下面说的这个步骤,就要根据你是使用的哪个master page,来决定