Tuesday, October 27, 2009

Guida Sharepoint - Introduzione a Collaborative Application Markup Language (CAML)

Collaborative Application Markup Language, per gli amici CAML, è usato su Microsoft Office SharePoint per effettuare query.
Si basa su una definizione XML che ci permette di manipolare gli oggetti di SharePoint.
Di seguito una semplice query nella quale, definiamo un filtro che controlla se il valore della colonna specificata sia uguale al valore inserito e i risultati ottenuti verranno ordinati secondo le colonne elencate:

    
        
        
            
            insertValueHere
        
    
    
        
        
    

Ecco la tabella con gli operatori di confronto:
Chiave Tipo controllo
Contains Contiene il testo inserito
Eq Uguale a
Geq Più grande o uguale a
Gt Più grande di
Leq Più piccolo o uguale a
Lt Più piccolo di
Neq Non uguale a
DateRangesOverlap Confronto fra date in eventi ricorrenti per controllare se si sovrappongono
IsNotNull Non è null
IsNull E’ null

Sfortunatamente SharePoint a volte traduce, il nome delle colonne create, in una qualche maniera non intuitiva; e sono i nomi che dobbiamo inserire nei FieldRefs delle nostre query CAML;
ad esempio la colonna “Start Date” diventerà “Start_x0020_Date”.
Di seguito una semplice console application con la quale possiamo ottenere i nomi delle nostre colonne:
namespace SharePointTools
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;

    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();
        }
    }
}

Lavorando su SharePoint vi sarà utile creare una serie di tool che vi torneranno utili durante lo sviluppo della vostra applicazione; tool come quello di sopra.

L’oggetto SPQuery è usato per ottenere il FieldRefs dalla view.
La seguente query ordina i dati ottenuti per la colonna Title e filtra i dati per la colonna “Start Date” dove il valore è più piccolo della data inserita:

    
        
    
    
        
            
            2003-01-01T00:00:00Z
        
    

Di seguito una console application che esegue la query di cui sopra:
namespace SharePointTools
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;

    class SPCAMLQuery
    {
        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 = "2008-01-01T00:00:00Z";

            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();
        }
    }
}


Sempre tramite CAML abbiamo anche a disposizione gli operatori logici AND e OR, eccone un esempio:

    
        
    
    
        
            
                
                2008-01-01T00:00:00Z
            
            
                
                80000
            
        
    

Creare le query CAML a manina non è certo uno dei compiti più semplici.
Sicurametne vi tornerà utile il tool U2U CAML Query Builder
enjoy

No comments:

Post a Comment