2010年3月31日水曜日

同期/非同期イベントって、、、

イベントには、同期イベントと非同期イベントが有るようです。
各メソッドの詳細はMSDNを参照して下さい。

SharePointサポートチームのBlogでイベントを実装するに当たっての注意事項が書かれています。
http://blogs.technet.com/sharepoint_support/archive/2009/10/26/3289128.aspx

ここで重要なのは、スレッドの扱いです。

  • 同期 = 同じスレッド
  • 非同期 = 別スレッド

同期イベントで実装するという事は、

  • 負荷のかかる処理を実装すると、結果として画面表示が遅くなる。。はず
  • 確実に1回処理される

非同期イベントで実装すると、

  • 多少負荷がかかっても、画面表示の速度には直接影響しない
  • 何回処理されるか解らない
  • 「ItemAdded」の様なイベントでは、オブジェクトが更新される前にも処理される可能性
    • 引数「properties」では「AfterProperties」を使えば更新後のオブジェクトで有る事が保障される(処理前に起動された場合はNULLに成ると思われる)

という事です。

結構めんどくさい。。

2010年3月22日月曜日

SP2適用後、SharePoint DesignerのヒットCOUNTERが動作しない

http://social.msdn.microsoft.com/Forums/ja-JP/sharepointdevelopja/thread/f0638e7e-ba31-4a94-add7-774aaefc81e5

MSDNフォーラムで回答した内容ですが、忘れそうなので投稿しときます。

ヒットカウンターが分からない方は、下記ページを参照して確認して下さい。
http://office.microsoft.com/ja-jp/frontpage/HP052642821041.aspx
(SharePoint標準のアクセスカウンターです。)

全体管理サイトの「ブロックするファイルの種類」から、”CNT”を削除すればヒットカウンターが動くようになるようです。

理由は明快!拡張子CNTのファイルにカウンターの情報が保存されるからです。
「Default.aspx」にカウンターを設定すると「_private/Default.aspx.cnt」に現在のカウント数が保存されます。保存される情報は数字のみで、XML等で構造化されていません。
その為、同じページに複数のカウンターを設定する事が出来ません。
(設定しても意図した通りに動かない!)

2010年3月13日土曜日

リストのみ印刷する方法

外人のHPで実装されてたのが、カッコよかったので探してみました。
CodePlexのツールを使って実装してます。

SharePoint Print List (SPPrintList)
http://spprintlist.codeplex.com/

あっと言う間に日本語化出来ちゃいました!
(CodePlexからダウンロードしたままだと、、
たぶん英語リソースがインストールされてない場合にエラーと成る)

PrintMenu 

インストールは、下記リンクからダウンロードしたZIPを解凍して、Setup.exeを実行すればOKです。(ライセンスCDDLに従いソースも公開します。)
インストールイメージ
ソースコード

サイトコレクションの機能、「SharePoint Print List」をアクティブにすれば利用可能に成ります。
サイトコレクションの機能

2010年3月12日金曜日

iPhone でSharePointへアクセス2

App Soreで見つけた、iPhoneのSharePointクライアント

あのリアルコムさんも、開発している様です。
http://www.value-press.com/pressrelease.php?article_id=54370

SharePointへのアクセス、Exchangeへのアクセスは、既に無料で手に入ります。

無料ではない(と思う)リアルコムさんのノウハウが詰め込まれたソリューションに成る事を期待してます。

2010年3月11日木曜日

コンテンツクエリWebパーツにアイテムが表示されない仕組み

いつの間にかKBが公開されていました。

http://support.microsoft.com/kb/979929/ja

要約すると、コンテンツクエリWebパーツ(CQW)って

  • オブジェクトキャッシュを使ってる
    • オブジェクトキャッシュされなければ表示されな
    • キャッシュサイズに注意!
      • キャッシュを増やすと負荷も高くなる!
  • Webパーツで指定した順番に制限値まで読み込む
    • Webパーツで設定した「表示数」 × キャッシュの設定「クロス リスト クエリの結果の乗数」= 「読み込む制限値」となる
    • Webパーツで指定した順番に「読み込む制限値」数のアイテムを読む
    • 最後にセキュリティトリミングされて表示される
      • 読み込んだデータに権限が無いと何も表示されない
      • 細かくセキュリティ設定したサイトのにはCQWは向かない

その他、アイテムレベルのセキュリティを設定しているとなんか変、、、

iPhoneでSharePointへアクセス

iShareというiPhoneアプリが以前から公開されているようです。

リスト・ライブラリが参照可能で、Officeファイルや画像ファイルなどを開く事も出来るようです。
なんと!リストの削除更新まで出来るようです。

先日までは、1200円くらいで販売していたようですが、現在は無料で公開されています。
iPhoneほしいなー

image

機能はColligo Readerに良く似ている様な感じがしますね。
Colligo Readerも無料で下記リンクで公開されています。

 

iSharePhoneってのも有るようです。

2010年3月7日日曜日

SharePoint Designerでワークフローを変更する時の不具合?

ワークフローを修正すると、下の様に古いバージョンのワークフローは不活性状態で保存されます。
これは、ワークフローの処理中にワークフローを変更してもエラーにしない為の仕様だと思います。(EUC向けの仕様だと思います。)

以前のバージョンとして保存されるのは問題ないです。
どのタイミングか分からないですが、”権限付与(1)”の様に新しいバージョンが保存される様な時が有ります。。。

その時は、迷わず全てのワークフローを削除して下さい。
SharePoint Designerで該当のワークフローを開いて保存しなおしたら正常に戻ります。

フィールドの値によってアイテムの権限を書き換える4

リスト(ライブラリ)側の設定が終わったら、SharePoint Designerでワークフローを作成します。
下記の様に、アイテム作成時にワークフローが動くようにします。

次に、”対象者列”によって「Grant Permission on Item」を使いアイテムの権限を設定します。

  • 対象者=”一般”の場合は、SharePointグループの”<サイト名>の閲覧者”に”閲覧”権限を付与します。
  • 対象者=”個人情報管理者”には、新しく作成したSharePointグループの”個人情報管理者”をに”閲覧”権限を付与します。

あとは、「完了」を押してサーバーへ保存すればOK!

以下に権限毎に表示されるスクリーンショットを表示します。
【全てのSharePointグループに登録】
WS000125

【SharePointグループの”<サイト名>の閲覧者”に登録している人】
 WS000126

【SharePointグループの”個人情報管理者”に登録している人】
 WS000127

前回の投稿では、”<サイト名>の閲覧者”と”個人情報管理者”に参加している人は下記の様に表示されました。
今回はワークフローでアイテムレベルに権限設定された為、”制限付きアクセス”権限がリストに付与されてリストが表示されるようになりました。
image

一度ワークフローが動くと、リスト(ライブラリ)の権限は下記の様に成ります。

 WS000128

この手法は、ドキュメントライブラリでも、カスタムリストでも利用が可能なので汎用性は非常に高いです。
デメリットとしては、
・作成した設定の流用が出来ない
・障害時のトラブルシューティングが大変
です。
まあ、トラブルが有っても、リストの権限を今回の様に厳しくしていれば大きな問題にはならないと思いますが、、

フィールドの値によってアイテムの権限を書き換える1
フィールドの値によってアイテムの権限を書き換える2
フィールドの値によってアイテムの権限を書き換える3
フィールドの値によってアイテムの権限を書き換える4

2010年3月6日土曜日

フィールドの値によってアイテムの権限を書き換える3

ちょっと遅くなりましたが、フィールド値によって権限を書き換える方法を紹介します。
SharePoint Designerで「Useful Sharepoint Designer Custom Workflow Activities」を使って権限を書き換えます。

「Useful Sharepoint Designer Custom Workflow Activities」についてはこちらを参照して下さい。

使い方自体は簡単、アクティビティをインストールすれば下記の様なアクティビティが表示されます。

「Grant Permission On Item」を選んで参照可能者に権限を付与すればいいのですが、権限を設定する、リスト(ライブラリ)は参照権限を事前にはく奪する必要があります。
下の様に、権限を設定するリストは事前に独自権限設定にして、”閲覧”権限を無くします。

下の様に閲覧者は削除します。

そうすると、、閲覧者にはリスト(ライブラリ)が見えなくなります。
下の様な感じになります。

WS000118

これで準備完了です。
次回へ続く、、

フィールドの値によってアイテムの権限を書き換える1
フィールドの値によってアイテムの権限を書き換える2
フィールドの値によってアイテムの権限を書き換える3
フィールドの値によってアイテムの権限を書き換える4