2015年3月

2015年3月30日 (月)

SharePoint 2013 ではサイト列を作成し、リストやライブラリに追加して利用することで、クロール時に自動的に管理プロパティが生成されます。管理プロパティを使って、コンテンツの絞り込み検索ができるため、うまく使うと非常に便利な機能です。

管理の仕組みや検索キーワードの基本的な使い方や、検索ページのカスタマイズなどは弊社のコースで扱っていますが、コース内で説明しきれない点についてブログに追記しておきます。

自動的に作成される管理プロパティではデータの種類が必ずテキストになります。したがって、単純に"特定の文字を含む" といった絞り込みは可能であるものの、特定のプロパティを使って大小比較するような検索の絞り込みをしたい場合はこのままでは都合が悪いわけです。

そこで、新たに管理プロパティを作れるのかという話になるわけですが、オンプレミスのファーム管理者は、管理プロパティを自分で作成することができ、データ型も自由に指定できます。つまり、テキスト型以外にもできるということです。なお、SharePoint Online のテナント管理者とサイト コレクションの管理者も管理プロパティを作成できますが、指定できるデータ型がテキストまたははい/いいえの2種類に限定されます。

**2016/04/19 一部修正しました**

さて、サイト列が数値列であった場合には、注意が必要です。数値列は内部では値は Double  Decimal として扱われます。通常、自動生成される管理プロパティに対して、クロールされたプロパティである ows_q_NMBR_列名 などがマップされます。このクロールされたプロパティを新たに作成した管理プロパティをマップする際に、このデータ型を 整数(Integer) としてしまうと、このプロパティでの絞り込み検索はヒットません。代わりに 倍精度浮動小数点数(Double) 小数(Decimal) を指定するとうまくいきます。

管理プロパティの方でデータ型を 整数 としたい場合は、もう一つのクロールされたプロパティである ows_列名 の方をマップするとうまくプロパティでの絞り込み検索できるようになります。

検索の利活用をしたいと考えていらっしゃる方にとっては、少しコツがいるところでしたので、念のため共有しておきました。

検索機能を使いこなすための基本をまず知りたいという方は、弊社の下記のコースのご受講が最適です。具体的に自社内もしくは顧客環境で検索機能をどう使うとよいのかについても、アドバイスいたします。お気軽にご相談ください。

Course-Banner-SearchShort
 

2015年3月27日 (金)

 SharePoint Designer 2013 を使って SharePoint 2010ベースのワークフローを開発しているとき、ワークフロー発行時に次のようなエラーメッセージが表示され、正常に発行できないことがあります。

「ワークフローのコンパイル中にエラーが発生しました。ワークフロー ファイルは保存されましたが、実行することはできません。」

詳細

(0,0)Activity 'ID436' の検証に失敗しました: IfElseActivity には、IfElseBranchActivity という種類の子を少なくとも 1 つ含める必要があります。)

2015-03-26 23-11-52

 一旦こうしたエラーが出ると、これ以降はこのワークフローも含むすべてのワークフロー発行時に次のエラーが表示され発行できなくなってしまうことがあります。

「ワークフローに関連するサーバーで、不明なエラーが発生しました」

2015-03-26 23-15-01

まず、「ワークフローに関連するサーバーで、不明なエラーが発生しました」のエラー発生原因ですが、本来ワークフローが内部的に書き込むフォルダーが、先のエラーにより削除されてしまうことに起因しています。この場合、次の場所に Temp という名前のフォルダ―を作成すると修正できます。

[SharePoint サーバー上]

C:\Users\spfarm\AppData\Local

※上記のうち、spfarm は、発行先となる SharePoint サイトをホストしている IIS のアプリケーション プールID です。環境に応じて読み替えてください。

Workflow Temp

以上の手順でエラーとなっているワークフローは発行できるようになります。

さて、元々のエラーとなっているワークフローの原因ですが、今回のようなエラーが出る場合は、エラーメッセージ通りに条件分岐の書き方に問題がある場合が多いので慌てずにロジックをしっかり見直してみてください。Else ブロックが正しくないなどないかどうか確認します。しかし、それでも原因がよくわからないこともあります。そこで、内部構造を調べてみたところ、SharePoint Designer 上の不具合が発生している場合があるようです。

大体、エラーメッセージに記載されている 'ID436' ですが、これは何の番号でしょうか? そもそも、SharePoint 2010 ベースのワークフローを作成する際には内部的に XOML と呼ばれる XML 形式のファイルが生成されます。実はこのIDはこの XOML ファイル内に記載されている内部IDであり、SharePoint Designer の UI 上には直接でてこないものです。そこで次のような手順で内容を確認してみます。

  1. サイト コレクションの管理者として、SharePoint Designer 2013 を起動し、SharePoint サイトにアクセスする。
  2. ナビゲーションから[すべてのファイル]>[Workflows]の順にクリックする。
    2015-03-26 23-27-07

  3. 問題が起きているワークフローをクリックする。
    2015-03-26 23-28-09
  4. *.xoml ファイルを選択し、リボン メニューから [ファイルのエクスポート]をクリックし、任意の場所に保存する。
    2015-03-26 23-30-58

  5. 保存した *.xoml ファイルをメモ帳などで開く

ファイルを開いて、エラーメッセージに出ていたIDを検索します。

2015-03-26 23-32-26

上記の場合だと次のような XML要素が見つかります。

<IfElseActivity x:Name='ID436'/>

この IfElseActivity というタグは本来は子要素を持つ必要があるのですが、見ての通り子要素がないまま自己完結しています。これがエラーの問題でした。しかし、この内容は SharePoint Designer の表面上では確認できません。

対処するため、今回、このタグは使っていないので削除します。上書き保存をしてから、再び SharePoint Designer 内の元の場所にインポートして上書きします。

最後に発行すると正常に発行できるはずです。

Course-Banner-Workflow
2015年3月20日 (金)

半年前に公開されていた情報ではありますが、旧バージョンからの移行も増えてきているので情報共有しておきます。

カスタム リボン メニューを開発している場合に使うことのあった CommandUIHandler要素の EnabledScript 属性ですが、SharePoint アプリを使って展開したカスタム アクションでは利用できなくなっています。

この属性は、リスト アイテム選択中など、状態に応じてコマンドを有効化したり無効化したりする際に使用していました。

この属性が使えなくなっている理由は、これを使った脆弱性を狙ったコードが実行されるのを防ぐための処置です。ちなみに、オンプレミス環境では、MS14-050 SharePointセキュリティ更新プログラムの適用後は、 EnabledScript の利用ができなくなります。

ご参考まで。

2015年3月17日 (火)

少し案内が遅くなりましたが、2015年3月の SharePoint 2013 CU が公開されています。サーバーパッケージであるため、SharePoint Server の CU を入手すれば、SharePoint Foundation 2013 の CU のインストールは含まれているので不要です。

上記ブログにも記載がありますが、今月は Windows Update から SharePoint Server 2013 用のセキュリティ アップデートが入手できるようになっています。十数個のセキュリティ アップデートがインストールできるようになっていますが、SharePoint のサポートでは、個々のセキュリティ更新を適用するのではなく、 March 2015 CU のサーバーパッケージを適用することを推奨しているようです。

2015年3月16日 (月)

次期バージョンの Office である、Office 2016 の IT Pro and Developer Preview が Public に公開されました。現在U.Sアトランタで開催中(2015/3/16-19)のビジネス コミュニティ向けのイベントである Microsoft Convergence 2015 の Keynote で発表されました。

プレビューに関しての詳細は以下のリンクを確認してみてください。