Abfragen von OData-Feeds für Project-Berichtsdaten

Office 2013 und höher

Zum Lesen von Berichtsdaten in Project Server 2013 gibt es mehrere Möglichkeiten, OData-Abfragen des ProjectData-Diensts auszuführen. Das Business Intelligence Center in Project Web App enthält eine Datenverbindungsseite, auf der Sie die Office-Datenverbindung für die Project Server-OData-Berichterstellung auswählen können. Durch Auswählen der standardmäßigen Office-Datenverbindung wird eine Excel 2013-Arbeitsmappe geöffnet, in der Sie PivotTables, PivotCharts und PowerView-Berichte erstellen können. Es gibt mehrere Standardberichte, die in Project Server 2013 enthalten sind.

Sie können benutzerdefinierte Apps erstellen, die mithilfe von Microsoft .NET Framework 4 entwickelt werden, z. B. Apps für lokale Berichterstellung oder Remote-Berichterstellung, oder ein Silverlight-Webpart. Für eine Windows Phone-App können Sie die LINQ-Abfragesyntax in Visual C#-Anweisungen, Visual Basic-Anweisungen oder anderen .NET Framework-Sprachen verwenden. Wenn Sie es vorziehen, können Sie die Lambda-Syntax bei LINQ-Methoden für dieselben Abfragen verwenden. Bei Apps, die Sie für das Web oder für andere Geräte entwickeln, können Sie REST-Abfragen oder JavaScript-Anweisungen verwenden.

Der Project 2013-SDK-Download umfasst das HelloProject_OData-Beispiel Office-Add-In, das eine REST-Abfrage mit JavaScript und jQuery zum Zusammenfassen von Informationen aus dem ProjectData-Dienst in einem Aufgabenbereich in Project Professional 2013 verwendet.

Es gibt viele Drittanbietertools und OData-Consumeranwendungen, die beim schnellen Erstellen und Testen von Abfragen behilflich sein können. Sie können eine REST-URL in einem Browser einfügen und die Daten in der Seitenquelle oder ein einem Web-Debuggingtool, wie z. B. Fiddler (http://www.fiddler2.com), anzeigen. Für Links zu Tools wie OData-Explorer und LINQPad wählen Sie im Open Data Protocol-Ökosystem () Consumer aus.

Weitere Informationen zur OData-REST-Abfragen in SharePoint 2013 finden Sie unter Verwenden von OData-Abfragevorgängen in SharePoint REST-Anforderungen.

Der XML-Inhalt eines Entitätsdatenmodells wird auch als Dienst-Metadatendokument oder OData-Schema bezeichnet. Das Dienst-Metadatendokument für den ProjectData-Dienst gibt die Entitäten und Beziehungen an, die in den Project Server-Berichtsdaten zur Verfügung stehen. Verfahren 1 zeigt, wie das OData-Schema für den ProjectData-Dienst verwendet wird, um REST-Abfragen der Project Server-Berichtsdaten zu erstellen.

Verfahren 1. So verwenden Sie das OData-Schema und erstellen REST Abfragen von Project Server-Berichtsdaten

  1. Die URL des ProjectData-Diensts ist http://ServerName/ProjectServerName/_api/ProjectData. Wenn Ihre -Website beispielsweise ist, geben Sie die folgende URL in einen Browser ein, um das Dienst-Metadatendokument abzurufen: http://MyServer/pwa/_api/ProjectData/$metadata.

  2. Speichern Sie die XML-Daten in einer Datei, beispielsweise eine Datei namens ProjectData.xml. DasReportingData-Schemaelement enthält EntityType-Elemente und Association-Elemente. Das ReportingData-EntityContainer-Element enthält EntitySet-Elemente und AssociationSet-Elemente.

  3. Um die Datei „ProjectData.xml“ für einfachere Lesbarkeit zu formatieren, öffnen Sie die Datei in Visual Studio, wählen Sie im Menü Bearbeiten die Option Erweitert aus, und wählen dann Dokument formatieren aus. Oder klicken Sie auf das Symbol Dokument formatieren auf der XML-Editor-Symbolleiste.

  4. Um die XML-Daten aus REST-Abfragen direkt im Browser anzuzeigen, deaktivieren Sie die Feedleseanzeige. Führen Sie in Internet Explorer z. B. die folgenden Schritte aus:

    1. Öffnen Sie das Dialogfeld Internetoptionen.

    2. Wählen Sie die Registerkarte Inhalt aus.

    3. Wählen Sie im Abschnitt Feeds und Web Slices die Option Einstellungen aus.

    4. Deaktivieren Sie im Abschnitt Erweitert des Dialogfelds Einstellungen für Feeds und Web Slices das Kontrollkästchen Feedleseanzeige einschalten.

    5. Wählen Sie OK, und starten Sie Internet Explorer neu.

  5. Um die Liste von EntitySet-Elementen abzurufen, bei denen es sich um die primären Entitätenauflistungen handelt, die im ProjectData-Dienst verfügbar sind, verwenden Sie die folgende URL im Browser: http://ServerName/ProjectServerName/_api/ProjectData

    Im XML-Ergebnis zeigen die collection-Elemente beispielsweise, dass Sie Projects und ProjectBaselines direkt abfragen können.

    <collection href="Projects">
      <atom:title>Projects</atom:title> 
    </collection>
    <collection href="ProjectBaselines">
      <atom:title>ProjectBaselines</atom:title> 
    </collection>
    

    Weitere Informationen zu diesen Entitätenmengen finden Sie unter EntitySet-Element: Projekte und EntitySet-Element: ProjectBaselines.

  6. Verwenden Sie zum Abrufen der Auflistung von Projekten und der Zuweisungen und Eigenschaften der einzelnen Projekte http://ServerName/ProjectServerName/_api/ProjectData/Projects.

  7. Um die Zuordnungen und die Eigenschaften eines bestimmten Projekts abzurufen, geben Sie den Primärschlüssel des Project-Entitätstyps an (siehe das Key-Element im EntityType-Element: Projekt). Die ProjectId-Eigenschaft ist beispielsweise der Primärschlüssel der Project-Entität. ProjectId ist vom Typ Edm.Guid. Die Abfrage für ein bestimmtes Projekt kann als http://ServerName/ProjectServerName/_api/ProjectData/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208') ausgedrückt werden .

    Die link-Elemente in den XML-Ergebnissen zeigen die URL-Erweiterungen für die Zuordnungen des Projekts. Die href-Attribute in den folgenden link-Elementen zeigen, wie die Auflistung von Zuordnungen und Aufgaben im Projekt abgerufen werden.

    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Assignments"
        type="application/atom+xml;type=feed" 
        title="Assignments" href="Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Assignments" />
    . . .
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Tasks" 
        type="application/atom+xml;type=feed" 
        title="Tasks" href="Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Tasks" />
    . . .
    

    Im Referenzthema EntityType-Element: Projekt sind alle Zuordnungen und Eigenschaften aufgeführt, die für den Project-Entitätstyp verfügbar sind. Die Abfrageergebnisse enthalten beispielsweise das tatsächliche Startdatum und die Anzahl von Arbeitsstunden, die tatsächlich für das Projekt abgeschlossen wurden. Zum Beispiel:

    . . .
    <content type="application/xml">
      <m:properties>
        <d:ProjectId m:type="Edm.Guid">263fc8d7-427c-e111-92fc-00155d3ba208</d:ProjectId>
        . . .
        <d:ProjectActualStartDate m:type="Edm.DateTime">2012-04-02T08:00:00</d:ProjectActualStartDate>
        <d:ProjectActualWork m:type="Edm.Decimal">32.000000</d:ProjectActualWork>
        . . .
      </m:properties>
    </content>
    
  8. Um eine einzelne Eigenschaft des Projekts abzufragen, z. B. den Projektnamen, verwenden Sie die folgende Abfrage: http://ServerName/ProjectServerName/_api/ProjectData/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/ProjectName

  9. Um mehrere Eigenschaften des Projekts abzufragen, z. B. den Projektnamen, die Projektkosten und die Projektwährung, verwenden Sie die folgende Abfrage: http://ServerName/ProjectServerName/_api/ProjectData/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')?$select=ProjectName,ProjectCost,ProjectCurrency. Die Ergebnisse enthalten Folgendes:

    <id>http://ServerName/ProjectServerName/_api/ProjectData
        /Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')</id>
    <category term="ReportingData.Project" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <link rel="edit" title="Project" href="Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')" />
    . . .
    <content type="application/xml">
      <m:properties>
        <d:ProjectCost m:type="Edm.Decimal">3600.000000</d:ProjectCost>
        <d:ProjectCurrency>USD</d:ProjectCurrency>
        <d:ProjectName>My project name</d:ProjectName>
      </m:properties>
    </content>
    
  10. Da eines der NavigationProperty-Elemente im EntityType-Element: Projekt dieAssociation-Element: Project_Tasks_Task_Project -Beziehung verwendet, können Sie die folgende Abfrage verwenden, um alle Aufgaben im Projekt abzurufen: http://ServerName/ProjectServerName/_api/ProjectData/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Tasks. Die Ergebnisse enthalten die link-Elemente für die Entitätszuweisungen jeder Aufgabe und die Eigenschaften der einzelnen Aufgaben. Die Projektzusammenfassungsaufgabe ist die erste Aufgabe in den Suchergebnissen; dabei gilt: TaskIndex = 0.

    In einer Abfrage, die mit einem Projekt beginnt, zeigt das XML-Ergebnis sowohl einen Primärschlüssel als auch einen Fremdschlüssel für jede Aufgabenzuordnung. Die XML-Daten enthalten z. B. die Zuordnung für eine bestimmte Aufgabe und die Zuordnung für die Zuweisungen in dieser Aufgabe. In den folgenden XML-Ergebnissen der Abfrage ist ProjectId der Primärschlüssel und TaskId ist der Fremdschlüssel. Im Thema EntityType-Element: Aufgabe sind beide Schlüssel dargestellt.

    . . .
    <link rel="edit" title="Task" 
        href="Tasks(ProjectId=guid'263fc8d7-427c-e111-92fc-00155d3ba208', 
        TaskId=guid'3631bf8b-427c-e111-92fc-00155d3ba208')" />
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Assignments" 
        type="application/atom+xml;type=feed" title="Assignments" 
        href="Tasks(ProjectId=guid'263fc8d7-427c-e111-92fc-00155d3ba208', 
        TaskId=guid'3631bf8b-427c-e111-92fc-00155d3ba208')/Assignments" />
    . . .
    

Sie können das Entitätsdatenmodell mithilfe von REST-Abfragen durchlaufen. Jedes EntityType-Element in dem ReportingData Schema-Element führt die Eigenschaften und Zuordnungen auf, die für die Entität verfügbar sind.

Zusätzlich zu den grundlegenden Abfragen können Sie Optionen für Abfragezeichenfolgen verwenden, z. B. $select, $skip, $top, $filter und $orderby. Die $links-Abfrageoption und die $expand-Abfrageoption sind nicht in dem ProjectData-Dienst implementiert. Weitere Informationen finden Sie unter Optionen für Abfragezeichenfolge in der Odata.org-Dokumentation.

Hinweis Hinweis

Der ProjectData-Dienst implementiert die Auslagerung für die Entitätenmengen, um die Anzahl von Entitäten zu beschränken, die in einer Abfrage zurückgegeben werden können. Sie können den Get-SPProjectOdataConfiguration-Befehl oder den Set-SPProjectOdataConfiguration-Befehl in der SharePoint 2013-Verwaltungsshell verwenden, um die Grenzwerte für eine angegebene Entität, z. B. Tasks, oder für alle 33 Entitäten abzurufen oder festzulegen. Weitere Informationen finden Sie unter ProjectData - OData-Dienstreferenz.

Nachfolgend finden Sie weitere Beispiele für REST-Abfragen (in den Beispielen ist der erste Teil der URL, http://ServerName/ProjectServerName/_api/ProjectData, nicht dargestellt):

  • Rufen Sie Zuweisungen in der Project Web App-Instanz ab: ~/Assignments

    Hinweis Hinweis

    Für Abfragen, bei denen eine große Datenmenge zurückgegeben werden kann, können Sie die Daten reduzieren, indem Sie mit eine $filter-URL-Option verwenden. Weitere Möglichkeiten der Datenbegrenzung finden Sie unter ProjectData – OData-Dienstreferenz für Project.

  • Um alle Zuweisungen in einem bestimmten Projekt abzurufen, führt eine der folgenden Abfragen die gleiche Aufgabe aus:

    ~/Assignments?$filter=ProjectId eq guid'263fc8d7-427c-e111-92fc-00155d3ba208'

    ODER

    ~/Assignments?$filter=ProjectName eq 'My project name'

    ProjectId ist der Primärschlüssel für die Assignment-Entität, aber die $filter-Option kann eine beliebige Eigenschaft der Assignment-Entität verwenden.

  • Hier ist eine andere Abfrage zum Abrufen der Zuweisungen in einem bestimmten Projekt: ~/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Assignments

  • Rufen Sie den Ressourcennamen für eine bestimmte Zuweisung ab: ~/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Assignments(ProjectId=guid'263fc8d7-427c-e111-92fc-00155d3ba208',AssignmentId=guid'a0eafeb5-437c-e111-92fc-00155d3ba208')/ResourceName

  • Da sich die NavigationProperty-Elemente auf ein Association-Element mit zwei Endpunkten beziehen, können Sie mithilfe der REST-URL auch rückwärts navigieren. Um beispielsweise das Projekt für eine bestimmte Zuweisung abzurufen, führt eine der folgenden Abfragen die gleiche Aufgabe aus:

    ~/Assignments(ProjectId=guid'263fc8d7-427c-e111-92fc-00155d3ba208',AssignmentId=guid'a0eafeb5-437c-e111-92fc-00155d3ba208')/Project

    ODER

    ~/Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208')/Assignments(ProjectId=guid'263fc8d7-427c-e111-92fc-00155d3ba208',AssignmentId=guid'a0eafeb5-437c-e111-92fc-00155d3ba208')/Project

Hinweis Hinweis

Da in einigen Browsern ein Standardwert von ca. 2.000 Zeichen für die maximale URL-Länge verwendet wird, kann ein Browser REST-Abfragen des ProjectData-Diensts so beschränken, dass ein Element (eine Eigenschaft oder eine Auflistung) mit bis zu zwei Auflistungsschritten vom übergeordneten zum untergeordneten Element zurückgegeben wird. Eine Abfrage mit zwei Schritten von Projects nach Tasks kann beispielsweise als ~/Projects(projectId)/Tasks(projectId, taskId)/Assignments ausgedrückt werden. Diese Abfrage ruft die Auflistung von Zuweisungen in einem angegebenen Projekt und einer angegebenen Aufgabe ab.

Eine Abfrage mit drei Schritten zum Abrufen eines bestimmten Zuweisungselements kann aber möglicherweise die standardmäßige Maximallänge der URL überschreiten. ~/Projects(projectId)/Tasks(projectId, taskId)/Assignments(assignmentId, projectId,) funktioniert zum Beispiel möglicherweise nicht. Verwenden Sie bei einer kürzeren URL zum Abrufen einer bestimmten Zuweisung oder Zuweisungseigenschaft eine Abfrage mit einem Schritt oder zwei Schritten, z. B. ~/Assignments(projectId, assignmentId) oder ~/Tasks(projectId, taskId)/Assignments(projectId, assignmentId)/ResourceName.

Alternativ können Sie den maxUrlLength-Attributwert im httpRuntime-Element der Datei „web.config“ für Project Web App (in der Verzeichnis [Program Files]\Microsoft Office Servers\15.0\WebServices\Shared\ProjectServer\PSI) erhöhen. Weitere Informationen finden Sie unter httpRuntime-Element (ASP.NET-Einstellungsschema).

In Verfahren 2 wird gezeigt, wie LINQ-Abfragen in Visual C# mithilfe von Ausdrücken in der deklarativen LINQ-Abfragesyntax und mithilfe der Methodensyntax mit Lambda-Ausdrücken erstellt werden. Sie können Visual Studio 2010 oder Visual Studio 2012 verwenden.

Verfahren 2. So erstellen Sie eine einfache Anwendung für LINQ-Abfragen von Project Server-Berichtsdaten

  1. Erstellen Sie ein Visual Studio-Projekt, das die Vorlage der Windows-Konsolenanwendung verwendet. Wählen Sie das Ziel .NET Framework 4 aus. Erstellen Sie z. B. ein Projekt mit dem Namen TestProjectData.

  2. Fügen Sie einen Dienstverweis zu dem ProjectData-Dienst hinzu, der die Adresse http://ServerName/ProjectServername/_api/ProjectData/$metadata aufweist. Wählen Sie im Dialogfeld Dienstverweis hinzufügen die Option Gehe zu, um die Add aufzulösen, wählen Sie den -Dienst aus, und benennen Sie dann den Dienstverweis-Namespace. Benennen Sie Namespace z. B. ProjectOData. Wenn Sie den ReportingData-Knoten erweitern, können Sie alle Entitätenmengen sehen, die im ProjectData-Dienst definiert sind (siehe Abbildung 1).

    Abbildung 1. Festlegen eines OData-Dienstverweises

    Festlegen eines OData-Dienstverweises

    Visual Studio fügt den erforderlichen System.Data.Services.Client-Verweis hinzu, wenn Sie den ProjectOData-Dienstverweis erstellen.

  3. Fügen Sie der Datei Program.cs" den folgenden Code hinzu: Die context-Variable wird mit den Metadaten in dem ProjectData-EDM initialisiert, das Sie durch Hinzufügen des ProjectOData-Dienstverweises erstellt haben.

    Die projectQuery1-Variable wird auf einen LINQ-Abfrageausdruck für Projekte festgelegt, in dem das Startdatum des Projekts nach dem 1. Januar 2012 liegt und die Ausgabe nach dem Projektnamen sortiert ist. Die projectQuery1-Variable ist vom Typ IOrderedQueryable<ProjectOData.Project>.

    Die projectQuery2-Variable generiert die gleichen Abfrageergebnisse mithilfe von Lambda-Ausdrücken. Die projectQuery2-Variable ist vom Typ IQueryable<ProjectOData.Project>. .NET Framework konvertiert projectQuery1 intern so, dass die Methodensyntax von projectQuery2 verwendet wird.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Data.Services.Client;
    
    namespace TestProjectData
    {
        class Program
        {
            private const string PSDATA = "http://ServerName/ProjectServername/_api/ProjectData";
            
            static void Main(string[] args)
            {
                ProjectOData.ReportingData context = 
                    new ProjectOData.ReportingData(new Uri(PSDATA, UriKind.Absolute));
                context.Credentials = CredentialCache.DefaultCredentials;
    
                var projectQuery1 = from p in context.Projects
                                    where p.ProjectStartDate > new DateTime(2012, 1, 1)
                                    orderby p.ProjectName
                                    select p;
    
                Console.WriteLine("Using declarative LINQ query syntax:\n");
                foreach (ProjectOData.Project proj in projectQuery1)
                {
                    Console.WriteLine(proj.ProjectName + " :\tStart date: " + proj.ProjectStartDate.ToString());
                }
    
                var projectQuery2 = context.Projects
                                       .Where(p => (p.ProjectStartDate > new DateTime(2012, 1, 1)))
                                       .OrderBy(p => p.ProjectName)
                                       .Select(p => p);
    
                Console.WriteLine("\n\nUsing lambda expressions for a LINQ query:\n");
                foreach (ProjectOData.Project proj in projectQuery2)
                {
                    Console.WriteLine(proj.ProjectName + " :\tStart date: " + proj.ProjectStartDate.ToString());
                }
    
                Console.Write("\nPress any key to exit: ");
                Console.ReadKey(true);
            }
        }
    }
    
  4. Legen Sie einen Haltepunkt nach der projectQuery1-Variable fest, und führen Sie die Anwendung aus. Visual Studio konvertiert die Abfrage intern zunächst in die OData-Methodensyntax mit Lambda-Ausdrücken und dann in eine REST-Abfrage für den OData-Dienst. Nachfolgend sehen Sie die REST-Abfrage für projectQuery1 (in einer Zeile):

    http://ServerName/ProjectServerName/_api/ProjectData/Projects()
        ?$filter=ProjectStartDate gt datetime'2012-01-01T00:00:00'
        &$orderby=ProjectName}
    

Beim Ausführen der TestProjectData-Anwendung zeigt die Konsole die folgende Ausgabe für drei Beispielprojekte an, die in Project Web App veröffentlicht werden:

Using declarative LINQ query syntax:

Imported from SharePoint :      Start date: 4/2/2012 8:00:00 AM
Test Proj 1 :   Start date: 4/5/2012 12:00:00 AM
WinProj test 1 :     Start date: 4/1/2012 8:00:00 AM

Using lambda expressions for a LINQ query:

Imported from SharePoint :      Start date: 4/2/2012 8:00:00 AM
Test Proj 1 :   Start date: 4/5/2012 12:00:00 AM
WinProj test 1 :     Start date: 4/1/2012 8:00:00 AM

Press any key to exit:

Da der ProjectData-Dienst die $links-Abfrageoption oder die $expand-Abfrageoption nicht implementiert, können Sie nicht direkt einen Entitätstyp als untergeordnetes Element eines anderen Entitätstyps abfragen. Um beispielsweise die Aufgaben in einem Projekt abzurufen, können Sie die Projects-Entitätenmenge nicht in einem Ausdruck, z. B. context.Projects(guid'263fc8d7-427c-e111-92fc-00155d3ba208').Tasks, verwenden. Sie können die Aufgaben in einem Projekt mithilfe der Tasks-Entitätenmenge abrufen, z. B.:

var taskQuery = context.Tasks
                        .Where(t => (t.ProjectId == 
                            new Guid("263fc8d7-427c-e111-92fc-00155d3ba208")))
                        .OrderBy(t => t.TaskIndex)
                        .Select(t => t);

Wenn Sie einen Dienstverweis auf ProjectData festlegen oder ~/ProjectData/$metadata abfragen, umfasst das Entitätsdatenmodell (EDM oder OData-Schema) ab dem Zeitpunkt, zu dem der Bezug hergestellt wird, benutzerdefinierte Feldeigenschaften. Die standardmäßigen benutzerdefinierten Felder in Project Web App enthalten beispielsweise das benutzerdefinierte RBS-Textfeld für die Resource-Entität, das benutzerdefinierteHealth-Feld für die Task-Entität und das benutzerdefinierte Project Departments-Feld für die Project-Entität. Da RBS und Health abwärts Zuweisungen zugeordnet sind, umfasst die Assignment-Entität die Health_T-Eigenschaft und die RBS_R-Eigenschaft wie folgt:

<EntityType Name="Assignment">
  . . .
  <Property Name="Health_T" Type="Edm.String" />
  <Property Name="RBS_R" Type="Edm.String" />
  . . .
</EntityType>
<EntityType Name="Project">
    . . .
    <Property Name="ProjectDepartments" Type="Edm.String" />
    . . .
</EntityType>
<EntityType Name="Resource">
    . . .
    <Property Name="RBS" Type="Edm.String" />
    . . .
</EntityType>
<EntityType Name="Task">
    . . .
    <Property Name="Health" Type="Edm.String" />
    . . .
</EntityType>

Wenn der Name des benutzerdefinierten Felds ein oder mehrere Leerzeichen enthält, z. B. Project Departments, werden die Leerzeichen in der ProjectDepartments-Eigenschaft ausgelassen. Wenn Sie ein benutzerdefiniertes Feld erstellen, wird die Eigenschaft des benutzerdefinierten Felds dem Entitätstyp hinzugefügt. Erstellen Sie z. B. die in Tabelle 1 dargestellten benutzerdefinierten Felder.

Tabelle 1. Benutzerdefinierte Felder zum Testen

Name des benutzerdefinierten Felds

Entität

Typ

Abwärts zuordnen zu
-Zuweisungen

Test Projekttext

Projekt

Text

Nicht zutreffend

Test Ressourcendauer

Ressource

Dauer

Ja

Test Aufgabentext

Aufgabe

Text

Ja

Wenn Sie die ~/ProjectData/$metadata-Abfrage aktualisieren, umfasst das EDM nun Eigenschaften für die neuen benutzerdefinierten Felder.

<EntityType Name="Assignment">
    . . .
    <Property Name="Health_T" Type="Edm.String" />
    <Property Name="RBS_R" Type="Edm.String" />
    <Property Name="TestResDur_R" Type="Edm.Decimal" />
    <Property Name="TestTaskText_T" Type="Edm.String" />
    . . .
</EntityType>
<EntityType Name="Project">
    . . .
    <Property Name="ProjectDepartments" Type="Edm.String" />
    <Property Name="TestProjText" Type="Edm.String" />
    . . .
</EntityType>
<EntityType Name="Resource">
    . . .
    <Property Name="RBS" Type="Edm.String" />
    <Property Name="TestResDur" Type="Edm.Decimal" />
    . . .
</EntityType>
<EntityType Name="Task">
    . . .
    <Property Name="Health" Type="Edm.String" />
    <Property Name="TestTaskText" Type="Edm.String" />
    . . .
</EntityType>
Wichtiger Hinweis Wichtig

Wenn Sie ein benutzerdefiniertes Enterprise-Feld erstellen, enthält ein Dienstverweis oder EDM, den bzw. das Sie zuvor aus einer Metadatenabfrage erstellt haben, nicht die neuen benutzerdefinierten Feldeigenschaften. Sie müssen den Dienstverweis oder die ~/ProjectData/$metadata-Abfrage aktualisieren, um die neuen Eigenschaften abzurufen.

Öffnen Sie das Ressourcencenter in Project Web App, bearbeiten Sie eine Ressource, und legen Sie dann den Wert des benutzerdefinierten Test Res Dur-Felds auf 3d fest. Erstellen Sie eine Abfrage für den benutzerdefinierten Feldwert (ersetzen Sie die ResourceId-Eigenschaft mit der GUID für die Ressource). Beispiel: ~/ProjectData/Resources(guid'4941e174-1596-e111-b0b9-00155d144b20')/TestResDur. Das XML-Ergebnis zeigt die Dauer in Arbeitsstunden wie folgt:

<d:TestResDur xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
    xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
    m:type="Edm.Decimal">24</d:TestResDur>
Anzeigen: