flowMappingsの設定方法について

9 views
Skip to first unread message

katarou

unread,
Nov 19, 2007, 9:45:31 PM11/19/07
to Piece Framework Users (ja)
田川です。

現在flowMappingsの機能を使用して、複数フローの対応を行おうとしています。
サンプルでフローは2フローあるのですが、
'The flow ID [ /authenticate.php ] not found in the flow definitions.
とエラーが表示され設定がうまくいきません。

- name: useFlowMappings
type: configuration
value: true

- name: configExtension
type: configuration
value: .flow

- name: flowMappings
 type: configuration
   value:
     - url: /admin/index.php
     flowName: admin_Admin
     isExclusive: false
    - url: /authenticate.php
     flowName: authentication_Authentication
     isExclusive: true

- name: Interceptor_Authentication
point:
- name: url
type: configuration
value: "http://localhost/authenticate.php"
- name: resources
type: configuration
value:
- "/admin/index.php"

どこかに問題があると思うのですが、いまだに原因がつかめずにいます。
サンプルなどあれば参照したいのですが、可能でしょうか?

また、Intercepter_Authenticationで質問なのですが、フローが複数ある場合、それぞれのフローで認証の状態は取得が可能で
しょうか?

ついでの質問ですが、Piece_IDEにてフローデザイナの各ステートの位置(座標)が保持されない場合があるようですが、保持する方法があれば教え
てください。(再現方法はまだつかめていません。申し訳ないです)

以上、素人質問で大変申し訳ありませんが、ご指導のほどよろしくお願いいたします。

KUBO Atsuhiro

unread,
Nov 20, 2007, 7:30:25 AM11/20/07
to piece-framew...@googlegroups.com
katarou さんは書きました:

KUBO Atsuhiro

unread,
Nov 20, 2007, 8:07:21 AM11/20/07
to piece-framew...@googlegroups.com
田川さん

久保です。先ほどは誤って送信ボタンを押してしまいました。

katarou さんは書きました:


> 現在flowMappingsの機能を使用して、複数フローの対応を行おうとしています。
> サンプルでフローは2フローあるのですが、
> 'The flow ID [ /authenticate.php ] not found in the flow definitions.
> とエラーが表示され設定がうまくいきません。

> どこかに問題があると思うのですが、いまだに原因がつかめずにいます。
> サンプルなどあれば参照したいのですが、可能でしょうか?

ご迷惑をお掛けしております。
flowMappings の設定例として、現在準備中のサンプルアプリケーションのも
のを示します。

- name: Dispatcher_Continuation
point:
- name: actionDirectory
type: configuration
value: ../webapp/actions
- name: cacheDirectory
type: configuration
value: ../webapp/cache/flows


- name: useFlowMappings
type: configuration
value: true

- name: configDirectory
type: configuration
value: ../webapp/config/flows


- name: flowMappings
type: configuration
value:

- url: /entry/list.php
flowName: Entry_List
isExclusive: false
- url: /entry/new.php
flowName: Entry_New
isExclusive: false
- url: /entry/edit.php
flowName: Entry_Edit
isExclusive: false

また、1.3.0 リリースには「リバースプロキシ環境でflowMappingsを使ったア
プリケーションが動作しない」(Ticket #93) という不具合が含まれていまし
た。

http://trac.piece-framework.com/piece-unity/ticket/93

この不具合は先ほど修正しました。すぐに修正済みのリリース (1.3.1) を行
う予定です。修正内容を下記を参照ください。

http://trac.piece-framework.com/piece-unity/changeset?format=diff&new=1047&old=1043&new_path=trunk%2FPiece%2FUnity%2FPlugin%2FDispatcher%2FContinuation.php&old_path=trunk%2FPiece%2FUnity%2FPlugin%2FDispatcher%2FContinuation.php

> また、Intercepter_Authenticationで質問なのですが、フローが複数ある場合、それぞれのフローで認証の状態は取得が可能で
> しょうか?

下記のように Authentication サービスを使ってログインを行っている場合、

$authentication = new Piece_Unity_Service_Authentication();
$authentication->login();

アクションクラス中で、

$authentication = new Piece_Unity_Service_Authentication();
if ($authentication->isAuthenticated()) {
// 認証済みの場合
}

とすることで認証状態を取得可能です。

> ついでの質問ですが、Piece_IDEにてフローデザイナの各ステートの位置(座標)が保持されない場合があるようですが、保持する方法があれば教え
> てください。(再現方法はまだつかめていません。申し訳ないです)

フローデザイナーで編集中のフロー定義ファイルを Eclipse 上で移動した時
に、レイアウトを保持しているファイルが同時に移動されないことによってレ
イアウトが失われる現象は認識しており、対応を検討中です。それに該当する
場合は、Eclipse のプロジェクト設定ディレクトリ以下にある対象のファイル
をフロー定義ファイルと同じように移動することでレイアウトを維持すること
ができます。

フロー定義ファイル:
old: web/webapp/config/flows/Foo.flow
new: web/webapp/config/flows/Bar/Baz.flow

レイアウトを保持するファイル:
old: .settings/flow/ProjectName/web/webapp/config/flows/Foo.flow_obj
new: .settings/flow/ProjectName/web/webapp/config/flows/Bar/Baz.flow_obj

以上、よろしくお願いいたします。

--
KUBO Atsuhiro e-mail: ku...@iteman.jp

katarou さんは書きました:

katarou

unread,
Nov 20, 2007, 11:57:29 AM11/20/07
to Piece Framework Users (ja)
田川です。
ご連絡ありがとうございます。
自分も、下記
- name: useFlowMappings
type: configuration
value: true
設定を追加して、調整を行っているところでした。
flowMappingsは認識ができるようになっている模様です。

現在下記エラーと格闘中です。
Notice: Undefined index: _default in C:\PHP\PEAR\Piece\Flow\Action
\Factory.php on line 146
Notice: Undefined index: _default in C:\PHP\PEAR\Piece\Flow\Action
\Factory.php on line 146
Warning: array_keys() [function.array-keys]: The first argument should
be an array in C:\PHP\PEAR\Piece\Unity\Plugin\Dispatcher
\Continuation.php on line 166
Warning: Invalid argument supplied for foreach() in C:\PHP\PEAR\Piece
\Unity\Plugin\Dispatcher\Continuation.php on line 166
原因が分からないのですが、
Piece/Flow/Continuation/server.phpの

if ($bindActionsWithFlowExecution) {
$flow = &$this->_flowExecution->getActiveFlow();
$flow->clearPayload();
$this->_prepareContext();
$flow->setAttribute('_actionInstances',
Piece_Flow_Action_Factory::getInstances()); //この行
}
で引っかかってる模様です。
今回の更新で、エントリポイントも少ない記述でよいかと思い
$config = &new Piece_Unity_Config();
$config->setExtension('View', 'renderer', 'Renderer_Flexy');
$config->setExtension('Controller', 'dispatcher',
'Dispatcher_Continuation');
//$config->setConfiguration('Dispatcher_Continuation', 'flowName',
$flowName);
//$config->setConfiguration('Renderer_Flexy', 'templateDir', "$base/
templates/$flowName");
//$config->setConfiguration('Renderer_Flexy', 'compileDir', "$base/
compiled-templates/$flowName");
$unity = &new Piece_Unity("$base/config", "$base/cache", $config);

$unity->dispatch();
少し省略して試してみているところです。

フローデザインの件は了解しました。あわよくば、印刷して資料にできるかもと考えていたところだったので、助かります。

認証の件もありがとうございました。フォロー感謝いたします。

※設定を行っていて感じたのですが、piece-unity-config.yamlの設定項目の一覧があると、大変わかりやすいなと思います。
 あと、エントリポイントについて、もう少し詳しいドキュメントがあると助かります。

以上、またわからない点があれば質問させていただきます。ありがとうございます。
> http://trac.piece-framework.com/piece-unity/changeset?format=diff&new...
> KUBO Atsuhiro e-mail: k...@iteman.jp
> > 以上、素人質問で大変申し訳ありませんが、ご指導のほどよろしくお願いいたします。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

katarou

unread,
Nov 20, 2007, 10:19:43 PM11/20/07
to Piece Framework Users (ja)
田川です。

FlowMappingについては、やはりうまく動作させることができていません。
ただ、認証のサンプルはソースコードに変更を加え動作させることができました。


In config/piece-Unity-config.yaml
- name: Interceptor_Authentication
point:
- name: url
type: configuration
value: "http://localhost/authenticate.php"
- name: resources
type: configuration
value:
- /protected-resource.php

In actions/AuthenticationAction.php
function doProcessLoginFromDisplayForm()
{
$validation = &$this->_context->getValidation();
if ($validation->validate('Authentication', $this->_user)) {
$authentication = &new Piece_Unity_Service_Authentication();

if ($this->_user->loginName === 'guest' && $this->_user-
>password === 'guest') {
$authentication->login();
return 'DisplayHomeFromProcessLogin';
} else {
$authentication->logout();
$viewElement = &$this->_context->getViewElement();
$viewElement->setElement('message', 'Login Failed!');
return 'DisplayFormFromProcessLogin';
}
} else {
return 'DisplayFormFromProcessLogin';
}
}

function doProcessLogoutFromDisplayHome()
{
$authentication = &new Piece_Unity_Service_Authentication();
$authentication->logout();
return 'DisplayFinishFromProcessLogout';
}

piece-unity-config.yamlと上の2関数を修正して動作できるようになりました。
もうちょっと確認してみたいと思います。

認証先のソースに手を加えないで別フローで扱えるのはとても楽だと思います。

Eclipse+PDT+Piece-IDEでプロジェクトを新規作成した際、PDTのコード補完がうまく行えないようですので、
.projectファイルの設定内容を添付しておきます。

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>tara</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name>
<arguments>
</arguments>
</buildCommand>

</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
</natures>
</projectDescription>

Piece-Projectを作成した時に、BuildSpecとnaturesのタグの中身が空になっていたので、コード補完がうまく
できなかったようです。

とりあえず、この内容で進んでみたいと思います。

※FlowMappingも使ってみたいので、ぼちぼち勉強してゆきたいと思います。

以上、ありがとうございました。
> > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

katarou

unread,
Nov 23, 2007, 7:31:12 PM11/23/07
to Piece Framework Users (ja)
田川です。

FlowMappingの件は解決しました。
最初に表示されるビューステートで、イベントハンドラが未定義の場合、

Notice: Undefined index: _default in C:\PHP\PEAR\Piece\Flow\Action
\Factory.php on line 146 (以下略)
のエラーが発生するようです。

定義をしたところ動作するようになりました。

ご迷惑をおかけいたしました。
> > > > 田川です。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -...
>
> 他のメッセージを読む >>

KUBO Atsuhiro

unread,
Nov 26, 2007, 12:21:11 PM11/26/07
to piece-framew...@googlegroups.com
田川さん

久保です。

katarou さんは書きました:


> FlowMappingの件は解決しました。
> 最初に表示されるビューステートで、イベントハンドラが未定義の場合、
>
> Notice: Undefined index: _default in C:\PHP\PEAR\Piece\Flow\Action
> \Factory.php on line 146 (以下略)
> のエラーが発生するようです。
>
> 定義をしたところ動作するようになりました。

ご迷惑をお掛けしました。その修正を含む Piece_Flow 1.15.1 をリリースし
ましたのでご確認ください。

http://trac.piece-framework.com/piece-flow/wiki/ja/ReleaseNotes/1.15.1

おかげさまで不具合を修正することができました。ありがとうございます。

また、flowMappings については Dispatcher_Continuation プラグインのマニ
ュアルを記述しましたので、そちらを参照ください。

http://trac.piece-framework.com/piece-doc/wiki/ja/users/piece-unity/UsersManual/PluginReference/Dispatcher_ContinuationPlugin

> ※設定を行っていて感じたのですが、piece-unity-config.yamlの設定項目の一覧があると、大変わかりやすいなと思います。
>  あと、エントリポイントについて、もう少し詳しいドキュメントがあると助かります。

ご意見ありがとうございます。こちらについても、徐々にではありますがマニ
ュアルの強化によって対応したいと思います。
あと、マニュアルを書いてくださる方も随時募集中です。

> フローデザインの件は了解しました。あわよくば、印刷して資料にできるかもと考えていたところだったので、助かります。

印刷やクリップボードへのコピー等については、今後の実装を検討したいと思
いますので、気長にお待ち頂ければ幸いです。それまでは、お手数ですがスク
リーンショットで対応願います。

> Eclipse+PDT+Piece-IDEでプロジェクトを新規作成した際、PDTのコード補完がうまく行えないようですので、
> .projectファイルの設定内容を添付しておきます。
>
> <?xml version="1.0" encoding="UTF-8"?>
> <projectDescription>
> <name>tara</name>
> <comment></comment>
> <projects>
> </projects>
> <buildSpec>
> <buildCommand>
> <name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name>
> <arguments>
> </arguments>
> </buildCommand>
>
> </buildSpec>
> <natures>
> <nature>org.eclipse.php.core.PHPNature</nature>
> </natures>
> </projectDescription>
>
> Piece-Projectを作成した時に、BuildSpecとnaturesのタグの中身が空になっていたので、コード補完がうまく
> できなかったようです。

こちらについては、次回か次々回のリリースに含めたいと思います。

以上、貴重なご意見を頂けて感謝しております。ありがとうございました。

Reply all
Reply to author
Forward
0 new messages