fc2ブログ

apex:page

ページを作成する際に初めに設定する。apex:pageの解説です。

(例)
<apex:page sidebar="false" showHeader="false" controller="SampleController>

・sidebar
サイドバー表示
true:表示する false:表示しない
・showHeader
ヘッダー表示
true:表示する false:表示しない
・controller
制御項目
コントロール名を指定
スポンサーサイト



Force.com for Google App Engine

SalesforceとGoogle App Engineを連携させる方法です。

※前提条件
・Google App Engineのアカウントを作成済み
・「Google Plugin for Eclipse」をインストール済み

①新規GoogleAppEngineアプリケーションの作成
・Use Google Toolkit のチェックをはずす。
(はずしていない場合に関しては未検証)

②[プロパティ]→[AppEngine]にアプリケーションIDを振る

③/war/WEB-INF/lib配下に
http://code.google.com/p/sfdc-wsc/downloads/list よりダウンロードした
partnar-library.jarとwsc-gae-16_0.jarを置く
(※それ以外のダウンロードファイルは置かない)

④[プロパティ]→[Javaのビルドパス→ライブラリー]に
partnar-library.jarとwsc-gae-16_0.jarを追加

⑤『アプリケーション名』Servletを以下のように作成
package gaptest01;

import java.io.IOException;
import javax.servlet.http.*;

import com.sforce.soap.partner.*;
import com.sforce.soap.partner.sobject.*;
import com.sforce.ws.*;

@SuppressWarnings("serial")
public class GAP_TEST_01Servlet extends HttpServlet {


public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
String username = "ユーザー名";
String password = "パスワード + セキュリティトークン";
PartnerConnection connection;

ConnectorConfig config = new ConnectorConfig();
config.setUsername(username);
config.setPassword(password);

connection = Connector.newConnection(username, password);

SObject test = new SObject();
test.setType("Test__c"); // オブジェクト_API参照名
test.setField("Test_CD__c", "001"); // カスタム項目_API参照名
test.setField("Test_Name__c", "test");
connection.create(new SObject[] { test}); // データ追加

} catch (ConnectionException e) {
resp.getWriter().println("Err_ConnectionException");
e.printStackTrace();

} catch (Exception e) {
resp.getWriter().println("Err_Exception");
e.printStackTrace();
}
}
}


⑥[実行]→[Web AppliCation]を実施


以上でオブジェクトにデータが追加されているはずです。

SalesForceとGoogle App Engine

以前にSalesForceのモバイル対応について書きましたが、

その件について試行錯誤していたところ
Force.com for Google App Engine という代物を見つけました。

このGoogle App Engine.今回はJava版を使いましたが、
結局のところ何をしてくれるブツかというと
簡単に言えば、「googleさんの用意してくれたクラウド環境でJava開発ができます」という感じ。

その上、Force.com for Google App Engineと銘打っているように、
Javaで書いたコードからSalesForceのカスタムオブジェクト等を編集することができます。

モバイル対応させるために随分寄り道をしてしまいましたが、
このgoogle App Engine SalesForceのサービスと重複する部分もありますが
色々と使えそうな機能も揃っています。

詳細はまた今度追記したいと思います。

テーマ : コンピュータ
ジャンル : コンピュータ

SalesForceとモバイル端末

SalesForceを用いて作られたアプリケーションを携帯端末から利用する場合、
いくつかの課題が挙げられます。

まず、1つ目はJavaScriptの問題です。
Apexタグで作られた画面のソースには、明示的にJavaScriptを書かなかったとしても
HTMLソースとして表示する際、JavaScriptが含まれています。

しかし、現在の携帯端末で利用されているWebブラウザは
JavaScriptに対応していないため(一部機種を除く)表示する際にエラーとなってしまいます。

2つ目に、ページサイズの問題が挙げられます。
仮にJavaScriptに対応したブラウザであったとしても、
ApexコードはHTMLソースに変換する際、非常に長い文字列となり、
携帯Webブラウザの上限サイズを超えてしまう恐れがあります。

以上の問題を解決する手段として、携帯WebブラウザとSalesForceで作ったアプリ
の仲介をしてくれるような外部システムの利用等が考えられますが、
対応機種が少ない、有料 等の理由で手が出しにくい部分もあります。



まとめようと思ったけど筆者も結論が出なくてまとまらない・・と。
いいアイデアお待ちしております。

テーマ : コンピュータ
ジャンル : コンピュータ

SQLとガバナ制限

丸1日ハマったのでメモ。

SalesForceではSOQLと呼ばれる、SQLによく似た言語を用いて
レコードのデータを操作します。

例えば

--- Apexページ ---
~略~


    {!Menu.Name__c}


~略~

--- 制御項目(コントローラ) ---
public class testCon {

    public Menu__c getMenu() {
        Menu__c objMenu;
        objMenu = [ SELECT Number__c, Day__c, Name__c
                        FROM Menu__c ];

        return objMenu;
    }
}

このように書くことで、まずページ側の{!Menu.Name__c}でコントローラ側の
getMenu()というメソッドを呼び出し、
更に戻り値のMenuオブジェクトのName__cという項目を取り出し、
ページ上に表示させることができます。

問題はここからで、どうやらSalesForceにはユーザがリソースを必要以上に
使用できないよう、色々な制限が設けられているようです。

詳しくはこちら↓
ガバナ制限に関するページです
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_gov_limits.htm?SearchType=Stem

今回私が行った処理は、
「Forループ内で、あるカスタムオブジェクトの全てのレコードを取り出すSQLを発行し、
さらに取り出した結果をwhere句に組み込んだSQLを発行する」
というものでした。

実行時に出てきたエラーは
System.Exception: Too many SOQL queries: 101

引っかかったのはどうやらリンク先ページ一番上の
「SQLクエリの発行可能数」というやつらしく、1度に100回以上の
SQLを発行することはできない仕組みになっているようです。

他にも色々な制限が存在する為、コーディングの際には注意したいものです。

テーマ : コンピュータ
ジャンル : コンピュータ

FC2カウンター
プロフィール

くりゅりゅ

Author:くりゅりゅ
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード