December 28, 2011

Chatterやコンテンツへのファイル添付を禁止するには

BackLink
メリークリスマス


なんとこの記事はForce.com Advent Calendar 2011 12/25 の記事です。


というわけで本日のBlogです。どんなにひねってもネタが出ませんでした
忘れていた・・・・訳ではありません・・・・・・


Chatterを導入する際に、企業によってはファイルの添付を禁止させたいというケースを良く聞きます。
Chatterを無効化したり、コンテンツライセンスを付与しないというように全く使えなくするのではなく、ファイルのアップロードのみをブロックするにはどうしたらよいでしょうか?


この場合、ChatterのFeeditemがInsertされる前のトリガで引っ掛けることによって、添付をブロックすることが可能です。


== Chatterフィードからのファイル添付を禁止したい場合 ==
trigger BlockAttachementFromChatter on FeedItem (Before Insert) { 
    for (FeedItem fi : trigger.new) { 
        if (fi.Type == 'ContentPost'){ 
                system.debug(fi); 
                fi.addError('ファイルの添付は禁止されています'); 
        }
    }
}


また、コンテンツのファイルアップロードを禁止する際にはこちらのトリガを使います。


== コンテンツのファイルアップロードを禁止する ==

trigger BlockAttachementFromContent on ContentVersion (before insert) {
    for( ContentVersion c : Trigger.NEW ) {
        if( c.Origin == 'H' ) {
            c.addError( 'ファイルのアップロードはできません' );
            continue;
        }
    }
}


但し上記トリガの場合は本当に全ユーザのアップロードがブロックされますので、実際には特定のロールのみ処理しないといった追加の記述が必要になるかと思います。
また現状ですとFileタブからのアップロード時には上記のトリガは作用しませんが、次のリリースであるSpring 12'より、上記のContentVersionに対するトリガでFileタブからのアップロードにも動作するようになります。

添付の可否をコントロールしたいという方はご活用下さい。
それでは、良いお年を。

December 15, 2011

Cloud9IDEでNode.js & Database.comのサンプルをHerokuにデプロイ

BackLink
前回某@stomita氏に反則だと怒られてしまったので、今回はもう少しまともに書きます。from サモア諸島



みなさん、Cloud9IDE使ってますか?
いわゆるブラウザ上でコードの編集が出来るクラウド型のIDEなんですが、こいつがHeroku使ってるNoderに取っては中々イイです。以下その理由:
  • ブラウザベースなので、どこでもどの端末でもすぐ自分の環境で開発できる
  • Vimモードがある(最近付いた)
  • Node.jsの実行とDebugが単体で出来る
  • コマンドコンソールがあってGitとか統合されてる
というわけでブラウザIDE時代来たなといった感じです。

言わずもがなForce.comもブラウザ上で全て操作できますし、Cloud9IDEに至ってはコードのバージョン管理まで全てブラウザ上から可能なので、とにかくForce.com(Database.com) + NoderはE○lipseとか窓から投げ捨てても大丈夫(多分)です。

またHerokuと連携しているので(まぁ別に連携して無くてもコマンドラインからgit pushすりゃいいんですが)、比較的GUIから簡単にherokuアプリを動作させられます。

せっかくなんで Heroku(Node.js) -> Force.comのアプリケーションをCloud9で動作確認してHerokuにDeployしてみましょう。

1, Github物色 & Cloud9IDEにClone

GithubにNode.jsでOAuthからForce.comにつながるサンプルプログラムを公開しています。
https://github.com/joshbirk/FDC-NODEJS-HEROKU

今回コレを使っていきます。

Cloud9IDEへの取り込みは、プロジェクトメニューから、+ボタンで"Clone from url"でgitリポジトリのURL入力すればサクっと行けます。
ちなみにこんなものもあったりします。















プロジェクトが出来上がったら、とりあえずrunボタンを押せば、

http://.<ユーザ名>.cloud9ide.com/

にアプリケーションが起動します。






アクセスすると、Cloud9IDE側のコンソールにアクセスログ(デバッグ出力)が出てくるのがわかります。













2, Herokuアプリ作成 & Force.com OAuth2設定


次にHerokuのアプリケーションを作成します。Herokuのアプリケーション作成もCloud9IDEから出来ます。左のメニューからDeployを選択して、herokuのID/PWを入力すると、既存のアプリケーション一覧を取ってきます。










































ここでCreate newをクリックして名前を入力すれば、Heroku アプリケーションをCloud9IDEが新規で作ってくれます。Node.jsを動かす前提なので、StackはCedarを使うようになっています。

さらに、このアプリケーションはOAuth2を使ってForce.com(Database.com)に接続するので、【設定】->【開発】->【リモートアクセス】から、OAuth2 Token及びSecretを発行します。
コールバックURLには https://<作成したHerokuアプリ名>.herokuapp.com/token を入力します。













あとはCloud9IDEで oauth/oauth2.jsの中の4,5行目にあるpublicKeyとprivateKeyの値を、先ほどForce.com側で発行したTokenとSecletで書き換えます。
また7行目のcallbackURIの値も https://<作成したアプリ名>.herokuapp.com/token に書き換えます。


3,  Herokuの設定 & Deploy

これでアプリケーションを動かす準備ができたので、最後にHerokuアプリをHTTPSで動かす為にAdd-onを追加します。CUIからでもいいんですが、今回ブラウザにこだわってるのであくまでブラウザでいきます。
http://api.heroku.com/ にアクセスしてログインし、先ほど作成したアプリケーションをクリックします。
右側のAdd-onsタブを開いて、Get More Add-ons... をクリックします。
















するとAdd-onページが開かれるので、SSLのAdd-onからPiggyback SSLを選択してアプリケーションに追加します。


最後に、Cloud9IDEから、Herokuに対してコードのdeploy(git push)を行います。
Deployタブに、既に先ほど設定したアプリが表示されているので、DEPLOYボタンを押します。











コンソールにDeployのログが表示され、Successとでれば完了です。


4, 動作確認

https://<作成したHerokuアプリ名>.herokuapp.com/ にアクセスして、アプリケーションを動かしてみてください。


5, まとめ


  • Cloud9IDEならブラウザだけで全て開発できる
  • Force.com/Database.comはブラウザだけで全てコントロールできるクラウドDB
  • ブラウザで全部開発できる Development in the cloud


このエントリーは、 Force.com Advent Calendar 2011 12/15 の記事です。

December 6, 2011

あれ?

BackLink
さてそろそろ来年の豊富を、、、来年はもっと情報発信す・・・・何ぃ・・・・!!?