SlideShare a Scribd company logo
1 of 15
Download to read offline
FlexUserGroup@福岡




                ILog on SaaS




                       とくなが たかひさ [id : totty_jp]


FlexUserGroup
i. PaaS/SaaSの上
   PaaS(Platforme as a Service)
       インターネット上で、基盤となるプラットフォームを提供するサービス
   SaaS(Software as a Service)
       インターネット上で、ソフトウェアを提供するサービス


   Flexでクライアント(Flash)を作り、SaaS上に乗っける
       つまり・・・




                       on




FlexUserGroup
ii. 構成
   UIは、もちろん、Flex(Flash)
       SaaS(PaaS)環境
           Salesforce.com


       データを取得して、Flexで表示
           データ取得方法
                   SalesforceのASのAPIを利用

             <?xml version="1.0" encoding="utf-8"?>
             <mx:Application
                 xmlns:mx="http://www.adobe.com/2006/mxml"
                 xmlns:sf="http://www.salesforce.com/"
                 layout="absolute">

                     <sf:connection id="conn" />

             </mx:Application>



FlexUserGroup
ii. 構成
   Salesforce上のコンテンツとして、Flexを作成
     静的リソースとして、swfをアップロード
     直接も参照できるが、Visualforce(画面)を参照

           ユーザ A
           ユーザ A
                                       セールスフォース社
                                       セールスフォース社
                                         Force.com
                                          Force.com
                                                               swf
           ユーザ B
           ユーザ B                                             (Flash)
                                    SalesForceアプリ
                     Salesforceへの    (VisualForce)
                        ログイン                          SalesForceアプリ
                                                       (静的リソース)


           ユーザ C
           ユーザ C                              Force.com DB


                                                     組織情報
                ・・
                ・

FlexUserGroup
iii. ILog Elixir

   データ可視化画面の開発に役立つ製品ライブラリ
     主にチャート系
     スケジュール/マップ/ダイヤル/ゲージ/3Dチャート/レーダー・
      チャート/ツリーマップ/組織図




FlexUserGroup
iii. ILog Elixir

   分析系なら欠かせない
     現在、組織チャートのプロト作成。
     と、まぁ、ここまでは、仕事なので、置いといて・・・




FlexUserGroup
iv. Demo




FlexUserGroup
v.    Architecture
    Totty framework(笑)




FlexUserGroup
vi. Code.
   View(Organizer)・・・命名センスなし
       MXML上に必要なスクリプトは、すべてHelperクラスにて
    <mx:Application
        xmlns:mx="http://www.adobe.com/2006/mxml"
        xmlns:ilog="http://www.ilog.com/2007/ilog/flex"
        xmlns:helper="jp.totty.helper.*"
        backgroundColor="0xffffff"
        layout="absolute">

        <mx:Script>
          <![CDATA[
             import jp.totty.util.ResourceUtil;
          ]]>
        </mx:Script>
        <mx:Style source="/assets/css/common.css"/>

        <helper:OrganizerViewHelper id="helper" />

        ~~~略~~~


FlexUserGroup
vi. Code..
   Helper(BaseViewHelper)
       MXMLに、クラス内から参照できるようにIMXMLObjectを実装
    public class BaseViewHelper implements IMXMLObject {
      private var _document:UIComponent;           // MXMLファイル参照クラス
      private var _id:String;                      // MXMLファイルID

        public final function get document():UIComponent { return _document; }

        public function initialized(document:Object, id:String):void {
          _document = UIComponent(document);
          _id = id;
          // 初期化ファンクションをCallする為
          _document.addEventListener(FlexEvent.CREATION_COMPLETE,
                                          creationCompleteHandler, false, 0, true);
        }

        protected function creationCompleteHandler(event:FlexEvent):void {
          // 子クラスで処理を実装
        }
    }

FlexUserGroup
vi. Code...
   Helper(OrganizerViewHelper)
       クラス内からviewに設定できるよう、viewを保持
    public class OrganizerViewHelper extends BaseViewHelper {

        private var _view:Organizer;
        private var _controller:OrganizerViewController;

        public function get view():Organizer {
          if (_view == null) _view = Organizer(super.document);
              return _view;
        }
        public function set view(view:Organizer):void {
          _view = view;
        }
        override protected function creationCompleteHandler(
                                                     event:FlexEvent):void {
          if (_controller == null) {
              _controller = new OrganizerViewController(this);
          }
        }

FlexUserGroup
vi. Code....
   Controller(OrganizerViewController)
       Viewに対するコントロールなので、ViewContorller
    public class OrganizerViewController {

        private var helper:OrganizerViewHelper;
        private var logic:PersonLogic = PersonLogic.getInstance();;

        public function OrganizerViewController(
                                         viewHelper:OrganizerViewHelper) {
          helper = viewHelper;

          var view:Organizer = helper.view;
          view.tree.addEventListener(CollectionEvent.COLLECTION_CHANGE,
                                                       initTreeChangeHandler);
          ~~~略~~~

          view.helpButton.addEventListener(MouseEvent.CLICK,
                                                     helpHandler);
          }


FlexUserGroup
vi. Code.....
   Dao(BaseDao)
       EventDispatcherを継承して、データ取得後をイベントとして設定
    public class BaseDao extends EventDispatcher {
      protected function doneSuccess(responseDto:ResponseDto):void {
         dispatchEvent(new ResultEvent(ResultEvent.RESULT,
                        false, true, responseDto));
      }
      protected function doneFailure(responseDto:ResponseDto):void {
         dispatchEvent(new FaultEvent(FaultEvent.FAULT,
                        false, true, null, null, responseDto.errors[0].message));
      }
      protected function selectQuery(sql:String,
                                             success:Function = null,
                                             failuer:Function = null):void {
         try {
            conn.query(sql, new AsyncResponder(success, failuer));
         } catch (error:Error) {
            throw new DataBaseError(error.message);
         }
      }

FlexUserGroup
vi. Code......
   Dao(PersonDao)
       DBレスポンスの処理を実装
    public class PersonDao extends BaseDao {

        public function selectAll(dto:RequestDto):void {
          var sql:String = "Select hoge from persons";
          this.selectQuery(sql, selectAllResult);
        }

        private function selectAllResult(result:QueryResult):void {
          var responseDto:ResponseDto = new ResponseDto();
          responseDto.results = dataList;

            ~~~略~~~
            var responseDto:ResponseDto = new ResponseDto();
            responseDto.results = dataList;

            this.doneSuccess(responseDto);
        }
    }

FlexUserGroup
vii. おしまい
   独自フレームワーク!?
     軽量フレームワークを目指した(いつ捨てても良いように)
     yui frameworkなど、期待の高いフレームワークのリリースを待つ
       もし、一緒に成長させてみたい奇特な方がいれば、ご連絡ください(笑



    
       以上、ありがとうございました。
    ところで、なんでこんな発表だったか!?
        結果的にみると、やってることが、Flex on Cloudで新しい気がした
     実際の現場の声ってことがテーマだった(気がする)
                  from totty_jp
     Flexをキーワードに盛り上がれれば、なんでもよかった


       とにかく、記念すべき福岡第1回だったので、参加したかった(笑




FlexUserGroup

More Related Content

Similar to I Log On Saa S

Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdkKazuki Nakajima
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発Kazuki Nakajima
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideYusuke Tochigi
 
Flux with RxSwift
Flux with RxSwiftFlux with RxSwift
Flux with RxSwiftYuji Hato
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイドFrom Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイドYuichi Sakuraba
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Shinichi Hirauchi
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -Akio Katayama
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -Akio Katayama
 
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた Shumpei Shiraishi
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep diveAtsushi Fukui
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)Teruaki Kinoshita
 

Similar to I Log On Saa S (20)

Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdk
 
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
Flux with RxSwift
Flux with RxSwiftFlux with RxSwift
Flux with RxSwift
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイドFrom Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
 
Flex's DI Container
Flex's DI ContainerFlex's DI Container
Flex's DI Container
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Entity Framework 5.0 deep dive
Entity Framework 5.0 deep diveEntity Framework 5.0 deep dive
Entity Framework 5.0 deep dive
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Vue入門
Vue入門Vue入門
Vue入門
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

I Log On Saa S

  • 1. FlexUserGroup@福岡 ILog on SaaS とくなが たかひさ [id : totty_jp] FlexUserGroup
  • 2. i. PaaS/SaaSの上  PaaS(Platforme as a Service)  インターネット上で、基盤となるプラットフォームを提供するサービス  SaaS(Software as a Service)  インターネット上で、ソフトウェアを提供するサービス  Flexでクライアント(Flash)を作り、SaaS上に乗っける  つまり・・・ on FlexUserGroup
  • 3. ii. 構成  UIは、もちろん、Flex(Flash)  SaaS(PaaS)環境  Salesforce.com  データを取得して、Flexで表示  データ取得方法  SalesforceのASのAPIを利用 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:sf="http://www.salesforce.com/" layout="absolute"> <sf:connection id="conn" /> </mx:Application> FlexUserGroup
  • 4. ii. 構成  Salesforce上のコンテンツとして、Flexを作成  静的リソースとして、swfをアップロード  直接も参照できるが、Visualforce(画面)を参照 ユーザ A ユーザ A セールスフォース社 セールスフォース社 Force.com Force.com swf ユーザ B ユーザ B (Flash) SalesForceアプリ Salesforceへの (VisualForce) ログイン SalesForceアプリ (静的リソース) ユーザ C ユーザ C Force.com DB 組織情報 ・・ ・ FlexUserGroup
  • 5. iii. ILog Elixir  データ可視化画面の開発に役立つ製品ライブラリ  主にチャート系  スケジュール/マップ/ダイヤル/ゲージ/3Dチャート/レーダー・ チャート/ツリーマップ/組織図 FlexUserGroup
  • 6. iii. ILog Elixir  分析系なら欠かせない  現在、組織チャートのプロト作成。  と、まぁ、ここまでは、仕事なので、置いといて・・・ FlexUserGroup
  • 8. v. Architecture  Totty framework(笑) FlexUserGroup
  • 9. vi. Code.  View(Organizer)・・・命名センスなし  MXML上に必要なスクリプトは、すべてHelperクラスにて <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ilog="http://www.ilog.com/2007/ilog/flex" xmlns:helper="jp.totty.helper.*" backgroundColor="0xffffff" layout="absolute"> <mx:Script> <![CDATA[ import jp.totty.util.ResourceUtil; ]]> </mx:Script> <mx:Style source="/assets/css/common.css"/> <helper:OrganizerViewHelper id="helper" /> ~~~略~~~ FlexUserGroup
  • 10. vi. Code..  Helper(BaseViewHelper)  MXMLに、クラス内から参照できるようにIMXMLObjectを実装 public class BaseViewHelper implements IMXMLObject { private var _document:UIComponent; // MXMLファイル参照クラス private var _id:String; // MXMLファイルID public final function get document():UIComponent { return _document; } public function initialized(document:Object, id:String):void { _document = UIComponent(document); _id = id; // 初期化ファンクションをCallする為 _document.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler, false, 0, true); } protected function creationCompleteHandler(event:FlexEvent):void { // 子クラスで処理を実装 } } FlexUserGroup
  • 11. vi. Code...  Helper(OrganizerViewHelper)  クラス内からviewに設定できるよう、viewを保持 public class OrganizerViewHelper extends BaseViewHelper { private var _view:Organizer; private var _controller:OrganizerViewController; public function get view():Organizer { if (_view == null) _view = Organizer(super.document); return _view; } public function set view(view:Organizer):void { _view = view; } override protected function creationCompleteHandler( event:FlexEvent):void { if (_controller == null) { _controller = new OrganizerViewController(this); } } FlexUserGroup
  • 12. vi. Code....  Controller(OrganizerViewController)  Viewに対するコントロールなので、ViewContorller public class OrganizerViewController { private var helper:OrganizerViewHelper; private var logic:PersonLogic = PersonLogic.getInstance();; public function OrganizerViewController( viewHelper:OrganizerViewHelper) { helper = viewHelper; var view:Organizer = helper.view; view.tree.addEventListener(CollectionEvent.COLLECTION_CHANGE, initTreeChangeHandler); ~~~略~~~ view.helpButton.addEventListener(MouseEvent.CLICK, helpHandler); } FlexUserGroup
  • 13. vi. Code.....  Dao(BaseDao)  EventDispatcherを継承して、データ取得後をイベントとして設定 public class BaseDao extends EventDispatcher { protected function doneSuccess(responseDto:ResponseDto):void { dispatchEvent(new ResultEvent(ResultEvent.RESULT, false, true, responseDto)); } protected function doneFailure(responseDto:ResponseDto):void { dispatchEvent(new FaultEvent(FaultEvent.FAULT, false, true, null, null, responseDto.errors[0].message)); } protected function selectQuery(sql:String, success:Function = null, failuer:Function = null):void { try { conn.query(sql, new AsyncResponder(success, failuer)); } catch (error:Error) { throw new DataBaseError(error.message); } } FlexUserGroup
  • 14. vi. Code......  Dao(PersonDao)  DBレスポンスの処理を実装 public class PersonDao extends BaseDao { public function selectAll(dto:RequestDto):void { var sql:String = "Select hoge from persons"; this.selectQuery(sql, selectAllResult); } private function selectAllResult(result:QueryResult):void { var responseDto:ResponseDto = new ResponseDto(); responseDto.results = dataList; ~~~略~~~ var responseDto:ResponseDto = new ResponseDto(); responseDto.results = dataList; this.doneSuccess(responseDto); } } FlexUserGroup
  • 15. vii. おしまい  独自フレームワーク!?  軽量フレームワークを目指した(いつ捨てても良いように)  yui frameworkなど、期待の高いフレームワークのリリースを待つ  もし、一緒に成長させてみたい奇特な方がいれば、ご連絡ください(笑   以上、ありがとうございました。 ところで、なんでこんな発表だったか!? 結果的にみると、やってることが、Flex on Cloudで新しい気がした  実際の現場の声ってことがテーマだった(気がする) from totty_jp  Flexをキーワードに盛り上がれれば、なんでもよかった  とにかく、記念すべき福岡第1回だったので、参加したかった(笑 FlexUserGroup