次の方法で共有


ASMX ベースのコード サンプルの前提条件

適用対象: Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

この記事の内容
開発環境を設定する
アプリケーションを作成し、Web サービス参照を追加する
その他の参照を設定する
クレームの複数認証を使用する
一般的な定数の値を変更する
結果を確認する
クリーンアップする

クラス ライブラリと Web サービス参照に収録されているコード サンプルの多くは、ASMX Web サービスを使用する Microsoft Office Project 2007 SDK 用に開発された標準的な形式に準拠しています。サンプルは、コンソール アプリケーションにコピーされ、完全なユニットとして実行されることを目的として設計されています。例外はサンプルに記載されています。

Project 2010 SDK に付属する新しいサンプルは、Windows Communication Foundation (WCF) サービスを使用する形式に従っています。また、ASMX ベースのサンプルは、WCF サービスを使用するように変更することもできます。ここでは、サンプルを ASMX Web サービスで使用する方法について説明します。サンプルを WCF サービスで使用する方法については、「WCF ベースのコード サンプルの前提条件」を参照してください。

注意

新しいアプリケーションでは、WCF インターフェイスを使用してください。WCF インターフェイスは、マイクロソフトがネットワーク通信用に推奨する技術です。ASMX インターフェイスを使用する既存のアプリケーションは、Project Server 権限をチェックする Project Web App を経由する場合にのみその URL を使用できます。

バックエンドの SharePoint Web Services アプリケーションを経由する URL は、Project Server コンピューターで実行されるアプリケーションとミドルウェア コンポーネント、および偽装を使用するアプリケーションでのみ使用されます。ASMX インターフェイスは、バックエンドの URL を経由して使用できません。ASMX インターフェイスと WCF インターフェイスの詳細については、「WCF と PSI の概要」を参照してください。

コード サンプルを実行する前には、開発環境を設定し、アプリケーションを構成し、環境に一致するように一般的な定数の値を変更する必要があります。この記事は次のセクションで構成されます。

  • 開発環境を設定する

  • アプリケーションを作成し、Web サービス参照を追加する

    • PSI プロキシ アセンブリをビルドする

    • PSI プロキシ ファイルを追加する

    • Web サービス参照を追加する

  • その他の参照を設定する

  • クレームの複数認証を使用する

  • 一般的な定数の値を変更する

  • 結果を確認する

  • クリーンアップする

開発環境を設定する

  1. テスト Project Server システムを設定する

    開発やテストを行う際には常にテスト Project Server システムを使用します。コードが完全に動作する場合であっても、プロジェクト間の依存関係、レポート、またはその他の環境の要因が想定外の結果を招く可能性があります。

    注意

    サーバー上で有効なユーザーであり、アプリケーションで使用する Project Server Interface (PSI) 呼び出しの実行に十分な権限を持っていることを確認してください。

    場合によっては、サーバー上でリモート デバッグを実行する必要があります。また、イベント ハンドラー アセンブリを Project Server コンピューターにインストールしてイベント ハンドラーを設定してから、Project Web App の [サーバー設定] ページを使用してイベント ハンドラーを構成する必要もあります。

  2. 開発用コンピューターを設定する

    通常はネットワーク経由で PSI にアクセスします。コード サンプルは、記載されている場合を除き、サーバーから独立したクライアント上で実行されるように設計されています。

    1. 適切なバージョンの Microsoft Visual Studio をインストールする。   記載されている場合を除き、コード サンプルは Microsoft Visual C# で記述されています。サンプルは、Microsoft Visual Studio 2008 SP1 または Microsoft Visual Studio 2010 で使用できます。

      注意

      Project Server 2010 向けに開発するほとんどのアプリケーションに Visual Studio 2008 を使用できます。Project Server のワークフロー アプリケーションの場合は Project Server コンピューター上で Visual Studio 2010 を使用して開発する必要があります。すべての Project Server 開発に Visual Studio 2010 を使用することを推奨します。

    2. Project Server の DLL を開発用コンピューターにコピーする。    ワークフロー アプリケーションではないアプリケーションの場合は、Project Server コンピューター上の [Program Files]\Microsoft Office Servers\14.0\Bin から、次のアセンブリを開発用コンピューターにコピーします。

      • Microsoft.Office.Project.Server.Events.Receivers.dll

      • Microsoft.Office.Project.Server.Library.dll

  3. Project Server アセンブリでクラスとメンバーに IntelliSense の説明を使用するには、Project 2010 SDK ダウンロードから、更新された IntelliSense XML ファイルを、Project Server アセンブリと同じディレクトリにコピーします。たとえば、アプリケーションで Microsoft.Office.Project.Server.Library.dll アセンブリへの参照を設定するディレクトリに、Microsoft.Office.Project.Server.Library.xml ファイルをコピーします。

    PSI Web サービスに IntelliSense の説明を使用するには、Project 2010 SDK ダウンロード内の Intellisense\WSDL サブディレクトリにあるスクリプトを使用して PSI プロキシ アセンブリを作成する必要があります。このスクリプトを実行すると、ASMX ベースの ProjectServerServices.dll プロキシ アセンブリが作成されます。詳細については、SDK ダウンロードに含まれる [ReadMe_Intellisense].mht ファイルを参照してください。

アプリケーションを作成し、Web サービス参照を追加する

  1. コンソール アプリケーションを作成する

    コンソール アプリケーションを作成するには、[新しいプロジェクト] ダイアログ ボックスのドロップダウン リストから [.NET Framework 3.5] を選択します。この新しいアプリケーションに PSI サンプル コードをコピーできます。

  2. [参照の追加] ダイアログ ボックスの [.NET] タブをクリックし、System.Web.Services への参照を追加します。

  3. コードをコピーする

    完全なコード サンプルをコンソール アプリケーションの Program.cs ファイルにコピーします。

  4. サンプル アプリケーションの名前空間を設定する

    サンプルの上部に表示されている名前空間をアプリケーションの既定の名前空間に変更するか、既定のアプリケーションの名前空間を変更してサンプルに合わせることができます。既定のアプリケーションの名前空間は、アプリケーションのプロパティにあります。

    たとえば、CreateNewAssignment のコード サンプルでは、名前空間 Microsoft.SDK.Project.Samples.CreateNewAssignment が使用されます。Program.cs ファイルからこの名前空間をコピーし、プロジェクトの [プロパティ] ウィンドウを開きます ([プロジェクト] メニューの [CreateNewAssignment のプロパティ] をクリックします)。[アプリケーション] タブの [既定の名前空間] ボックスに名前空間を貼り付けます。

  5. Web 参照を設定する

    多くのサンプルでは、1 つ以上の PSI Web サービスへの参照が必要です。これらは、サンプルそれ自体の中や、サンプルの前にあるコメントの中に一覧表示されています。Web 参照の正しい名前空間を取得するには、必ず既定のアプリケーションの名前空間を設定してください。

    ASMX Web サービス参照を追加する方法は 3 つあります。

    • PSI プロキシ アセンブリをビルドし、このアセンブリへの参照を設定します。詳細については、「PSI プロキシ アセンブリをビルドする」を参照してください。

    • wsdl.exe から出力されるプロキシ ファイルを Visual Studio ソリューションに追加します。詳細については、「PSI プロキシ ファイルを追加する」を参照してください。

    • Visual Studio を使用して、Web サービス参照を追加します。詳細については、「Web サービス参照を追加する」を参照してください。

PSI プロキシ アセンブリをビルドする

PSI では ProjectServerServices.dll プロキシ アセンブリをビルドしてすべての ASMX ベース Web サービスに使用できます。この作業には、Project 2010 SDK ダウンロードの Documentation\Intellisense\WSDL フォルダー内にある GenASMXProxyAssembly.cmd スクリプトを使用します。ダウンロードのリンクについては、「Project 2010 SDK のドキュメント」を参照してください。

注意

Documentation\Intellisense\WCF フォルダー内の GenWCFProxyAssembly.cmd スクリプトは、ASMX ベース アプリケーションに使用できません。このスクリプトから呼び出される SvcUtil.exe は、WCF サービス用のソース ファイルを生成します。WCF プロキシ ファイルには、各 PSI サービス用の別の複数の属性、チャネル インターフェイス、およびクライアント クラスが含まれます。たとえば、Resource WCF サービスには ResourceChannel インターフェイス、Resource インターフェイス、および Resource を実装した ResourceClient クラスが含まれますが、これらは Resource ASMX Web サービスには含まれません。

以下は、PSI Web サービス用の WSDL 出力ファイルを生成し、アセンブリをコンパイルする GenASMXProxyAssembly.cmd スクリプトです。wsdl.exe はどこからでも使用でき、常に同じバージョンが実行されます。

@echo off
@ECHO ---------------------------------------------------
@ECHO Creating C# files for the ASMX-based proxy assembly
@ECHO ---------------------------------------------------

REM Replace ServerName with the name of the server and 
REM the instance name of Project Web App. Do not use localhost.
(set VDIR=https://ServerName/pwa/_vti_bin/psi)

(set OUTDIR=.\Source)

REM ** Wsdl.exe is the same version in the v6.0A and v7.0A subdirectories. 
 (set WSDL="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe")

if not exist %OUTDIR% (
md %OUTDIR%
)

REM Use the Project Web App URL for the Web services.

for /F %%i in (Classlist_asmx.txt) do %WSDL% /nologo /l:CS /namespace:Svc%%i /out:%OUTDIR%\wsdl.%%i.cs %VDIR%/%%i.asmx?wsdl 

@ECHO ----------------------------
@ECHO Compiling the proxy assembly
@ECHO ----------------------------

(set SOURCE=%OUTDIR%\wsdl)
(set CSC=%WINDIR%\Microsoft.NET\Framework\v3.5\csc.exe)
(set ASSEMBLY_NAME=ProjectServerServices.dll)

%CSC% /t:library /out:%ASSEMBLY_NAME% %SOURCE%*.cs

このスクリプトでは、Classlist_asmx.txt ファイルを使用します。このファイルには、サードパーティの開発者が使用できる Web サービスの一覧が含まれます。

Admin
Archive
Calendar
CubeAdmin
CustomFields
Driver
Events
LoginForms
LoginWindows
LookupTable
Notifications
ObjectLinkProvider
PortfolioAnalyses
Project
QueueSystem
ResourcePlan
Resource
Security
Statusing
TimeSheet
Workflow
WssInterop

このスクリプトで作成される任意の名前空間は ASMX Web サービスと WCF サービスで同じものなので、Intellisense ファイルはどちらのアセンブリにも使用できます。たとえば、Resource サービスの名前空間は WCF ベース プロキシ アセンブリでも ASMX ベース プロキシ アセンブリでも SvcResource です。当然ですが、名前空間の名前を変更することもできます。ただし、その名前はプロキシ アセンブリと ProjectServerServices.xml Intellisense ファイルで一致する必要があります。

SDK のコード サンプルで別の名前 (たとえば ProjectWebSvc) が PSI Web サービスの名前空間に使用されている場合、SvcProject を使用するようにサンプルを変更してプロキシ アセンブリ内の名前に合わせる必要があります。

ASMX ベース プロキシ アセンブリの利点は、すべての PSI Web サービスがこれに含まれていることです。複数の Web 参照を作成する手間を省くことができます。もう 1 つの利点は、ProjectServerServices.xml ファイルを、ProjectServerServices.dll プロキシ アセンブリへの参照を設定したのと同じディレクトリに追加すると、PSI クラスとメンバーの Intellisense の説明も取得できることです。詳細については、SDK ダウンロードの Intellisense フォルダー内にある [ReadMe_Intellisense].mht ファイルを参照してください。

このプロキシ アセンブリの欠点は、ソリューションのサイズが大きくなることと、プロキシ アセンブリをソリューションと一緒に配布およびインストールする必要があることです。また、プロキシ アセンブリと Intellisense ファイルでは同じ名前空間を使用する必要もあります。ただし、異なる名前空間を使用するようにスクリプトと ProjectServerServices.xml Intellisense ファイルを変更した場合は別です。

PSI プロキシ ファイルを追加する

WSDL から出力されたプロキシ ファイルを追加する   プロキシ アセンブリへの参照を設定する代わりに、1 つ以上の WSDL 出力ファイルを Visual Studio ソリューションに追加できます。たとえば、GenASMXProxyAssembly.cmd スクリプトを実行した後で、wsdl.Project.cs ファイルを Visual Studio ソリューションに追加します。このスクリプトを実行する代わりに、次のようなコマンドを実行して 1 つのソース ファイルを生成できます。

set VDIR=https://ServerName/ProjectServerName/_vti_bin/psi
set WSDL="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe"
%WSDL% /nologo /l:cs /namespace:SvcProject /out:wsdl.Project.cs %VDIR%/Project.asmx?wsdl

Project オブジェクトを project という名前のクラス変数として定義するには、次のコードを使用します。AddContextInfo メソッドは、Windows ログオンおよびフォーム ベース ログオンに使用されるコンテキスト情報を project オブジェクトに追加します。

private static SvcProject.Project project;
private static SvcLoginForms.LoginForms loginForms =
            new SvcLoginForms.LoginForms();
. . .
public void AddContextInfo()
{
    // Add the Url property.
    project.Url = "https://ServerName/ProjectServerName/_vti_bin/psi/project.asmx";

    // Add Windows credentials.
    project.Credentials = CredentialCache.DefaultCredentials;

    // If Forms authentication is used, add the Project Server 
    // cookie for a successful Forms user logon.
    
    project.CookieContainer = loginForms.CookieContainer;
}

Web サービス参照を追加する

ASMX ベース プロキシ アセンブリを使用しない、または WSDL 出力ファイルを追加しない場合は、1 つ以上の Web 参照を個別に設定する必要があります。以下の手順は、Visual Studio 2010 を使用して Web 参照を設定する方法を示しています。

  1. ソリューション エクスプローラーで [参照設定] フォルダーを右クリックし、[サービス参照の追加] をクリックします。

  2. [サービス参照の追加] ダイアログ ボックスで、[詳細設定] をクリックします。

  3. [サービス参照設定] ダイアログ ボックスで、[Web 参照の追加] をクリックします。

  4. [URL] ボックスに「https://ServerName/ProjectServerName/_vti_bin/psi/ServiceName.asmx?wsdl」と入力し、Enter キーを押します。Secure Sockets Layer (SSL) がインストールしてある場合、HTTP ではなく HTTPS プロトコルを使用する必要があります。ServerName の部分を、使用しているサーバーの名前に置き換えます。ProjectServerName の部分を、PWA など、Project Server サイトの仮想ディレクトリ名に置き換えます。ServiceName の部分を、Project など、Web サービスの名前に置き換えます。

    または

    Web ブラウザーを開き、https://ServerName/ProjectServerName/_vti_bin/psi/ServiceName.asmx?wsdl に移動します (必要に応じて HTTP を HTTPS に置き換えます)。C:\Project\WebServices\ServiceName.wsdl など、ローカル ディレクトリにファイルを保存します。[Web 参照の追加] ダイアログ ボックスの [URL] ボックスに、「file://C:\Project\WebServices\Project.wsdl」など、ファイル プロトコルとファイルへのパスを入力します。

    この URL は Project Server Web サービスの標準 URL です。

  5. 参照が解決した後、[Web 参照名] ボックスに参照名を入力します。Project 2010 SDK のコード サンプルは、ServiceNameWebSvc という形式の任意の標準参照名を使用します。たとえば、Project Web サービスの名前は ProjectWebSvc です。

Project Server コンピューターで実行される必要があり、偽装を使用する (昇格された権限を持つ) 必要があるアプリケーション コンポーネントには、ASMX Web 参照ではなく WCF サービス参照を使用します。詳細については、「WCF ベースのコード サンプルの前提条件」を参照してください。

その他の参照を設定する

Project Server のアプリケーションは、多くの場合、Microsoft SharePoint Foundation 2010 Web Services などのその他の Web サービスを使用します。その他のサービスが必要である場合、サービスはサンプルに記載されています。

コード サンプルのローカル参照は、サンプルの上部の using ステートメントに一覧表示されています。

  1. ソリューション エクスプローラーで、[参照設定] フォルダーを右クリックし、[参照の追加] をクリックします。

  2. [参照] をクリックして、以前にコピーした Project Server の DLL を格納した場所を参照します。必要な DLL を選択し、[OK] をクリックします。

注意

開発用コンピューター上のアセンブリのバージョンが、ターゲットの Project Server コンピューター上のアセンブリのバージョンと正確に一致することを確認してください。

クレームの複数認証を使用する

Project Server ユーザーの認証は、その手段が Windows 認証またはフォーム認証のどちらであっても、Microsoft SharePoint Foundation 2010 でクレームが処理されることにより行われます。複数認証とは、Project Web App を準備する Web アプリケーションで Windows 認証とフォームベース認証の両方をサポートすることを意味します。このような構成では、Windows 認証を使用する WCF サービスまたは ASMX サービスを呼び出そうとすると、次のエラーが発生します。原因は、認証するユーザーの種類をクレーム処理で確認できないためです。

The server was unable to process the request due to an internal error. 
. . .

この問題を ASMX に関して解決するには、すべての PSI メソッドの呼び出しを、各 PSI Web サービス用に定義された派生クラスへの呼び出しにする必要があります。また、この派生クラスは SvcLoginWindows.LoginWindows クラスを使用して派生 PSI サービス クラスのクッキーを取得する必要があります。以下の例では、ProjectDerived クラスは SvcProject.Project クラスから派生します。この派生クラスでは、EnforceWindowsAuth プロパティを追加し、Project クラス内のメソッドを呼び出すたびに Web 要求ヘッダーをオーバーライドします。EnforceWindowsAuth プロパティが true の場合、GetWebRequest メソッドではフォーム認証を無効にするヘッダーを追加します。EnforceWindowsAuth が false の場合、フォーム認証を継続できます。

以下の ASMXLogon_MultiAuth サンプルを使用するには、コンソール アプリケーションを作成し、「アプリケーションを作成し、Web サービス参照を追加する」の手順を実行してから、wsdl.LoginWindows.cs プロキシ ファイルと wsdl.Project.cs プロキシ ファイルを追加します。Main メソッドは、ProjectDerived クラスの project インスタンスを作成します。サンプルでは、派生 LoginWindowsDerived クラスを使って、フォーム認証と Windows 認証を区別する project.CookieContainer プロパティの CookieContainer オブジェクトを取得する必要があります。これで、project オブジェクトを使って SvcProject.Project クラスのメソッドを呼び出すことができます。

注意

LoginWindows サービスを必要とするのは、複数認証環境の ASMX アプリケーションだけです。ASMXLogon_MultiAuth サンプルでは、GetLogonCookie メソッドが loginWindows オブジェクトのクッキーを取得します。project.CookieContainer プロパティには loginWindows.CookieContainer の値が設定されます。

using System;
using System.Net;
using PSLibrary = Microsoft.Office.Project.Server.Library;

namespace ASMXLogon_MultiAuth
{
    class Program
    {
        private const string PROJECT_SERVER_URL = 
            "https://ServerName/ProjectServerName/_vti_bin/psi/";

        static void Main(string[] args)
        {
            bool isWindowsUser = true;

            // Create an instance of the project object.
            ProjectDerived project = new ProjectDerived();
            project.Url = PROJECT_SERVER_URL + "Project.asmx";
            project.Credentials = CredentialCache.DefaultCredentials;

            try
            {
                // The program works on a Windows-auth-only computer if you comment-out the
                // following line. The line is required on a multi-authentication computer.
                project.CookieContainer = GetLogonCookie();

                project.EnforceWindowsAuth = isWindowsUser;

                // Get a list of all published projects. 
                // Use ReadProjectStatus instead of ReadProjectList,
                // because the permission requirements are lower.
                SvcProject.ProjectDataSet projectDs =
                    project.ReadProjectStatus(Guid.Empty,
                        SvcProject.DataStoreEnum.PublishedStore,
                        string.Empty,
                        (int)PSLibrary.Project.ProjectType.Project);

                Console.WriteLine(string.Format(
                    "There are {0} published projects.", 
                    projectDs.Project.Rows.Count));
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (WebException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.Write("Press any key to continue...");
                Console.ReadKey(false);
            }
        }

        private static CookieContainer GetLogonCookie()
        {
            // Create an instance of the loginWindows object.
            LoginWindowsDerived loginWindows = new LoginWindowsDerived();
            loginWindows.EnforceWindowsAuth = true;
            loginWindows.Url = PROJECT_SERVER_URL + "LoginWindows.asmx";
            loginWindows.Credentials = CredentialCache.DefaultCredentials;

            loginWindows.CookieContainer = new CookieContainer();

            if (!loginWindows.Login())
            {
                // Login failed; throw an exception.
                throw new UnauthorizedAccessException("Login failed.");
            }
            return loginWindows.CookieContainer;
        }
    }

    // Derive from LoginWindows class; include additional property and 
    // override the Web request header.
    class LoginWindowsDerived : SvcLoginWindows.LoginWindows
    {
        public bool EnforceWindowsAuth { get; set; }

        protected override WebRequest GetWebRequest(Uri uri)
        {
            WebRequest request = base.GetWebRequest(uri);

            if (this.EnforceWindowsAuth)
            {
                request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            }
            return request;
        }
    }

    // Derive from Project class; include additional property and 
    // override the Web request header.
    class ProjectDerived : SvcProject.Project
    {
        public bool EnforceWindowsAuth { get; set; }

        protected override WebRequest GetWebRequest(Uri uri)
        {
            WebRequest request = base.GetWebRequest(uri);

            if (this.EnforceWindowsAuth)
            {
                request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            }
            return request;
        }
    }
}

複数認証環境で実行されるアプリケーションでは、派生 LoginWindows クラスを使って、フォーム認証を無効にする Web 要求ヘッダーを使った PSI を呼び出しを行う必要があります。Project Server でクレーム認証のみを使用する場合は、Web 要求ヘッダーを追加するクラスを派生させる必要はありません。ただし前掲の例は、両方の環境で動作します。

WCF ベース アプリケーションについては、別の方法で対処します。詳細については、「WCF ベースのコード サンプルの前提条件」の「クレームの複数認証を使用する」を参照してください。

複数認証を使用する完全なコード サンプルについては、Project 2010 SDK ダウンロードの Samples\MultiAuthentication\ASMXLogon_MultiAuth サブディレクトリを参照してください。

一般的な定数の値を変更する

大部分のサンプルには、サンプルが環境で正しく動作するために更新する必要がある 1 つ以上の変数があります。次の例では、SSL がインストールされている場合に HTTP プロトコルではなく HTTPS プロトコルを使用します。ServerName の部分を、使用しているサーバーの名前に置き換えます。ProjectServerName の部分を、PWA など、Project Server サイトの仮想ディレクトリ名に置き換えます。

const string PROJECT_SERVER_URI = "https://ServerName/ProjectServerName/";

変更する必要があるその他の変数または必要条件は、コード サンプルの上部に記載されています。

結果を確認する

コード サンプルの結果を表示して解釈する方法は必ずしも簡単ではありません。たとえば、プロジェクトを作成した場合、プロジェクトを Project Web App の [プロジェクト センター] ページに表示するには、最初にプロジェクトを発行する必要があります。

コード サンプルの結果を確認するには、次の方法があります。

  • Microsoft Project Professional 2010 クライアントを使用して Project Server コンピューターからプロジェクトを開き、必要なアイテムを表示します。

  • Project Web App で、キューのログを表示します。サイド リンク バーの [個人用の設定] (https://ServerName/ProjectServerName/MyJobs.aspx) をクリックし、[キューに入れたジョブ] をクリックします。[表示] ボックスの一覧を使用して、ジョブの状態を基準に並べ替えることができます。既定の状態は、[進行中または失敗した過去 1 週間のジョブ] です。

  • Project Web App の [プロジェクト センター] ページ (https://ServerName/ProjectServerName/projects.aspx) で、発行済みのプロジェクトを表示します。

  • Project Web App の [サーバー設定] ページ (https://ServerName/ProjectServerName/_layouts/pwa/admin/admin.aspx) で、すべてのキューとエンタープライズ オブジェクトを表示します。[サーバー設定] ページにアクセスするには管理者権限が必要です。

  • Microsoft SQL Server Management Studio を使用して、Project Server データベースのテーブルにクエリを実行します。たとえば、以下のクエリを使用して、MSP_WORKFLOW_STAGE_PDPS テーブルの先頭 200 行を選択し、ワークフロー ステージのプロジェクト詳細ページ (PDP) に関する情報を表示します。

    SELECT TOP 200 [STAGE_UID]
          ,[PDP_UID]
          ,[PDP_NAME]
          ,[PDP_POSITION]
          ,[PDP_ID]
          ,[PDP_STAGE_DESCRIPTION]
          ,[PDP_REQUIRES_ATTENTION]
      FROM [ProjectServer_Published].[dbo].[MSP_WORKFLOW_STAGE_PDPS]
    

クリーンアップする

コード サンプルをテストした後で、エンタープライズ オブジェクトや設定を削除またはリセットする必要があります。Project Web App の [サーバー設定] ページ (https://ServerName/ProjectServerName/_layouts/pwa/admin/admin.aspx) を使用すると、エンタープライズ データを管理できます。[サーバー設定] ページにあるリンクを使用して、古いアイテムを削除したり、チェックインを強制したり、すべてのユーザーのジョブ キューを管理したり、その他の管理タスクを実行したりできます。

[サーバー設定] ページに表示されるリンクの一部を以下に示します。これらは、コード サンプルを実行した後に一般的なクリーンアップの操作を行うために使用できます。

  • エンタープライズ オブジェクトの強制チェックイン

  • サーバー側のイベント ハンドラー

  • キュー ジョブの管理

  • エンタープライズ ユーザー設定フィールドと参照テーブル

  • エンタープライズ オブジェクトの削除

  • エンタープライズ プロジェクトの種類

  • ワークフロー フェーズ

  • ワークフロー ステージ

  • プロジェクト詳細ページ

関連項目

タスク

[方法] WCF による偽装を使用する

概念

WCF と PSI の概要

WCF ベースのコード サンプルの前提条件

PSI リファレンスの概要

その他のリソース

SharePoint 開発者向け技術情報