- محتویات اصلی صفحه

جستجو کن
خانه
  

Collaborative Application Markup Language (CAML)

CAML در شِیرپوینت برای کوئری گرفتن (پرس‌وجو کردن) از لیست‌ها و کمک در ایجاد و سفارشی کردن سایت استفاده می‌شود. برنامه‌نویسی اغلب یک مهارت لازم برای به‌دست آوردن داده‌ها از شِیرپوینت است. در اینجا می‌خواهیم نشان دهیم چگونه می‌توان پرس‌وجوهای کمل برای استخراج داده از لیست‌ها ایجاد کرد.

زبان CAML

زبان کمل از نخستین نسخه SharePoint 2001 و SharePoint Team Services همراه شِیرپوینت بوده است. XML تعریف شده‌ای است که کمک می‌کند تا وظایف کار با داده (data manipulation) در شِیرپوینت را انجام دهید. می‌توان ارتباط لیست و کمل را مشابه جدول پایگاه داده و پرس‌وجو(query) دانست. هنگامی که از db پرس‌و‌جو می‌کنیم هم می‌توانید تمام رکورد‌ها را از جدول بگیرید و رکوردی که می‌خواهید را پیدا کنید و یا اینکه از یک پرس‌و‌جوی SQL استفاده کنید تا با محدود کردن نتیجه فقط رکورد مد‌نظر شما را برگرداند. کمل در این کار شما را یاری می‌کند.

کمل باید یک سند well-formed XML باشد که از المنت های زیر تشکیل شده:

<Query>

<Where>

<!--Comparison Operators here-->

<Eq>

<FieldRef Name="insertFieldNameHere" />

<Value Type="insertDataTypeHere">insertValueHere</Value>

</Eq>

</Where>

<OrderBy>

<FieldRef Name="insertFieldNameHere" />

<FieldRef Name="insertFieldNameHere" />

</OrderBy>

</Query>

این پرس‌و‌جو‌ی کمل ساده یک فیلتر تعریف می‌کند به این مضمون: هرگاه فیلدی برابر مقداری (مشخص‌شده با استفاده از عنصر Eq) باشد. به‌علاوه می‌توان یک یا چندین عنصر FieldRef داخل عنصر OrderBy مشخص کرد که نتایج بر‌حسب یک یا چند ستون مرتب شوند.

در نمونه پیشین یک پرس‌و‌جوی کمل می‌تواند از یک یا چندین عملگر مقایسه‌ای جدول زیر استفاده کند که برای بیشتر فیلتر کردن نتایج پرس‌و‌جو استفاده می‌شود.

جدول عملگرهای مقایسه‌ای

Begins with a Given Text Value

Begins With

Contains a given text value

Contains

Equal to

Eq

Greater than or equal to

Geq

Greater than

Gt

Less than or equal to

Leq

Less than

Lt

Not equal to

Neq

Compares dates in recurring events to determine if they overlap

DateRangesOverlap

Is not null

IsNotNull

Is null

IsNull

 

شما بایست تمام این عناصر را با یک عنصر فرزند FieldRef همراه کنید.عنصر FieldRef نام مختص به شِیرپوینت ستونی که بایست ارزیابی شود را مشخص می کند.به‌علاوه اغلب عناصر پرس‌و‌جو (بجز IsNotNull و IsNull) نیازمند مشخص شدن یک عنصر فرزند Value هستند.جایی که شما مشخص می‌کنید کدام مقدار با عنصر FieldRef ارزیابی می‌شود.

متاسفانه شِیرپوینت همیشه FieldRefs هایی که می‌خواهید ارجاع دهید را مستقیماً در اختیار نمی‌گذارد. کد زیر نمونه‌ای است که با استفاده از آن می‌توانید نام FieldRef های یک لیست را با استفاده از یک برنامه کنسول و API های MOSS 2007 استخراج کنید:

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.SharePoint;

namespace SharePointUtils

{

class Program

{

static void Main(string[] args)

{

string siteUrl = args[0];

string listName = args[1];

string viewName = args[2];

SPSite site = new SPSite(siteUrl);

SPWeb web = site.OpenWeb();

SPList employeesList = web.Lists[listName];

SPQuery query = new SPQuery(employeesList.Views[viewName]);

System.Diagnostics.Debug.WriteLine(query.ViewXml);

Console.WriteLine(query.ViewXml);

Console.ReadLine();

}

}

}

کد بسیار ساده است و خروجی آن برای هنگام نوشتن پرس‌و‌جوی کمل بسیار مفید است.سه آرگومان نیاز است به ترتیب URL سایت، نام لیست و نام نما (View). اشیاء سایت، وب و لیست ایجاد می‌شوند همچنین نمونه ای از SPQuery هم ایجاد می‌شود. SPQuery برای به‌دست آوردن نام فیلد‌های مختص شِیرپوینت (یا همان FieldRefs) از نما استفاده می‌شود. شکل زیر نمایAll Items مربوط به یک لیست سفارشی بنام Employees را نشان می‌دهد. برای اجرای صحیح کدهایی که در ادامه می‌آید بر روی سایتتان نیازمند ایجاد این لیست سفارشی بر روی سایت خود هستید.

هنگامی که کد پیشین را برای نمای All Items لیست سفارشی Employees اجرا کنید نتایج مطابق شکل زیر خواهد بود.

فیلد‌های لیست داخل عنصر FieldRef تعریف می‌شوند برای مثال سه فیلدی که در شکل بالا آمده‌اند Employee Name و Salary و Start Date در حقیقت به ترتیب بعنوان "LinkTitle" و "Salary و "Start_x0020_Date" ارائه شده‌اند.

بخش بعدی ایجاد یک پرس‌و‌جوی کمل با استفاده از FieldRefs برروی لیست Employees است.

پرس‌و‌جو بر روی لیست

بعد شناسایی FieldRefs ای که می‌خواهید با آن پرس‌وجوی‌ خود را فیلتر کنید دیگر پرس‌و‌جو بسیار ساده است. به عنوان نمونه در لیست Employees پرس‌وجویی خواهیم داشت که لیست تمام کارمندانی که پیش از January 1, 2003 آغاز به‌کار نموده‌اند را برگرداند، کافی است کارمندانی با تاریخ شروع پیش از January 1, 2003 را به‌دست آوریم:

<Query>

<OrderBy>

<FieldRef Name="Title" />

</OrderBy>

<Where>

<Lt>

<FieldRef Name="Start_x0020_Date" />

<Value Type="DateTime">2003-01-01T00:00:00Z</Value>

</Lt>

</Where>

</Query>

 

این پرس‌و‌جو دو کار انجام می‌دهد نخست، با کمک عنصر OrderByمشخص می‌کند داده‌ها چگونه مرتب شوند که اینجا فیلد Title است که معادل نام کارمند است.بعد، یک عنصر Where که تعریف شده تا فیلتر را مشخص کند و مشابه بخش WHERE در SQL است. عنصر Where یک Lt (کوچک‌تر از) تعریف می کند که دارای دو عنصر FieldRef و Value می‌باشد. FieldRef نام ستون در لیست و Value نوع داده و مقداری که باید مقایسه شود را مشخص می‌کند.

در زیر قطعه کدی است که پرس‌و‌جوی بالا را اجرا می‌کند:

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.SharePoint;

namespace SharePointUtils

{

class CAMLQuery

{

static void Main(string[] args)

{

string siteName = args[0];

string listName = args[1];

string viewName = args[1];

SPSite site = new SPSite(siteName);

SPWeb web = site.OpenWeb();

SPList employeesList = web.Lists[listName];

SPQuery query = new SPQuery(employeesList.Views[viewName]);

query.Query = "<Query><OrderBy><FieldRef Name=\"Title\"

/></OrderBy><Where><Lt><FieldRef Name=\"Start_x0020_Date\" /><Value

Type=\"DateTime\">2003-01-01T00:00:00Z</Value></Lt></Where></Query>";

SPListItemCollection filteredEmployees = employeesList.GetItems(query);

foreach (SPListItem i in filteredEmployees)

{

System.Diagnostics.Debug.WriteLine(i["Title"].ToString() + " " +

i["Salary"].ToString() + " " + i["Start_x0020_Date"].ToString());

}

Console.ReadLine();

}

}

}

کد انجام پرس‌و‌جو مانند نخستین مثال است بجز تنظیم مشخصه (property) Query شی SPQuery که query نام.دارد اینجاست که پرس‌و‌جوی کمل - که برای فیلتر کردن داده استفاده می‌شود - را نسبت می‌دهید. نتایج با بکارگیری متد GetItems از شی SPList و نمونه ای از کلاس SPListItemCollection بازگردانده می‌شود.این collection مقادیر را برروی خروجی نمایش می‌دهد. در ادامه نمونه‌ای از خروجی برگردانده شده از پرس‌و‌جوی کمل را خواهیم دید:

 

Brandon Bobb 62000 12/1/2001 12:00:00 AM

Rob Foster 110000 1/1/1999 12:00:00 AM

Stephen Baron 79000 1/25/2002 12:00:00 AM

تعداد رکوردهای لیست محدود بوده، نتایج به 3 رکورد محدود شده است.حال چگونه می‌توان فیلتر بیشتری بر لیست اعمال کرد؟ کمل دارای عناصر And و Or است که می تواند همراه با عنصر Where به‌کاررود. در زیر نمونه‌ای از پرس‌و‌جوی کمل که با تاریخ آغاز قبل از January 1, 2003 و درآمد کمتر از $80,000 فیلتر می‌شود می‌آید:

<Query>

<OrderBy>

<FieldRef Name="Title" />

</OrderBy>

<Where>

<And>

<Lt>

<FieldRef Name="Start_x0020_Date" />

<Value Type="DateTime">2003-01-01T00:00:00Z</Value>

</Lt>

<Lt>

<FieldRef Name="Salary" />

<Value Type="Currency">80000</Value>

</Lt>

</And>

</Where>

</Query>

 

طبیعتاً این فیلتر دو رکورد زیر از لیست مثال برمی‌گرداند:

 

Brandon Bobb 62000 12/1/2001 12:00:00 AM

Stephen Baron 79000 1/25/2002 12:00:00 AM

 

همان گونه که می‌بینید، پرس‌و‌جوی کمل به‌سادگی ایجاد و اجرا می‌شود. در بخش بعدی به یک ابزار رایگان می‌پردازیم که به‌سادگی می‌توانید پرس‌و‌جوهای خود را ایجاد و آزمایش نمایید.

به‌کارگیری U2U CAML Query Builder

این ابزار یک دانلود رایگان از U2U است که می‌توانید برای ایجاد و آزمایش پرس‌وجوی کمل استفاده کنید. ابزاری مفید که در زمان و اقدام‌های شما در هنگام نوشتن پرس‌وجوهای کمل صرفه‌جویی می‌کند. می توانید از این آدرس آن را دانلود نمایید.

شکل ابزار را به همراه لیست Employees که بحث شد نشان می‌دهد:

ملاحظه می‌نمایید که پس از این که لیست را انتخاب کنید ستون‌های لیست در کنترل ListBox جای می‌گیرند. سپس می‌توانید هر ستون را انتخاب کرده و برخی اطلاعات درمورد این که پرس‌وجو چگونه باید فیلتر شود فراهم کنید.در شکل پرس‌وجوی کمل رکوردهای دارای درآمد بالاتر از $30,000 را فیلتر می‌کند.

همچنین بسادگی می‌توانید پرس‌وجوی کمل را پیش آزمون کنید قبل از این که هرگونه کدی بنویسید. می توانید با کلیک دکمه Test این کار را بکنید. شکل زیر نتایجی که باپرس‌وجوی کمل بالا بازگردانده شده را نشان می‌دهد.

خلاصه

کمل زبان قدرتمندی است که نیازمند افزودن آن به مجموعه مهارتهای شِیرپوینتی خود هستید.در این مباحث جزییاتی درمورد این که چگونه از کمل برای پرس‌و‌جو کردن لیست‌ها و فیلتر کردن داده‌ها براساس معیارهای مشخص ارایه کردیم که به شما کمک می‌کند تا کارایی وب‌پارت های خود و سایر کدهایی که در تعامل با هر نوع از لیست‌های بر اساس داده است را بهبود بخشید.

 

ترجمه‌ای از فصل اول کتاب Microsoft® SharePoint® 2007 Development Unleashed

ایجاد یک Site Definition در SharePoint

Site Definitions در شاخه زیر قرار دارد:

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates

درون هر شاخه صفحات aspx برای صفحات سایت ها و لیست ها قرار گرفته است.فایل ONET.XML فایلی است که تنظیمات و ماژولهای تشکیل دهنده قالب را مشخص می کند و در زیر شاخه هر قالب وجود دارد.

   

Site Definitions توسط SharePoint رجیستر می شوند و از طریق فایل WEBTEMP<NAME OF SITE DEFINITION>.XML قابل دسترسی هستند.این فایل ها در شاخه زیر قرار دارند.

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\XML

ایجاد یک Site Definition در SharePoint

تمام کاری که بایست انجام بدیم اینه که:

گام نخست: شبیه سازی یک سایت موجود

گام دوم: برای رجیستر شدن تو SharePoint فایل WEBTEMP XML رو ایجاد کنید.

گام سوم: راه اندازی مجدد(!) IIS

گام چهارم : ایجاد یک سایت بر اساس تعریف سایت شخصی شده

گام نخست: شبیه سازی یک سایت موجود

به آدرس زیر رفته و زیر شاخه STS را کپی کنید و نام آن را به SAMPLE تغییر دهید.

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates

سپس به آدرس زیر رفته شاخه STS رو همونجا کپی پیست کرده نام آن را به SAMPLE تغییر دهید.

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033

گام دوم: برای رجیستر شدن تو SharePoint فایل WEBTEMP XML رو ایجاد کنید.

در زیر شاخه زیر فایل WEBTEMPSAMPLE.XML را با محتوای زیر قرار دهید.

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\XML

 

<?xml version="1.0" encoding="utf-8" ?>

<!-- _lcid="1033" _version="12.0.4017" _dal="1" -->

<!-- _LocalBinding -->

<Templates xmlns:ows="Microsoft SharePoint">

<Template Name="SAMPLE" ID="10001">

<Configuration ID="0" Title="Sample Site" Hidden="FALSE" ImageUrl="/_layouts/images/stsprev.png" Description="This sample template creates a site for teams to create, organize, and share information quickly and easily. It includes a Document Library, and basic lists such as Announcements, Calendar, Contacts, and Quick Links." DisplayCategory="Custom Site Definitions" > </Configuration>

<Configuration ID="1" Title="Sample Blank Site" Hidden="FALSE" ImageUrl="/_layouts/images/stsprev.png" Description="This sample template creates a Windows SharePoint Services-enabled Web site with a blank home page. You can use a Windows SharePoint Services-compatible Web page editor to add interactive lists or any other Windows SharePoint Services features." DisplayCategory="Custom Site Definitions" > </Configuration>

<Configuration ID="2" Title="Sample Document Workspace" Hidden="FALSE" ImageUrl="/_layouts/images/dwsprev.png" Description="This sample template creates a site for colleagues to work together on documents. It provides a document library for storing the primary document and supporting files, a Task list for assigning to-do items, and a Links list for resources related to the document." DisplayCategory="Custom Site Definitions" > </Configuration>

</Template>

</Templates>

نکته: مشخصه DisplayCategory مشخص میکند که در بخش ایجاد سایت قالب سایت در کدام tab نمایش داده شود. شما می توانید با نام دهی این مشخصه tab را مشخص کنید tab ای که موجود است یا نیست. در اینجا Custom Site Definitions

و گام سوم و چهارم

 

ترجمه آزاد از

http://www.sharepointblogs.com/tbaginski/archive/2007/08/16/creating-a-custom-site-definition-in-wss-v3-moss.aspx

برای مراجعه:

http://weblogs.asp.net/paulballard/archive/2007/04/09/creating-a-custom-sharepoint-2007-portal-site-definition-using-the-portalprovisioningprovider-class.aspx

تگ برای بلاگ

در پست های پیشین جایی به یک Tag Cloud اشاره کرده بودم دوستی عنوان کرده بود که نمایش آن را در بلاگ خودم انجام دهم اما این پست فقط در یک XML ساده مبحث را شرح می داد و در واقع پایه ای بود برای این نحو نمایش در DataView ها مثال : مدیری می خواهد مراکز فروش و شعب خود را بررسی کند این نحو از نمایش مرکز نمونه را با فونت بزرگتری مشخص می کند.

اگر خواستار این ساختار در بلاگ شیرپوینتی خود هستید باید از این مجموعه استفاده کنید.

نشان دادن داده بصورت Tag Cloud

به دلیل استفاده کردن تکنولوژیهای روز و مد نظرقرار دادن استاندارد ها در طراحی و پیاده سازی SharePoin گسترش آن به آسانی امکان پذیر است.

Tag Cloud روش بصری نشان دادن اهمیت موضوعی در بلاگها و سایتهاست که هر چه تگی دارای تعداد بیشتری مدخل باشد یا فونت بزرگتری نمایش داده می شود.برای پیاده سازی آن از یک Data View WebPart استفاده می کنیم.

افزودن وب پارت

در محیط SharePoint Designer یک فایل ASPX ایجاد کرده از منوی Data View ->Insert Data View را انتخاب میکنیم در این مثال برای سادگی از یک فایل XML به عنوان منبع داده استفاده می کنیم .فایل نمونه

سپس در بخش Data View ->Data View Properties >"Layout" tab از بین قالب ها قالب "horizontal list" ر را انتخاب می کنیم.

حال یکی از عناوین را انتخاب کرده Edit ->Quick tag editor را کلیک می کنیم در کد یک Span با اندازه فونت مثلا 12 قرار می دهیم

<xsl:value-of select="@Title"> --> <span style="font-size:12"><xsl:value-of select="@Title"></span>

   حال در قسمت اصلی به فرمول می رسیم که به شکل زیر است:

BaseFontSize + (BaseFontSize * (1 + ((S-A) / A))

میانگین مقادیر

S مقدار برای هر تگ

BaseFontSize  یک مقدار مشخص برای فونت که اولی اندازه اولیه و مقدار دومی ضریب رشد اندازه فونت تگهاست .

در این مثال فرمول مشخصا بصورت زیر می باشد:

8 + 8 * round((1 + ((@Sales - (sum(../Row/@Sales) div count(../Row/@Sales))) div (sum(../Row/@Sales) div count(../Row/@Sales)))))

از اونجایی که Data View WebPart بر اساس XSL ساخته شده می تونه امکاناتی مثل توابع ریاضی و .. رو پشتیبانی کنه حال دوباره یکی از عنوانها رو انتخاب کنید تگspan ای که اضافه کردیم رو انتخاب کنید در بخشTag Properties درProperty مربوط بهStyle فقط عدد (با تاکید: فقط عدد) رو انتخاب کنید و حالا فرمول را با انتخاب fx وارد میکنیم در نتیجه اگر کد رو ملاحظه کنید با همچین کدی مواجه می شید و البته در خالت Design هم نتیجه نهایی یک Tag Cloud ساده می باشد.

<span style="font-size:{12 + 12 * round((1 + ((@Sales - (sum(../Row/@Sales) div count(../Row/@Sales))) div (sum(../Row/@Sales) div count(../Row/@Sales)))))}"><xsl:value-of select="@Title" /></span>

ترجمه آزاد از

Show Your Data in a Tag Cloud with XPath Expressions

جستجوی پیشرفته و BDC

برای جستجوی پیشرفته ما بایست بر روی هر فیلد یک جستجو بتوانیم انجام دهیم برای این کار ما بایست از Mapping  استفاده کنیم

در صفحه Search Setting وارد بخش Metadata property mappings می شویم که لیستی از Managed Properties را نشان می دهد اگر وارد محدوده Crawled Properties  شویم آنگاه در شاخه Business Data می توان لیست فیلدهای Crawl شده را داشت حال مشخصه Included in index را True  می نماییم و به یکی از Managed Properties آن را متناظر (Map) می کنیم.در صورت نیاز می توان Managed Property جدید اضافه کرد.

Managed Properties

اکنون نوبت آن است که وارد تنظیم وب پارت شویم در مثال قبل صفحه ای که ایجاد کرده بودید بجای وب پارت Search Box از وب پارت  Advanced Search Box استفاده می نماییم.با تنظیم مشخصه Properties>Properties که در واقع یک فایل XML است برای اضافه کردن یک مشخصه بایست در قسمت PropertyDefs یک  PropertyDef اضافه نماییم نام Managed Property را در قسمت Name و نوع آن (text , integer, datetime, decimal )و نامی که در رابط کاربر(UI)   می خواهیم نشان داده شود را مشخص می کنیم

 

<PropertyDef Name="BankName" DataType="text" DisplayName="نام بانک"/>

</PropertyDefs>

 

سپس در بخش نتایج موردنظر (بفرض All Results) یک مرجع (Reference) به فیلد تعریف شده خواهیم داشت.

<ResultType DisplayName="All Results" Name="default">

                  <Query/>               

                  <PropertyRef Name="Name" />

                  <PropertyRef Name="BankName"/>

</ResultType>

اکنون ما جستجوی پیشرفته داریم که می توان بر روی فیلدها اعمال نمود. محدوده Reseller و همچنین فیلدی که ما اضافه نمودیم مشاهده می شود.و می توان با AND و OR رابطه های متعدد بر روی فیلدها ایجاد کرد.

Advanced Search

 

جستجو و BDC

برای اینکه یک Application  از نوع bdc امکان جستجو داشته باشد بایست در XML  تعریف آن متدی از نوع IDEnumerator تعریف شده باشد در اینصورت دارای قابلیت جستجو (Crawl able)  می باشد.در پایگاه نمونه مثال قبل موجودیت (Entity) Reseller  را می توان برای این کار درنظر گرفت

Administrative Tools>SharePoint 3 Central Administration >Shared Services Administration   

یک  Shared Service را انتخاب نموده وارد سایت مدیریت آن می شویم در این سایت در بخش Search  لینک Search settings  را پیگیری می نماییم وارد صفحه تنظیمات Crawl  و Scope می شویم .

برروی Content Sources and Crawl Schedules کلیک کرده وارد و یک content source جدید ایجاد نمایید.

ResellerBDC

نکته: در قسمت پایین می توان Schedules برای Crawl بصورت کامل و افزایشی تعیین کرد اما باید دقت کرد که کاربر پیش فرض (Search Settings > Default Content Access Account)  دارای حق دسترسی به پایگاه داده و BDC Application  باشد.

بعد از اطمینان از این که کاربر دارای حق دسترسی است می توان یک کراول کامل انجام داد اکنون بر روی content source جدید رفته و Start Full Crawl می نماییم در View Crawl Logs می توان مشاهده کرد که Crawl بدرستی انجام می پذیرد یا خیر.در پایان کاراز وضعیتCrawling Full به Idle  می انجامد.

درگام بعدی٬ یک محدوده جستجو تعریف می کنیم.در  Search settingsوارد View Scopes شده یک محدوده جدید تعریف می کنیم سپس در بخش Add Rules  که در حال حاضر  "Empty - Add Rules" می باشد یک Content Source مشخص می کنیم.مطابق شکل زیر:

Scope

اکنون چون محدوده جدید است باید update  شود  تا آماده گردد(New Scope – Ready after next updates (starts in n Minutes)

 ) که می توان با استفاده از Start Update Now منتظر Next scheduled update نماند.

برای استفاده از جستجو اکنون بایست وارد سایت موردنظر شده در بخش تنظیمات سایت (Site Settings) وارد Search Scopes می شویم و محدوده تعریف شده را از بخش unused scopes  به Search Dropdown تغییر می دهیم.یک صفحه وب پارتی ایجاد می نماییم و وب پارت های به شکل زیر اضافه می نماییم.

Search Page

و مشخصه صفحه نتایج(Result Page) وب پارت Search Box را به این صفحه بدهید.اکنون اگر از حالت ویرایش خارج شوید می توانید نتیجه را ملاحظه نمایید.

ایجاد Application و نمایش داده ها در Bussiness Data List

حال اگر مطالب معرفی شده را پیگیری کرده باشید شناخت مختصری از آنچه هست پیدا کرده اید. برای شروع کار نیازبه پایگاه داده SQLSERVER 2005  به همراه نمونه ها و پایگاه داده نمونه AdventureWorks  داریم.اگر SDK معرفی شده در پست پیش را نصب نموده باشید در شاخه نصب (\Program Files\2007 Office System Developer Resources\Samples\Business Data Catalog\AdventureWorks Samples) فایل XML  موردنیاز(دانلود) برای تعریف یک Application موجود می باشد کاری که ما بایست بکنیم دروندهی!(همون Import  خودمون) XML و تعریف Application  می باشد.

Administrative Tools>SharePoint 3 Central Administration >Shared Services Administration  

 

Shared Services Administration

یک  Shared Service را انتخاب نموده وارد سایت مدیریت آن می شویم در این سایت در بخش Business Data Catalog لینک Import application definition را پیگیری می نماییم و فایل تعریف داده را import  می نماییم.

Import

 

اگر فایل شما ساختار درستی داشته باشد شما پیش روی خود یک پروگرس بار خواهی دید که در نهایت شما را به صفحه تعریف Applications  منتقل می کند. حال کافیست در سایت خود از یک وب پارت Business Data List استفاده نمایید.و خصیصه Type  آن را به Entity  مورد نیاز تغییر دهید(جستجو باFind) اکنون اگر تغییرات را اعمال نمایید با شکلی همچون شکل زیر مواجه خواهید شد.

Data List WebPart

 

 

Business Data Catalog

BDC یکی از قابلیت های نسخه Enterprise محصول MOSS می باشد که برای بکارگیری پایگاههای داده در قابلیتهای داخلی MOSS  همچون لیست ها و جستجوی پیشرفته می باشد. برای این کار شما بایست فایل XML  ای تعریف کنید که مشخص کننده پایگاه داده (یا حتی سروسیهای وب) و تعریف داده ها ی آن (کلید های اصلی و انواع داده ای) می باشد.

برای آشنایی بیشتر با آن از این آدرس استفاده کنید.

 

اسکیمای این XML  در محل نصب  MOSS   در Program files\Microsoft Office Servers\12.0\Bin\ می باشد.

در یک توضیح مختصر باید گفت که دارای دو بخش مهم LOB System Instance که دارای اطلاعاتی از قبیل Connection String  می باشد که نحوه اتصال را مشخص می کند

<LobSystemInstances>

   <LobSystemInstance Name="CRMDB">

      <Properties>

         <Property Name="AuthenticationMode" Type="System.String">

         PassThrough</Property>

         <Property Name="DatabaseAccessProvider" Type="System.String">

         SqlServer</Property>

         <Property Name="RdbConnection Data Source" Type="System.String">

         your_server_name</Property>

         <Property Name="RdbConnection Initial Catalog" Type="System.String">

         AdventureWorks</Property>

         <Property Name="RdbConnection Integrated Security" Type=

         "System.String">SSPI</Property>

      </Properties>

   </LobSystemInstance>

</LobSystemInstances>

و بخش Entities که دارای اطلاعات مربوط به داده ها میباشد (متناظر با جدول در یک DB)

1.  <Entities>

2.     <Entity Name="Customer">

3.        <Properties>

4.           <!--Properties go here-->

5.        </Properties>

6.        <Identifiers>

7.           <!--Identifiers go here-->

8.        </Identifiers>

9.        <Methods>

10.          <Method Name ="GetCustomers">

11.             <Properties>

12.                <!--Method Properties go here-->

13.             </Properties>

14.             <Parameters>

15.                <!--Method Parameters go here-->

16.             </Parameters>

17.             <MethodInstances>

18.                <!--Method Instances go here-->

19.             </MethodInstances>

20.          </Method>

21.       </Methods>

22.    </Entity>

23. </Entities>

 

برای آشنایی با ساختار و ویرایش دستی  این XML  به این آدرس رجوع نمایید.

برای ویرایش می توان از برنامه های BdcMetaMan ویا همچنین Microsoft ®  Business Data Catalog Definition Editor

که در آدرس نصب SharePoint Server 2007 SDK: Software Development Kit (192.5 MB) در شاخه TOOLS  برنامه نصب آن موجود است.

مولفه های راهبری WSS

چندین کنترل استاندارد در  default.master زیربنای راهبری(navigation) را فراهم می کنند. برای مثال کنترل SiteMapPath که دربالای صفحه قرار می گیرد یک  breadcrumb مستقر می کند که به کاربران این اجازه  را می دهد تا به سطوح بالاتر صفحه دسترسی داشته باشند.

راهبری در WSS برپایه زیربنای فراهم کننده راهبری در ASP.NET 2.0 می باشد.در این مدل یک فراهم کننده راهبری طراحی  و ساخته می شود تا مجموعه ای از گره ها ی راهبری را فراهم کند.در بسیاری از موارد گره های ایجاد شده  بصورت یک  منو یا درخت نمایش داده می شوند.

WSS فراهم کننده های راهبری استاندارد مختلفی ارایه می نماید همچون کلاسهای  SPNavigationProvider, SPSiteMapProvider, SPContentMapProvider و SPXmlContentMapProvider. شما می توانید با بررسی بخش  siteMap در فایل web.config ببینید کجا تمام فراهم کننده های راهبری فعال تعریف می شوند.

top link bar و Quick Launch دو مولفه راهبری اصلی تعریف شده در default.master می باشند. هردو توسط یک کنترل مخصوص  WSS از نوع  AspMenu بهمراه کنترل SiteMapDataSource  پیکربندی  شده اند تا کنترل  SPNavigationProvider را ایجاد نمایند. با این تفاوت که برای اولی  SiteMapDataSource  با مقدار 1002 StartingNodeUrl مقدار دهی شده و در دومی با 1025

WSS این انعطاف پذیری ر ا برای کاربر فراهم می سازد تا گره های راهبری  را هم به top link bar و Quick Launch menu بیافزاید. نکته زیبا در اینست که نیازی به دستکاری default.master نیست و شما تنها گره ها را به پایگاه داده محتویات اضافه می نمایید.

هر چند این امکان از طریق بخش تنظیمات سایت نیزفراهم است  اما از طریق WSS object model با انعطاف بیشتری می توان به این هدف رسید. می توان در هنگام نصب یک امکان گره ها را افزود و یک  منوی  drop-down را بنحوی که از طریق رابط کاربر ممکن نیست افزود.

public override void FeatureActivated(SPFeatureReceiverProperties properties) {

  // get a hold of current site in context of feature activation
  SPWeb site = (SPWeb)properties.Feature.Parent;
  SPNavigationNodeCollection topNav = site.Navigation.TopNavigationBar;

  // create dropdown menu for custom site pages
  SPNavigationNode DropDownMenu1;
  DropDownMenu1 = new SPNavigationNode("Site Pages", "", false);
  topNav[0].Children.AddAsLast(DropDownMenu1);

  // add navigation nodes to create menu items
  DropDownMenu1.Children.AddAsLast(
      new SPNavigationNode( "Site Page 1",
                            "SitePages/Page01.aspx"));
  DropDownMenu1.Children.AddAsLast(
      new SPNavigationNode("Site Page 2",
                            "SitePages/Page02.aspx"));
}
1 - 10 بعدی

 ‭(Hidden)‬ مدیریت وبلاگ