Spring'15 ISV様向け新機能紹介
-
Upload
kazuki-nakajima -
Category
Technology
-
view
428 -
download
4
Transcript of Spring'15 ISV様向け新機能紹介
Spring’15 ISVパートナー様向け新機能紹介
株式会社セールスフォース・ドットコム テクニカルエバンジェリスト 中嶋 一樹
• 環境ハブ
• ブランチ開発組織
• 不要なコンポーネントの削除
• CORS(クロスオリジンリソースシェアリング)
• Lightningプロセスビルダー
• Lightningコンポーネント
• Lightning Extension
このセミナーで紹介する新機能
環境ハブとは?ISVはパートナー開発組織、ライセンス管理組織、Trialforceソース組織など多くの組織を活用してアプリを開発していきます。環境ハブはこれらの組織を作成し、シングルサインオンすることができる機能です。また、Usage Metricsといった他のISV向け機能において環境ハブは必須となっており、appexchangeアプリを開発するにあたり欠かせない機能です。
環境ハブ
CRM for ISV組織
パートナー開発組織 テスト組織 Trialforceソース組織
組織を作成&シングルサインオン
• 環境ハブはCRM for ISV組織(または元来利用しているSales Cloud組織)で有効化します。パートナーコミュニティからCRM for ISV組織の組織IDを指定して有効化申請のケースを発行します。
環境ハブのセットアップ
• システム管理者以外で環境ハブを使うユーザーには適切な権限を付与する必要があります。例えば、組織の作成や接続はおこなわせたくないが、各組織へシングルサインオンすることを許可したい場合、次のように権限を付与します。
• アプリケーション > 割り当てられたアプリケーションに環境ハブを追加
• アプリケーション > オブジェクト設定 > ハブメンバーでタブの設定をデフォルトで表示に設定し、オブジェクトの参照権限を追加
• システム > サービスプロバイダでSSOを許可するサービスプロバイダを追加
• 環境ハブに関連する権限のさらなる詳細はISVforceガイドの環境ハブのセクションを参照してください。
• CRM for ISV組織でマイドメインを設定します。マイドメインは環境ハブからシングルサインオン機能を利用するにあたり必要になります。
• 有効化完了の連絡がきたら環境ハブは利用可能になっています。CRM for ISV組織にログインし、アプリケーションプルダウンメニューから「環境ハブ」を選択してください。
シングルサインオンを設定する
• 環境ハブ上のユーザーと、ログイン先組織のユーザー名を1対1で紐づける設定(ハブメンバーの関連リストにあるシングルサインオンユーザーマッピングの作成)をおこなうことでマッピングを定義します。設定は簡単ですが、1ユーザーにつき必ず1つのマッピング設定が必要になるため、ユーザー数が多い場合には不向きです。
環境ハブに接続された組織は、「SSOを有効化」ボタンをクリックするだけでシングルサインオンに必要な組織間の設定が自動的におこなわれます。その上で各ユーザーがシングルサインオンするためには何らかの形で環境ハブ上のユーザーと、ログイン先組織のユーザーがマッピングされていなければなりません。マッピングには3つの方法があり、ここではそれぞれを説明します。
ユーザーの対応付け
統合ID• 全組織においてユーザーごとに一意なIDを付与し、そのIDによって組織間のユーザーをマッピングします。統合IDさえ各組織で設定されていれば、個別に紐付けをおこなう必要がないため大規模な環境にも対応でき、ログイン先に対応するユーザーが存在しない場合に自動的にユーザーを作成するジャストインタイムプロビジョニングが可能になります。
従来のユーザー名• 環境ハブ上のユーザー情報を元にログイン先のユーザー名を動的に指定する形でマッピングをおこないます。ログイン先のユーザー名がある規則に基づいて作成されている場合に活用できます。
ジャストインタイムプロビジョニングのセットアップログイン先組織に対応するユーザーが存在しない場合に自動的にユーザーを作成する機能のことをJIT(ジャストインタイムプロビジョニング)と呼んでいます。この機能を活用すれば、環境ハブ上のユーザーは事前に各ログイン先組織にユーザーを作成することなくログインすることが可能になります。
• 環境ハブでJITを有効化したいハブメンバーを選択します。
• もしSSOがまだ有効でなければ、「SSOを有効化」ボタンをクリックして有効化します。
• SSO手法2 - 統合IDにチェックして保存します。
• サービスプロバイダの詳細リンクをクリックします。
• 編集ボタンをクリックし、件名種別で「統合ID」を選択して保存します。
• サービスプロバイダSAML属性で下記の通り属性を作成します。
属性キー 属性値User.Username $User.UsernameUser.Email $User.Email
User.LastName $User.LastName
User.FirstName $User.FirstName
User.CommunityNickname $User.CommunityNickname
User.Alias $User.Alias
User.ProfileName $Profile.Name
ジャストインタイムプロビジョニングのセットアップ(続き)• ログイン先組織で、管理 > セキュリティのコントロール > シングルサインオン設定で、該当する環境ハブの設定を選択します。
• 編集ボタンをクリックし、SAML ID種別で「アサーションにはユーザーオブジェクトの統合IDが含まれます」を選択、ユーザープロビジョニングの有効化にチェック、ユーザープロビジョニングのタイプで「Apexハンドラを使用したカスタムSAML JIT」を選択、「SAML JITハンドラテンプレートを自動的に作成する」リンクをクリック、他のアカウントでハンドラを実行にシステム管理者のユーザーを指定して保存します。
• 開発者コンソールでApexクラス:AutocreatedRegHandler[ランダム番号]を編集し、次ページのソースをペーストします。*クラス名は既存のクラス名に合わせてください。
ジャストインタイムプロビジョニングのセットアップ(続き)global class AutocreatedRegHandler[ランダム番号] implements Auth.SamlJitHandler { private void handleUser(User u, Map<String, String> attributes, String federationIdentifier) { u.Username = attributes.get('User.Username') + '.' + UserInfo.getOrganizationId(); u.FederationIdentifier = federationIdentifier; u.Email = attributes.get('User.Email'); u.FirstName = attributes.get('User.FirstName'); u.LastName = attributes.get('User.LastName'); u.CommunityNickname = attributes.get('User.CommunityNickname'); u.Alias = attributes.get('User.Alias'); String profileName = attributes.get('User.ProfileName'); list<Profile> profileList = [SELECT Id FROM Profile WHERE Name=:profileName]; if (profileList.size() == 1){ u.ProfileId = profileList[0].Id; }
String uid = UserInfo.getUserId(); User currentUser = [SELECT LocaleSidKey, LanguageLocaleKey, TimeZoneSidKey, EmailEncodingKey FROM User WHERE Id=:uid]; u.LocaleSidKey = currentUser.LocaleSidKey; u.LanguageLocaleKey = currentUser.LanguageLocaleKey; u.TimeZoneSidKey = currentUser.TimeZoneSidKey; u.EmailEncodingKey = currentUser.EmailEncodingKey; system.debug(u); } global void updateUser(Id userId, Id samlSsoProviderId, Id communityId, Id portalId, String federationIdentifier, Map<String, String> attributes, String assertion) { } global User createUser(Id samlSsoProviderId, Id communityId, Id portalId, String federationIdentifier, Map<String, String> attributes, String assertion) { User u = new User(); handleUser(u, attributes, federationIdentifier); return u; } }
ブランチ開発組織(Pilot)とは?リリース組織(パッケージをアップロードする開発組織)と同じ名前空間が適用された開発組織です。複数組織を使った開発をおこなう際、すべての組織で同じ名前空間を明記したソースを記述することができます。
リリース組織
ブランチ開発組織
名前空間
Apex VF Lightning Component
ブランチ開発組織
同じ名前空間
デプロイ
デプロイ
• ブランチ開発組織はSprint’15時点ではPilotです。パートナーコミュニティからリリース組織の組織IDを指定してPilot参加申請のケースを発行します。また、その際どのようなユースケースであるのかをケースに記載ください。
• 機能が有効化されると、リリース組織のパッケージ設定の画面でブランチタブが表示され、ブランチ開発組織を作成できるようになります。
ブランチ開発組織のセットアップ
• 作成されたブランチ開発組織には名前空間は適用された状態になりますが、それ以外のメタデータ(カスタムオブジェクト、Visualforceページ、Lightning Componentなど)はコピーされません。必要に応じてForce.com Migration Toolなどを用いてリリース組織からメタデータをコピーしてください。
• Spring’15時点では、リリース組織にマイドメインを設定している場合、ブランチ開発組織を作成した後にメールで送信されるログインリンクがうまく機能しません。ドメインをlogin.salesforce.comに変更する必要があります。
• Spring’15時点では、ブランチ開発組織はリリース組織から言語などの環境設定を引き継ぎません。
不要なコンポーネントの削除とは?管理パッケージ内でリリース後にロックされ、通常は削除できないコンポーネントを削除するための機能です。
Spring’15で新たに削除できるようになったコンポーネント• Visualforceページ
• Visulaforceコンポーネント
• 静的リソース
•削除するコンポーネントが他のコンポーネントから参照されている場合は削除できません。
•リリース組織でコンポーネントを削除しても、ユーザー組織ではユーザーが削除しないかぎりそのコンポーネントは削除されません。
この機能を利用するにはパートナーコミュニティからリリース組織の組織IDを指定して有効化申請のケースを発行してください。
CORS(Cross Origin Resource Sharing)とは?外部サイトで提供されるJavascriptからSalesforce APIに直接アクセスすることができる設定。このようなクロスドメインのリクエストはセキュリティ上の理由でブラウザが遮断するため、これまでは一般的に外部サイトのプロキシを経由していましたが、CORSによってブラウザからSalesforceへ直接アクセスすることができるようになります。
• CORSはデフォルトで有効になっています。
• 管理 > セキュリティのコントロール > CORSを開き、「新規」ボタンをクリックしてオリジンのURLパターンに外部サイトのURLを設定します。
CORSのセットアップ
Lightningプロセスビルダーとは?フローチャートを描くことでこれまでプログラミングが必要だった処理をGUIで作成することができるツール。直感的な操作で処理を作成でき、これまでのワークフローよりも強力な機能を備えています。
ワークフロー Lightning プロセスビルダー Apex
直感的UI ◯ ◎ n/a
柔軟性 △ ◯ ◎アクション • 新規Todo
• メールアラート • 項目自動更新 • アウトバウンドメッセージ
複数の分岐は設定不可
• レコード作成 • 関連レコード更新 • フロー • Email • Chatter • 承認申請 • Apex
複数の分岐を設定可能
n/a
Lightningコンポーネントとは?Javascriptベースの開発フレームワーク。アプリケーション、コンポーネント、ヘルパー、イベント、スタイルといった単位で規約にのっとった開発をおこなうことで効率的なUI開発を可能にします。また、作成したコンポーネントはLightning App BuilderによってUIを組み立てる際のパーツとしても活用できることが特徴です。
Application
Component
SVGHelper
StyleController
Renderer
Documentation
Lightningコンポーネントバンドル Lightning App Builder
コンポーネントをドラッグ&ドロップ
Lightningエクステンションとは?Salesforce1の標準ページをカスタマイズすることができる機能です。例えば標準項目の表示を変更したり、レコードのホームページに独自のタブを追加したりすることができます。
ありがとうございました!