[Salesforce.com] 時間帯によりログイン制限をしたい。

[要望]
諸事情(内容が内容なので書けませんが・・・)により深夜時間帯(ココでは「3:00~5:00」としておきましょう)にユーザがログインできないように設定したい。

[問題]
標準機能にてログインする時間帯を制御することはできるのですが、以下のような設定しかできません。

  • 曜日を指定して、許可する開始時間と終了時間を指定。
  • 曜日に対して1つのみ

えぇ、曜日に対して1つ。しかも許可する時間帯しか指定できないので「3:00~5:00」となると・・・
なんと!設定できない!!バンザーイ (゚Д゚;)

ほんとねぇ。こんなんばっかでねぇ。やーねー。。

続きを読む “[Salesforce.com] 時間帯によりログイン制限をしたい。”

[Salesforce.com] 時間帯によりログイン制限をしたい。

[Salesforce.com] FlexでSandboxに対して接続してDebugするには?

さっき恥ずかしながら、一人ではまっており解決したので情報を共有しておこうと思います。。。

まず、SFDCに対してFlexで接続するためには以下のページを参考にしてください。

んでもって、わかりやすいように上記のページのコードをそのまま引用させていただきます。。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:salesforce="com.salesforce.*"
layout="absolute"
applicationComplete="login()" >
<mx:Script>
<![CDATA[
import com.salesforce.*;
import com.salesforce.events.*;
import com.salesforce.objects.*;
import com.salesforce.results.*;

private function login():void {
var lr:LoginRequest = new LoginRequest({
server_url : Application.application.parameters.server_url,
session_id : Application.application.parameters.session_id,
// username : 'admin@demo.com', // <-- put your username here when connecting from local app
// password : 'mypassword1234', // <-- put your password here when connection from local app
callback : new AsyncResponder(sayHello)
});
conn.login(lr);
}

private function sayHello(result:Object):void {
conn.getUserInfo(new AsyncResponder(function(userInfo:Object):void {
message.text = "こんにちは、" + userInfo.userFullName;
}));
}
]]>
</mx:Script>

<salesforce:Connection id="conn" />

<mx:Label id="message" x="10" y="10" fontSize="32" color="#FFFFFF" text=""/>
</mx:Application>

このままの状態でloginメソッドの「username」と「password」にSandboxのアカウントに置き換えてデバッグ実行するとログインに失敗します。
じゃぁ、どうすんの?というと「」とありますが、こいつを以下のように書き換えてください。

<salesforce:Connection id=”conn” serverUrl=”https://test.salesforce.com/services/Soap/u/14.0″ />

これでSandboxに対して接続できるようになります。ま、当たり前なんでしょうけど。
ちょっとはまったんで・・・ね(;´Д`)

[Salesforce.com] FlexでSandboxに対して接続してDebugするには?

[Salesforce.com] オブジェクトの入力規則をApexコードの処理では無視したい。

直近でどうしようか悩んでいた話。
正直、こういうことをやる必要があるお客さんはいないと思いますけど・・・。

やりたいことは以下ののようなこと。

[要望]
取引先のレコードで特定の項目が設定されていた場合、システム管理者以外のユーザが当該レコードを更新しようとすると更新できなくするという入力規則が設定されています。しかし、別の画面(VisualForce)にて取引先のデータを更新する場合には、ユーザのアクセス権およびプロファイルに関係なく取引先レコードを更新させたい。

続きを読む “[Salesforce.com] オブジェクトの入力規則をApexコードの処理では無視したい。”

[Salesforce.com] オブジェクトの入力規則をApexコードの処理では無視したい。

Force.com Sites?

仕事なんでそれなりに世の中の動向はWatchしないといかんわけでして、今はたまたまSFDCの案件をやっているので、SFDCが何をやっているかは気にしてみたり。

とかいいつつ、Google ReaderにRSSを登録してるけどまったく見てなかったので、ふと見てみた。そこには見慣れない新しいサービス「Force.com Sites」などという名前が。つっても・・・発表があったのは11月上旬 (゚Д゚;)

とりあえず、Previewとして利用できるようです。

ココで登録すると、Developer環境の[設定]-[アプリケーションの設定]-[開発]に「サイト」が追加されます。サイトの設定で「有効なサイトのホームページ」で素のVisualForceのページを指定して、作成したページを表示すると。「ホーム」タブで素のVisualForceのページが表示される。作ったものは、下記のサイトです。

えぇ、時間がないので何も作ってないですよ。。
尚、IE6だとJavaScriptのエラーが出まくった・・・ま、Previewってことで見なかったことにしよう。。。

要はAmazon Web Servicesと同じようにプラットフォームを提供しようとする(PaaS)取り組みの一環なのでしょうけど。Amazonと違い、Force.comというプラットフォームは自由度はほとんど無い。JavaもどきのApexコードやどうやって動いているのかよーわからんVisualForceという独自の言語なので、既存の開発者が取っつき難いつーか、触ろうとも思わんだろう(開発なんかやったことない人は、幸せになれるかもしれない)。また、マルチテナントなんで制約もてんこ盛り!なので、流行るかどうかは微妙。。。正直、このプラットフォームの上で物を作ってて、面白いと感じたことは残念ながら今のところ無い。

とはいっても、開発経験のない人でもカスタマイズできるようにというユーザ主体の試みは賞賛すべきだと思う。それに、今まで普通だったこともいつ普通じゃなくなるかわかったもんじゃないので、何ともいえないですから。

Force.com Sites?

[Salesforce.com] 画面を開発する際の性能について その1

SFDCのForce.comというプラットフォームで物を作るのは、何かよくわかんねーけど「面白くない」。
今まで普通に出来ていたことができなくなるからかもしれない。
でも、クラウド上で物を作る場合には、こういったことは普通になるのかもしれません。

まず、画面を作る際には下記の2つの選択肢がある。

  • SControl・・・HTMLとJavaScriptでゴリゴリ作る感じ。
  • VisualForce・・・ASP.NETモドキ

まぁ、どっちでも作れますが、現状ならVisualFroceをお勧めする。

何故か?

SControlもVisualForceもSFDC上のServletを介してページが生成されている。ま、どっちも呼び出されるたびに生成処理が走るので速くはないのは同じだが、SControlだと共通の処理記述したJavaScriptを外だしすることが出来ない(静的リソースを使うことができない)分、コード量が多くなってしまう。そのため、サーバサイドでのページの生成処理に負荷がかかる分、VisualForceに比べてもどうしても遅くなってしまうからです。

しかし、VisualForceもまだまだ出来たてホヤホヤなんで、、、。例えば、Winter ’09がリリースされて、VisualForceのページはデフォルトだと標準画面とは別のドメインで動くようになった。おかげで、標準の画面との間でクロスドメインの制限を気にする必要が出るようになった。
セキュリティ上の問題(セッションハイジャックとか)があってこうなっているらしいのですが、SSLで通信してても問題になるのかどうか?私がバカなんで理解できていません。誰か教えてください。

また、VisualForceやSControlで作成した画面を標準画面レイアウトに埋め込むことができるが、出来る限り最小限に抑えたほうがいい。これらの画面を埋め込むと、実際には標準画面に「IFRAME」で呼び出されるようになる。当然ながら、埋め込んだ数が増えれば増えるほど、どんどん遅くなる。しかも、CPUの処理に依存して性能差が出てくる。

なので、標準画面はカスタマイズで出来る範囲でおさめて、どうしても画面を作る必要がある場合は、その画面をポップアップのようなかたちで別画面として単体で表示するような仕様に落とし込むことを考えたほうがいい。

あくまでこれは現状での話しであって、今後改善されるかもしれないです。

つーかさぁ、これから先クラウド上での開発が主流になるのかねぇ。。。

[Salesforce.com] 画面を開発する際の性能について その1