次の方法で共有


プロジェクト内のASMXベースコードサンプルの前提条件

Project Server Interface (PSI) リファレンス トピックに含まれている ASMX ベースのコード サンプルを使用して、Visual Studio でプロジェクトを作成するのに役立つ情報について説明します。

Project Server 2013 クラス ライブラリと Web サービスリファレンスに含まれるコード サンプルの多くは、もともと Office Project 2007 SDK 用に作成され、ASMX Web サービスの標準形式を使用していました。 サンプルは Project Server 2013 で引き続き機能し、コンソール アプリケーションにコピーして完全なユニットとして実行するように設計されています。 例外はサンプルに記載されています。

Project 2013 SDK の新しい PSI サンプルは、Windows Communication Foundation (WCF) サービスを使用する形式に準拠しています。 この ASMX ベースのサンプルは、WCF サービスを使用するように調整することもできます。 この記事では、ASMX Web サービスでサンプルを使用する方法について説明します。 WCF サービスでサンプルを使用する方法については、「 Project での WCF ベースのコード サンプルの前提条件」を参照してください。

注:

PSIのASMX WebサービスインターフェイスはProject Server 2013では非推奨ですが、引き続きサポートされています。 クライアント側オブジェクト モデル (CSOM) にアプリケーションで必要なメソッドが含まれている場合は、CSOM を使用して新しいアプリケーションを開発する必要があります。 CSOM を使用すると、アプリケーションは、Project Onlineまたは Project Server 2013 のオンプレミス インストールで動作できます。 それ以外の場合、アプリケーションで PSI を使用する場合は、ネットワーク通信に推奨されるテクノロジである WCF インターフェイスを使用する必要があります。 ASMX インターフェイスまたは WCF インターフェイスを使用するアプリケーションは、Project Server 2013 のオンプレミス インストールでのみ機能します。 CSOM の詳細については、「 Project Server 2013 アーキテクチャ」および「Project 2013のクライアント側オブジェクト モデル (CSOM)」を参照してください。

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

開発環境を設定する

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

    開発やテストを行う際には常にテスト Project Server システムを使用します。 たとえコードが完全に動作しても、プロジェクト間の依存関係、レポート、またはその他の環境要因が意図しない結果を引き起こす可能性があります。

    注:

    サーバーの有効なユーザーであり、アプリケーションで使用する PSI 呼び出しのための十分な権限を持っていることを確認します。 各 PSI メソッドのリファレンス トピックに、Project Server 権限の表があります。 たとえば、 Project.QueueCreateProject メソッドには、グローバル な NewProject アクセス許可と SaveProjectTemplate アクセス許可が必要です。

    場合によっては、サーバーでのリモート デバッグが必要になることがあります。 また、SharePoint ファーム内の各 Project Server コンピューターにイベント ハンドラー アセンブリをインストールし、SharePoint サーバーの全体管理の [アプリケーションの全般設定] ページの [プロジェクト サーバーの設定] ページを使用して、Project Web App インスタンスのイベント ハンドラーを構成することで、イベント ハンドラーを設定する必要がある場合もあります。

  2. 開発用コンピューターをセットアップする。

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

    1. 適切なバージョンの Visual Studio をインストールする。 記載されている場合を除き、コード サンプルは Visual C# で記述されています。 これらは、Visual Studio 2010 または Visual Studio 2012 で使用できます。 最新のサービス パックがインストールされていることを確認してください。

    2. Project Server の DLL を開発用コンピューターにコピーする。 Project Server コンピューター上から [Program Files]\Microsoft Office Servers\15.0\Bin 開発用コンピューターに次のアセンブリをコピーします。

      • Microsoft.Office.Project.Server.Events.Receivers.dll
      • Microsoft.Office.Project.Server.Library.dll
    3. PSI で ASMX Web サービスの ProjectServerServices.dll プロキシ アセンブリをコンパイルして使用する方法については、「IntelliSense の説明を備えた PSI プロキシ アセンブリを使用する」を参照してください。

  3. IntelliSense ファイルをインストールする。

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

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

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

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

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

  2. ASMX に必要な参照を追加する。

    ソリューション エクスプローラーで、System.Web.Services への参照を追加します (図 1 を参照)。

    図 1. Visual Studio での参照の追加

    Visual Studio での参照の追加 Visual Studio

  3. コードをコピーする。

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

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

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

    たとえば、 QueueRenameProject のコード サンプルには、 Microsoft.SDK.Project.Samples.RenameProject という名前空間があります。 Visual Studio プロジェクトの名前が RenameProject の場合、Program.cs ファイルから名前空間をコピーし、プロジェクトの [プロパティ] ウィンドウを表示します ([プロジェクト] メニューの [RenameProject のプロパティ] を選択)。 [アプリケーション] タブで、名前空間を [既定の名前空間] ボックスにコピーします。

  5. Web 参照を設定する。

    多くの例では、1 つ以上の PSI Web サービスへの参照が必要です。 これらは、サンプル自体、またはサンプルの前にあるコメントに示されています。 Web 参照の適切な名前空間を取得するには、最初にアプリケーションの既定の名前空間を設定する必要があります。

    PSI の ASMX Web サービス参照を追加する方法として次の 3 つがあります。

Intellisense の説明を備えた PSI プロキシ アセンブリを使用する

Project 2013 SDK ダウンロードのフォルダーにある CompileASMXProxyAssembly.cmd スクリプトを使用して、PSI 内のすべての ASMX ベースの Web サービスに Documentation\IntelliSense\WSDL 対して ProjectServerServices.dll プロキシ アセンブリをビルドして使用できます。 ダウンロードへのリンクについては、 Project 2013 開発者向けドキュメントを参照してください

注:

Source.zip ファイルからプロキシ ソース ファイルを抽出すると、フォルダー内 Documentation\IntelliSense\WSDL\Source のファイルは Project 2013 SDK ダウンロードの発行日の時点で最新の状態になります。 更新された PSI プロキシ ソース ファイルを生成するには、Project Server コンピューターで GenASMXProxyAssembly.cmd スクリプトを実行します。 フォルダー内の Documentation\IntelliSense\WCF スクリプトは、ASMX ベースのアプリケーションでは機能しません。 GenWCFProxyAssembly.cmd スクリプトは SvcUtil.exe を呼び出し、それによって WCF サービス用のソース コード ファイルが生成されます。 WCF プロキシ ファイルには、各 PSI サービス用の別の複数の属性、チャネル インターフェイス、およびクライアント クラスが含まれます。 たとえば、WCF ベースの Resource サービスには ResourceChannel インターフェイス、Resource インターフェイス、および ResourceClient クラスが含まれています。 ASMX ベースの Resource Web には Resource クラスといくつかの異なるプロパティが含まれています。

次に、GenASMXProxyAssembly.cmd スクリプトを示します。このスクリプトは、PSI Web サービスの WSDL 出力ファイルを生成した後、アセンブリをコンパイルします。

@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 (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\wsdl.exe")
if not exist %OUTDIR% (
md %OUTDIR%
)
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\Framework64\v4.0.30319\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

このスクリプトは ProjectServerServices.dll という名前のアセンブリを作成します。 WCF ベースのアセンブリ用の ProjectServerServices.dll と混同しないようにしてください。 ProjectServerServices.xml IntelliSense ファイルを使用していずれかのアセンブリの使用を有効にする場合、アセンブリ名は同じです。

ASMX Web サービスと WCF サービスの両方のスクリプトによって作成される任意の名前空間は同じであるため、ProjectServerServices.xml IntelliSense ファイルはどちらのアセンブリでも動作します。 たとえば、WCF ベースのプロキシ アセンブリと ASMX ベースのプロキシ アセンブリ内の Resource サービスの名前空間は SvcResource です。 もちろん、名前空間名は、プロキシ アセンブリと ProjectServerServices.xml IntelliSense ファイルで一致するように変更できます。

コード サンプルで PSI Web サービス名前空間の異なる名前を使用する場合 (たとえば ProjectWebSvc)、IntelliSense が機能するためには、SvcProject を使用するようにサンプルを変更し、名前空間がプロキシ アセンブリと一致するようにします。

ASMX ベースのプロキシ アセンブリを使用する利点は、すべての PSI Web サービス名前空間が含まれていることです。複数の Web 参照を作成する必要はありません。 もう 1 つの利点は、ProjectServerServices.xml ファイルを、ProjectServerServices.dll プロキシ アセンブリへの参照を設定したのと同じディレクトリに追加すると、PSI クラスとメンバーの IntelliSense の説明を取得できることです。 図 2 は、 Project.QueueCreateProject メソッドの IntelliSense テキストを示しています。 詳細については、Project 2013 SDK ダウンロードの IntelliSense フォルダーにある [ReadMe_IntelliSense] ファイルを参照してください。

図 2. Project Web サービスのメソッドでの IntelliSense の使用

PSI サービスのメソッドに Intellisense を使用する PSI サービス

このプロキシ アセンブリを使用する場合の欠点は、ソリューションが大規模になることと、ソリューションと共にプロキシ アセンブリの配布とインストールが必要になることです。 また、プロキシ アセンブリ内と IntelliSense ファイル内で同じ名前空間を使用する必要があります (ただし、スクリプトと ProjectServerServices.xml IntelliSense ファイルを変更して、別々の名前空間を使用するようにした場合は例外です)。

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

Project 2013 SDK のダウンロードには、プロキシ アセンブリの Wsdl.exe コマンドによって生成されたソース ファイルが含まれています。 ソース ファイルはサブディレクトリ内の Source.zip にあります Documentation\IntelliSense\ASMX 。 プロキシ アセンブリへの参照を設定する代わりに、1 つ以上のソース ファイルを Visual Studio ソリューションに追加できます。 たとえば、GenASMXProxyAssembly.cmd スクリプトを実行した後、wsdl を追加します。ファイルをソリューションにProject.csします。 スクリプトを実行する代わりに、次のコマンドを実行して、たとえば 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.
    project.CookieContainer = loginForms.CookieContainer;
}

注:

PSI プロキシ アセンブリを使用する場合も、プロキシ ファイルを追加して SvcProject という名前の Project サービス参照を追加する場合も、同じコードを使用して project オブジェクトを使用します。

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

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

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

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

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

  4. [URL] テキスト ボックスに「」と入力https:// _ServerName_/ _ProjectServerName_/_vti_bin/psi/ _ServiceName_.asmx?wsdlし、Enter キーを押すか、Go アイコンを選択します。 Secure Sockets Layer (SSL) がインストールされている場合は、HTTP プロトコルではなく HTTPS プロトコルを使用する必要があります。

    たとえば、サイトの Project サービスhttps://MyServer/pwaに次の URL を使用してProject Web Appします。https://MyServer/pwa/_vti_bin/psi/project.asmx?wsdl

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

  5. 参照が解決した後、[Web 参照名] ボックスに参照名を入力します。 Project 2013 開発者向けドキュメントのコード例では、任意の標準参照名 Svc ServiceName を使用します。 たとえば、Project Web サービスは SvcProject という名前になっています (図 3 を参照)。

    図 3. ASMX Web サービス参照の追加

    ASMX Web サービス 参照の追加

Project Server コンピューター上で実行する必要があるアプリケーション コンポーネントについては、偽装を使用するか、または引き上げられたアクセス許可を使用して、ASMX Web 参照の代わりに WCF サービス参照を使用します。 詳細については、「Project での WCF ベースのコード サンプルの前提条件」を参照してください。

その他の参照を設定する

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

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

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

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

注:

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

複数の認証を使用する

オンプレミスの Project Server ユーザーの認証は、Windows 認証認証またはフォーム認証のいずれによっても、SharePoint Server 2013 の要求処理を通じて行われます。 複数認証とは、Project Web Appがプロビジョニングされている Web アプリケーションがWindows 認証とフォーム ベースの認証の両方をサポートすることを意味します。 その場合、要求プロセスで認証するユーザーの種類が判断できないため、Windows 認証を使用する ASMX Web サービスの呼び出しは次のエラーで失敗します。

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

ASMX のこの問題を修正するには、PSI メソッドのすべての呼び出しをそれぞれの PSI Web サービスに対して定義される派生クラスに対して実行する必要があります。 また、派生クラスは SvcLoginWindows.LoginWindows クラスを使用して派生 PSI サービス クラスの Cookie を取得する必要があります。 以下の例で、ProjectDerived クラスは SvcProject.Project クラスから派生します。 派生したクラスによって EnforceWindowsAuth プロパティが追加され、Project クラスのメソッドに対するすべての呼び出しの Web 要求ヘッダーが上書きされます。 EnforceWindowsAuth プロパティが true の場合、GetWebRequest メソッドによって、フォーム認証を無効にするヘッダーが追加されます。 EnforceWindowsAuthfalse の場合、フォーム認証を続行できます。

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

注:

LoginWindows サービスは、複数認証環境の ASMX アプリケーションでのみ必要です。 ASMXLogon_MultiAuth サンプルでは、GetLogonCookie メソッドによって loginWindows オブジェクトの Cookie が取得されます。 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 for multiple authentication.
                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 ベース アプリケーションについては、別の方法で対処します。 詳細については、「Project の WCF ベースのコード サンプルの前提条件」の「複数の認証の使用」セクションを参照してください。

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

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

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

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

結果を確認する

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

コード サンプルの結果は、いくつかの方法で確認できます。たとえば、次のような方法があります。

  • Project Professional 2013 クライアントを使用して Project Server コンピューターからプロジェクトを開き、目的の項目を表示します。

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

  • Project Web Appでキュー ログを表示します。 [サーバーの設定] ページを開きます (右上隅にある [設定] アイコンを選択し、[個人用設定] セクション ( https://ServerName/ProjectServerName/MyJobs.aspx) の下にある [キューに入ったジョブ] を選択します。 [表示] ドロップダウン リストでは、ジョブの状態による並べ替えができます。 既定の状態は [進行中または失敗した過去 1 週間のジョブ] です。

  • Project Web App ( https://ServerName/ProjectServerName/_layouts/15/pwa/admin/admin.aspx) の [サーバー設定] ページを使用して、すべてのキュー ジョブを管理し、チェックエンタープライズ オブジェクトを強制的に削除または強制します。 [サーバー設定] ページのこれらのリンクにアクセスするには、管理権限が必要です。

  • Microsoft SQL Server Management Studio を使用して Project データベース内のテーブルに対するクエリを実行します。 たとえば、次のクエリを使用して、pub.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 [ProjectService].[pub].[MSP_WORKFLOW_STAGE_PDPS]
    

クリーンアップ

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

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

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

  • キュー ジョブの管理

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

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

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

  • ワークフロー フェーズ

  • ワークフロー ステージ

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

  • タイムシート期間

  • タイムシートの設定および既定値

  • 管理用行の分類

追加の設定は、特定の Project Web App サーバー設定ページではなく、Project Web App インスタンスごとに SharePoint Server 2013 によって管理されます。 SharePoint サーバーの全体管理アプリケーションで、[全般アプリケーションの設定] を選択し、[プロジェクト サーバーの設定] で [管理] を選択し、[サーバー設定] ページのドロップダウン リストでProject Web App インスタンスを選択します。 たとえば、[サーバー側イベント ハンドラー] を選択して、選択したProject Web App インスタンスのイベント ハンドラーを追加または削除します。

関連項目