Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ソーシャル機能を取り入れたエンタープライズアプリケーションチームスピリットのご紹介                倉谷 彰          デジタルコースト株式会社              研究開発グループ                 ...
デジタルコーストとは         を組み込んだ、ソーシャル・ワークフォースマネジメント・サービス                                       を開発・提供している会社です。1            Copyr...
とは                                                                                            デモをビジネスで起こる全ての活動をタイムラインで記録  ...
少し技術的なお話ソーシャル・エンタープライズを実現する業務アプリの作り方
チームスピリットのアーキテクチャ      勤怠管理                                                             認証    プロジェクト工数管理                   ...
例えば、Chatter              Chatter投稿5             Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
コードはどうなっているか?モバイル                                                              Force.com       { “time” : ”2012/07/27”,   ...
例えば、承認プロセス                                 承認プロセスの設定            承認申請7       Copyright © DigitalCoast Inc. All Rights Reser...
コードはどうなっているか?    Force.com側     // id : 承認申請対象とするオブジェクトのID     // comment : 承認申請時のコメント     // approver : 承認プロセスのID     ・・・...
モバイル・アプリケーションモバイル側                                                          クラウドサービス側        Salesforce Toolkit        for...
OAuth2.0     Force.com側10                Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
Apex REST:コードはどうなっているか?                   RestResourceアノテーションを利用することで簡単に                    RESTリソースを公開できますモバイル側         ...
モバイルとForce.comアプリの役割分担モバイル側                                   クラウドサービス側                                         OAuth2.0  ...
最後にソーシャル化した企業はどのように変わったか?
業務アプリをソーシャル化するということ      エンジニアのちょっとしたアイデアで     お客様の業務が大きく変えることができる14         Copyright © DigitalCoast Inc. All Rights Rese...
15   Copyright © DigitalCoast Inc. All Rights Reserved.   2012/7/30
Upcoming SlideShare
Loading in …5
×

夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

1,467 views

Published on

2012年7月27日に行われた「Developer [Social Enterprise] Summit」(通称:夏サミ)のA-2ブレイクアウトセッションの中で発表した講演資料です。

Published in: Technology
  • Be the first to comment

夏サミ2012 [A-2]ソーシャルプラットフォームを使った業務アプリ開発の現場(ソーシャル機能を取り入れたエンタープライズアプリケーション)

  1. 1. ソーシャル機能を取り入れたエンタープライズアプリケーションチームスピリットのご紹介 倉谷 彰 デジタルコースト株式会社 研究開発グループ エンジニア
  2. 2. デジタルコーストとは を組み込んだ、ソーシャル・ワークフォースマネジメント・サービス を開発・提供している会社です。1 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  3. 3. とは デモをビジネスで起こる全ての活動をタイムラインで記録 ご覧ください 勤怠管理行動を記録 タイムライン プロジェクト 工数管理 経費精算 Project A 移動 Project B 実労働時間 2 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  4. 4. 少し技術的なお話ソーシャル・エンタープライズを実現する業務アプリの作り方
  5. 5. チームスピリットのアーキテクチャ 勤怠管理 認証 プロジェクト工数管理 Chatter 権限管理 経費精算 承認プロセス レポート/ダッシュボード 業務に関連する機能 汎用的な機能4 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  6. 6. 例えば、Chatter Chatter投稿5 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  7. 7. コードはどうなっているか?モバイル Force.com { “time” : ”2012/07/27”, “feed” : “今日は○○社の・・・”, public with sharing class TxsActivityLogic { “latitude” : 35.684337, public static void insertActivity( “longitude” : 139.739649 Map<String,Object> r, RestRequest req) { “placeId” : “WGS84”, Map<String, String> p = req.params; “placeName” : “デジタルコースト・・・” } String s = p.get(time); Force.com DateTime tim = TxsUtil.now(); if(s != null) REST tim = DateTime.valueOf(s); リソース TxsLog__c log = new TxsLog__c(TargetTime__c=tim); クラス log.Status__c = null; TxsActivity ・・・(位置情報や画像をレコードにセットする) 行動ログ String feed = p.get(feed); if(feed != null) { TxsLog FeedItem post = new FeedItem(); クラス post.ParentId = UserInfo.getUserId(); TxsActivity post.Body = feed; Chatter投稿 Logic post.Type = TextPost; insert post; log.FeedId__c = post.Id; } insert log; 行動ログレコード追加 r.put(id, log.Id); } ・・・ 6 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  8. 8. 例えば、承認プロセス 承認プロセスの設定 承認申請7 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  9. 9. コードはどうなっているか? Force.com側 // id : 承認申請対象とするオブジェクトのID // comment : 承認申請時のコメント // approver : 承認プロセスのID ・・・ Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest(); req1.setObjectId(id); req1.setComments(comment); if(approver != null) { req1.setNextApproverIds(new Id[]{ approver }); } Approval.ProcessResult result = Approval.process(req1); ・・・8 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  10. 10. モバイル・アプリケーションモバイル側 クラウドサービス側 Salesforce Toolkit for Appcelarator OAuth2.0 JSON { “time” : ”2012/07/27”, “feed” : “今日は○○社の・・・”, Apex REST “latitude” : 35.684337, “longitude” : 139.739649 “placeId” : “WGS84”, “placeName” : “デジタルコースト・・・” } 9 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  11. 11. OAuth2.0 Force.com側10 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  12. 12. Apex REST:コードはどうなっているか?  RestResourceアノテーションを利用することで簡単に RESTリソースを公開できますモバイル側 Force.com側postBtn.addEventListener(‘click’, function() { @RestResource(urlMapping=/txsapi2/activity/*) ・・・ global with sharing class TxsActivity { var oauthJson = JSON.parse(oauthData); @HttpPost global static void doPost(RestRequest req, RestResponse res) { var uri = /services/apexrest/txsapi2/activity/?; Map<String,Object> r = new Map<String,Object>(); uri += time= + TSX.timeAsString(); try { uri += &feed= + (commentText.value ? commentText.value : ); String id = TxsUtil.getParamId(req); var restUrl = encodeURI( if(id != null) Ti.Network.decodeURIComponent(oauthJson.instance_url) + TxsActivityLogic.updateActivity(r, req, id); uri); else TxsActivityLogic.insertActivity(r, req); var xhr = Ti.Network.createHTTPClient(); xhr.onload = function() { r.put(success, true); var res = JSON.parse(this.responseText); } // Callbackでの処理 catch(Exception e) { TxsUtil.setException(r, e); } ・・・ res.responseBody = Blob.valueof(JSON.serialize(r)); }; } xhr.open(“GET”, restUrl, true); @HttpGet xhr.setRequestHeader( global static void doGet(RestRequest req, RestResponse res) { “Authorization”, “OAuth ” + Map<String,Object> r = new Map<String,Object>(); Ti.Network.decodeURIComponent(oauthJson.access_token)); ・・・ xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(); ・・・}; 11 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  13. 13. モバイルとForce.comアプリの役割分担モバイル側 クラウドサービス側 OAuth2.0 画面制御 外部 Salesforce Toolkit RESTリソース ロジック Web for Appcelarator TxsActivity サービス RESTリソース ロジック 駅探経路探索エンジン TxsExpense2 RESTリソース ロジック 勤怠計算エンジン TxsWorkTimeLogic サーバ側にロジックを集約 複雑な勤怠計算や経路探索はサーバ側に任せた クライアント側は画面制御に特化 短期間でプロトタイプを開発し、試作を繰り返 すことができた 12 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  14. 14. 最後にソーシャル化した企業はどのように変わったか?
  15. 15. 業務アプリをソーシャル化するということ エンジニアのちょっとしたアイデアで お客様の業務が大きく変えることができる14 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30
  16. 16. 15 Copyright © DigitalCoast Inc. All Rights Reserved. 2012/7/30

×