レター読者の皆さんからの声

Windows バックアップ

Windows Server® 2008 についての記事 (TechNet Magazine、2008 年 3 月号 technet.microsoft.com/magazine/cc268370) を読んでわくわくしたので、発売イベントに行って自宅のホーム ネットワークで使用するためにソフトを購入しました。インストールはすべてうまく行きましたが、バックアップで困ってしまいました。

NT バックアップが廃止されており、OS ではテープ ドライブがサポートされていますが、新しい Windows Server バックアップではテープ ドライブがサポートされていません (Active Directory® と Exchange Server 2007 を含む個人的なデータはテープ ドライブにバックアップしています)。

私の環境では機能を持て余すと思ったのですが、インターネットで得たヒントに従って、Microsoft® Data Protection Manager (DPM) をダウンロードしました。しかし、Windows Server 2008 には DPM をインストールできず、手動でのインストール手順もうまく行きませんでした。このような小規模の環境でバックアップを行うにはどうしたらいいのでしょうか。

—Ravi S

Windows Server 2008 で導入された新しいバックアップ機能はディスク ベースのストレージ用に最適化されているので、テープ バックアップの解決方法が DPM ということで間違いありません。DPM は、数か月以内に正式に Windows Server 2008 でサポートされるようになります。

—Karandeep Anand (シニア プログラム マネージャ リード、Microsoft)

アンケート ワークフロー

2008 年 2 月号の記事「強力なアンケート用インフラストラクチャを構築する」(technet.microsoft.com/magazine/cc194407) の、「WSS 単体で作業する」のセクションには "また、アンケートにワークフローを割り当てることもできます" という記述がありました。

Windows® SharePoint® Services 3.0 (WSS) と Microsoft Office SharePoint Server 2007 (MOSS) ではアンケートの回答に関するワークフローはサポートしていないと理解しています。SharePoint Designer では関連付けを行うことができますが、アンケートの回答にワークフローの関連付けを試行すると、ワークフローは "開始時に失敗" というエラーで失敗します。アンケートの回答に関連付けられたワークフローがサポートされていないことを明記したサポート技術情報の記事 (support.microsoft.com/kb/926370) があります。

イベント レシーバとアンケートをリンクさせてから、他のプロセスを開始することが可能であることはわかっていますが、これは SharePoint で一般的に参照されるワークフローではありません。この記述が間違っているのでしょうか。それともここで私が何か見落としているのでしょうか。

—Matt B

参照された段落では、WSS がアンケートを作成する段階的なプロセスのウィザードをどのように提供するのかについて説明しています。また、さまざまなオプション (分岐ロジック、オープン/クローズド クエスチョンなど) についても説明しています。

このウィザードが実際に提供しているオプションの 1 つが、ワークフローの割り当てです。ですから、ある意味では「アンケートにワークフローを割り当てることもできます」という記述は必ずしも間違っているというわけではありません。割り当てることはできます。ただし、ご指摘のように、オプションがなんらかの理由で含まれていたとしても、アンケートのワークフローではとにかく機能しません。その機能しない理由をご説明しましょう。

アンケートをワークフローと関連付けて、開始しようとすると、"開始時に失敗" エラー メッセージが表示されます。この動作状況のログは次のようになります。

RunWorkflow: System.ArgumentException: Invalid field name.
{<<< GUID>>>} at ...

このログの GUID はワークフロー インスタンスを示します。これは、リストの種類が "アンケート" のワークフローでワークフロー属性がサポートされていないことを除けば、適切なワークフローがトリガされるようにするのに便利な方法であるように見えます。しかし、コーディングされていないという問題があります。そのため、ワークフローで MakeActivation メソッドを使用してアクティブ化を試行すると、次のような処理が行われます。

internal static void MakeActivation(SPWorkflow workflow, SPWorkflowEvent e)
{e.EventData = new object[ ] { workflow.InstanceId, new SPWorkflowActivation 
Properties(workflow, e.RunAsUserId, associationData, initiationData) };
...
}

次のような SPWorkflowActivationProperties を呼び出します。

internal SPWorkflowActivationProperties(SPWorkflow workflow, 
int runAsUserId, string associationData, string initiationData)
{
...
this.m_itemGuid = new Guid((string) 
this.Item[SPBuiltInFieldId.GUID]);
...
}

ここで、GUID 文字列がアンケートの属性であることが期待されているときに (本来ならば、そうあるべきですが)、アンケートに当該ワークフロー GUID の属性がなければ、動作しません。

解決策がありますので、考え方は間違っていません。その解決策は、ワークフローをトリガするカスタム リストを作成して、イベント レシーバを ItemEventReceiver とアンケートにリンクさせることです。このイベント レシーバは、カスタム リストのアイテムを作成し、この作成したアイテムによりワークフローがトリガされます。しかし、ご指摘のとおり、これはご希望の処理と同一ではありません。手短に言うと、実際に動作しないことに、よくお気付きになったと思います。

—Pav Cherny (コラムニスト、TechNet Magazine「SharePoint の内部」担当)

© 2008 Microsoft Corporation and CMP Media, LLC.All rights reserved; 許可なしに一部または全体を複製することは禁止されています.