Wednesday, January 28, 2015

Alfresco 5.0 で外部SSO連携を設定する(リクエストヘッダパラメータ編)

こんにちは。大谷です。

今回はAlfresco 5.0を外部SSO基盤と連携するための設定方法を紹介したいと思います。

外部SSOの仕様によって連携方法が異なりますが、今回は、認証済ユーザのリクエストヘッダに特定のパラメータを付与するパターンのSSOについてみていきます。このパターンはありがちなSSOの仕様の1つで、SSO基盤製品として標準機能で対応しているものや、エージェントと呼ばれるソフトウェアをSSO対象サーバ側にインストールして実現するもの(OpenAMもこのパターンです)などがあります。


AlfrescoでのSSO設定


では早速設定を行います。Alfrescoは2つのファイルに設定を行うだけで上記のパターンのSSOに対応できます。以下では、SSO基盤が認証済ユーザからのHTTPリクエストのリクエストヘッダに X-Test-Remote-User というパラメータでユーザ名を付与することを想定しています。

まずは毎度おなじみ alfresco-global.properties です。ここに以下の3設定を追記します。
  • authentication.chain : Alfresco認証チェーンに外部認証を追加します(external1はデフォルトで定義されている外部認証用の設定)
  • external.authentication.proxyUserName : このプロパティを空に設定することで、external.authentication.proxyHeader で指定したリクエストヘッダパラメータの値をユーザ名として利用します
  • external.authentication.proxyHeader : ユーザ名を読み出すリクエストヘッダパラメータ名を指定します(SSO基盤が認証済ユーザのリクエストヘッダに付与するパラメータ名を指定)

<tomcat_dir>/shared/classes/alfresco-global.properties
authentication.chain=external1:external,alfrescoNtlm1:alfrescoNtlm
external.authentication.proxyUserName=
external.authentication.proxyHeader=X-Test-Remote-User

続いて share-config-custom.xml の設定を行います。まずは既存の <config evaluator="string-compare" condition="Remote"> エレメントをコメントアウトし、以下の設定を追記します。インストーラでインストールした場合は、以下の設定がコメントアウトされた状態で記述されているので、以下の箇所のコメントタグを外します。

<tomcat_dir>/shared/classes/alfresco/web-extension/share-config-custom.xml
   <config evaluator="string-compare" condition="Remote">
      <remote>
         <keystore>
             <path>alfresco/web-extension/alfresco-system.p12</path>
             <type>pkcs12</type>
             <password>alfresco-system</password>
         </keystore>
         
         <connector>
            <id>alfrescoCookie</id>
            <name>Alfresco Connector</name>
            <description>Connects to an Alfresco instance using cookie-based authentication</description>
            <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
         </connector>
         
         <connector>
            <id>alfrescoHeader</id>
            <name>Alfresco Connector</name>
            <description>Connects to an Alfresco instance using header and cookie-based authentication</description>
            <class>org.alfresco.web.site.servlet.SlingshotAlfrescoConnector</class>
            <userHeader>X-Test-Remote-User</userHeader>
         </connector>

         <endpoint>
            <id>alfresco</id>
            <name>Alfresco - user access</name>
            <description>Access to Alfresco Repository WebScripts that require user authentication</description>
            <connector-id>alfrescoHeader</connector-id>
            <endpoint-url>http://localhost:8080/alfresco/wcs</endpoint-url>
            <identity>user</identity>
            <external-auth>true</external-auth>
         </endpoint>
      </remote>
   </config>

設定のポイントは以下の2か所です。インストーラでインストールした場合は必ず以下の2か所を設定変更してください。
  • alfrescoHeaderコネクタのuserHeaderタグ : ユーザ名を読み出すリクエストヘッダパラメータ名を指定します(external.authentication.proxyHeader と同じ値を指定)
  • alfrescoエンドポイントのconnector-idタグ : alfrescoHeader を指定します(リクエストヘッダパラメータを使ったSSO認証を行うようになります)
設定は以上となります。なお、設定を反映させるためにはAlfrescoの再起動が必要です。


動作の確認


では、早速動作確認してみましょう。SSO基盤がある場合はSSO基盤の認証が通った状態でAlfrescoにアクセスしてみます。もしSSO基盤が無く、同様の状況をエミュレートする必要がある場合は、ブラウザのアドオン等を利用します。Chromeであれば、ModHeaderがお勧めです。今回の設定ではパラメータ X-Test-Remote-User からユーザ名を読み出すように設定したので、このリクエストヘッダパラメータにユーザ名(下記スナップショットではtest1)を指定しておきます。


ModHeaderのリクエストヘッダパラメータ追加画面

この状態で、http://<server name>:<port>/share にアクセスしてみましょう(ローカルPCであれば http://localhost:8080/share)。ログイン画面がスキップされ、以下のように指定したユーザのダッシュボード画面が表示されれば動作確認完了です。


Tipsとか


うまく動作しない場合は、ログを確認してみましょう。Alfresco Shareのログ出力設定に以下の行を加えると、詳細な動作状況を確認することができます。ただし、HTTPリクエストの度にログが出力されるのでログ肥大化には注意が必要です。

<tomcat_dir>/webapps/share/WEB-INF/classes/log4j.properties
log4j.logger.org.alfresco.web.site.servlet=debug

Alfresco起動時には以下のようなログが表示され、

DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [ContainerBackgroundProcessor[StandardEngine[Catalina]]] Initializing the SSOAuthenticationFilter.
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [ContainerBackgroundProcessor[StandardEngine[Catalina]]] Endpoint is alfresco
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [ContainerBackgroundProcessor[StandardEngine[Catalina]]] userHeader is X-Test-Remote-User
INFO [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [ContainerBackgroundProcessor[StandardEngine[Catalina]]] SSOAuthenticationFilter initialised.


アクセス時には以下のようなログが表示されるようになります。

DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [http-apr-8080-exec-4] Processing request /share/page/ SID:xxxxxxxxxx
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [http-apr-8080-exec-4] Touching the repo to ensure we still have an authenticated session.
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [http-apr-8080-exec-4] Validating repository session for test1
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [http-apr-8080-exec-4] Accept-Language header present: ja,en-US;q=0.8,en;q=0.6
DEBUG [org.alfresco.web.site.servlet.SSOAuthenticationFilter] [http-apr-8080-exec-4] Authentication not required, chaining ...


起動時に指定したリクエストヘッダパラメータをチェックするように設定されているか、アクセス時に適切にユーザ名を読み取っているかを確認することができます。


本記事は以上となります。比較的簡単にSSO連携設定ができることがお分かり頂けたかと思いますので、是非一度お試しください。なお、本記事はAlfresco DocumentationのExternal configuration propertiesConfiguring Alfresco Share to use an external ssoを参考にしています。


Thursday, January 22, 2015

それ、CMISで繋げます(Liferay篇その2)

前回はLiferay上のDocuments and Mediaポートレットに対して、CMISリポジトリであるNemakiWareをバックエンドとして繋いでみました。 今回はそのリポジトリに対してどんなアクションが行えるか見てみましょう。 CMISはContent Management Interoperability Serviceというくらいなので、繋いでしまえば文書管理のオペレーションを行えるわけです。

一覧画面

Liferay側の機能ですが、表示形式を変えることができます。
各アイテムの横にある矢印ボタンをクリックすると、そのアイテムに対するアクションを行うことができます。

アクションの種類として、コンテキストメニューにダウンロード、編集、移動、チェックアウト、削除が見えています。

また、新規アイテムは画面上部のAddから作成します。フォルダ/ドキュメントの2種類しか選べないようです。
CMISではドメインモデルとして、フォルダやドキュメントであるにしてもさまざまなカスタムタイプを定義できますが、次の新規作成画面を見てもタイプやそのカスタム属性を入力できる場所は見当たりません。編集画面も同様で、ファイル実体と、名前の変更だけが可能です。

また、各アイテムの詳細情報を表示したければそのアイテムを一覧上でクリックします。メタデータとバージョン履歴が表示されます。メタデータはCMISのごく基本的な属性のうち一部が表示されています。
バージョン履歴では、以前のバージョンをダウンロードしたり、以前のバージョンを復活させる(ver1.1がある状態でver1.0をrevertすると、ver2.0としてver1.0が復活する)こともできます。このrevert自体はCMISで定義されたサービスではありませんが、以前のバージョンの内容で通常の更新アクションを内部的に実行していると思われます。

Documens and Mediaでは通常プレビューも存在すれば表示されますが、CMIS上のコンテンツに対しては、ファイル内容のプレビュー表示はないようです(CMISでは、プレビュー画像のようなものをクライアントに伝えることはできますが、プレビュー画像のデータ型が仕様で決まっているわけではありません)。

チェックアウト

文書管理機能らしいアクションといえば、チェックアウト/チェックインは欠かせません。
共有リポジトリ上で、特定のユーザが作業中は他のユーザから触れないようにファイルをロックしておくことはもちろん、更新作業中のファイルのスナップショットもなるべくローカルマシンに隠蔽しておくのではなくサーバ側に寄せて文書管理の対象とすることができます。

ではtest_02.txtをチェックアウトしてみましょう。

 ……あれれ?
 ロックされたものの、矢印ボタンも消えてアクションできなくなっています。
他のユーザに対してロックするのはよいですが、自分自身もロックしてしまったのでしょうか(いえ、そんなことはありません)。

 どうしてこうなった

結論からいうと、チェックアウトについてのCMIS仕様に関する解釈がLiferayとNemakiWareで食い違っているためだと思われます。

まずCMISではチェックアウトすると、作業用コピーが独立したオブジェクトとして自動で作成されます。この作業用コピーは、ver.1.0やver.1.1といったバージョンに似ていますが、あくまでバージョンではないとされています(仕様書2.1.13.15.1)。
ドメインモデルの考え方としてはバージョンではないのですが、サービスの方にあるgetAllVersionsメソッドでは作業用コピーも返すことになっているので、元のドキュメントから作業用コピーをたどっていくことは可能です。

一方、スクリーンショットにあるアイテム一覧は、CMISのgetChildrenメソッドによってあるフォルダの子要素一覧として取得されていると考えられます。getChildrenメソッドでは原則的には「最新のバージョン」を返すことになっているのですが、作業用コピーはバージョンではないので、getChildrenでは返されません。作業用コピーを返すためには別途、getCheckedOutDocsというメソッドが用意されています。

NemakiWareの場合、getChildrenで作業用コピーを返していないので、チェックアウトでロックされた元のドキュメントだけが表示されてしまっているのです。ロックされているのでアクションもできませんし、Liferayのバージョン履歴からは作業用コピーをたどることもできませんでした。

getChildrenで作業用コピーを返すことが明示的に禁じられているわけではないので、作業用コピーもgetChildrenで返すリポジトリはあり得ます。実際、Alfrescoがそうなっています。

 CMISリポジトリとしてAlfrescoをLiferayに接続してみると、2つ同じアイテムがありますが、片方には矢印ボタンがついていますね。作業用コピーに対してチェックインや、チェックアウトのキャンセルができる、みたいです。

「みたいです」、というのは、実際にはAlfrescoの場合もLiferayからちゃんとしたチェックインができるわけではないからです。

まず作業用コピーを更新して、スナップショットをサーバに保存しておくためにEditを開いてみます。なぜか真っ白。これでは編集できません。
ではチェックインを実行してみると、チェックイン時に更新画面は開かれず、いきなり以下の状態になります。 ロックは解除されましたが、これではロック中にファイル内容を変更してアップロードすることができません。

まとめ

  • Liferayに接続したCMISリポジトリに対して、基本的なCRUDは可能
  • Liferayからのチェックアウト/ チェックインには難あり。
    • Liferay側のCMIS仕様の解釈に問題がある?
      • 筆者の解釈では、作業用コピーはgetAllVersionsかgetCheckedOutDocsで取得すべき
      • LiferayはgetChildrenで作業用コピーが返されると期待しているのかも(Alfrescoのように、チェックインするためのアクションボタンが表示されていた)
    • CMISの解釈はさておき、Alfrescoにとくに最適化されているのかと思いきや、Alfrescoでも見かけだけでちゃんと機能していない
  • とはいえ、Liferayは別に文書管理ソフトウェアではないのだから、ファイルのシンプルな読み書きだけできればそれで充分かもしれません。
というわけで、チェックアウト/チェックインに関しては残念な結果となってしまいました。今後のアクションとして、原因を正確に切り分けた上で、LiferayのJIRAに投稿するなどしようと思っています。

(文:linzhixing)

Tuesday, January 13, 2015

55% of big businesses block Dropbox: employees evade if no convenient replacement is proposed

According to a GIGAOM study, 55% of businesses with 30k+ employees explicitly forbid SaaS-based file sharing (Dropbox, Box, Office365, Syncplicity, etc).

Do employees accept this rule and go back to using their company's awkward tools, or stop sharing files with their colleagues?
No: According to the same study, 90% of cloud application usage happens without the IT department knowing it.

Block Dropbox, and employees will use a lesser-known alternative. Which is probably even worse.

Conclusion: If you block Dropbox, at the same time you should provide an alternative that offers the same convenience.

CmisSync offers exactly that:
- Looks like Dropbox
- Feels like Dropbox- Syncs like Dropbox
- Connects only to your corporate server, and never to any third-party.
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf
90% of actual cloud application usage happens without the company IT department knowing - See more at: http://blogs.intralinks.com/collaborista/2014/10/out-of-darkness-shedding-light-shadow/#sthash.28CVTMxS.dpuf

Wednesday, January 7, 2015

Liferay Portal 6.2をインストールしてみよう

こんにちは、おおたにです。 今回はLiferay Portal 6.2のインストール方法について紹介したいと思います。

本ブログでもたびたび取り上げているLiferay Portalは、オープンソースの企業向け情報ポータル製品(Enterprise Information Portal)で、企業のインターネット向けサイトやイントラネット向けサイト、代理店/販売店ポータルなどに代表される組織/企業間、コミュニティポータルなどに代表されるユーザ同士など、様々な形での情報発信/情報共有の場を構築することに利用されています。

エンタープライズ向けと銘打たれているのでインストールの敷居も高いのではないかと思われるかもしれませんが、そんなことはありません。もちろん実運用を考えると諸々の設定やチューニングを行う必要がありますが、とりあえずインストールして使ってみようという限りではとても簡単にセットアップすることができます。

 では、早速インストール方法を見ていきましょう。


Javaのインストール


Liferay PortalはJavaベースのアプリケーションなので、JDKをインストールする必要があります。
Liferay Poratal 6.2の場合はJDK7をインストールします。OracleのサイトからOSに合わせたJava SE Development Kit 7をダウンロードしてインストールしましょう。


Liferay Portalのインストール


続いて、Liferay Portalをインストールします。今回は、アプリケーションサーバ(というかサーブレットコンテナ)としてTomcatを利用します。なお、本記事執筆時点でのCommunity Editionの最新版は6.2 CE GA2となっています。

まずは、LiferayのサイトからCommunity Edition以下のドロップダウンリストをクリックし、「Bundled with Tomcat」を選択して「Go」をクリックします。Bundled with xxxというパッケージは、いくつかのアプリケーションサーバがLiferay向けの設定が施された状態で同梱されているものなので、初めの一歩として利用するにはとても便利なパッケージとなっています。




次に、ダウンロードしたzipファイルを展開します。展開すると liferay-portal-6.2-ce-ga2 というフォルダが作成され、その中に必要なファイルがコピーされます。なお、このフォルダは <LIFERAY_HOME> と呼ばれ、Liferayの設定や運用に際して重要なフォルダとなります。

以上でLiferay Portalのインストールは終わりです(前述のとおり、実運用を考えるとJVMのチューニング等、さらなる設定が必要ですが、ここではひとまず動かすことを目的としているのでデフォルトのままでOKです)。


Liferay Portalの起動と初期設定


では、早速Liferay Portalを起動してみましょう。Liferay Portalを起動するためにはTomcatを起動すればよいので、以下のスクリプトを実行します。

Windows : <LIFERAY_HOME>/tomcat-x.x.xx/bin/startup.bat
Linux (or Mac OS X) : <LIFERAY_HOME>/tomcat-x.x.xx/bin/startup.sh

Liferayが正常に起動すると、ブラウザが自動的に起動して http://localhost:8080 にアクセスします。起動しない場合は手動でブラウザを起動して先のURLにアクセスしてみてください。以下の画面が表示されればOKです。なお、初回起動時はDBテーブル作成等を行うため、通常起動時よりも時間がかかります(手元のノートPCでは90秒ほどかかりました)。



上記画面は初回起動時のみ表示される基本設定画面です。ここではポータル名やデフォルト言語、管理者ユーザの情報やサンプルデータの有無を設定することができますが、デフォルトのままで問題ありません。データベースについてもデフォルトではHypersonicが使われますが、お試し用途であればこのままでOKです。

では、「設定終了」をクリックして次に進みます。しばらく待つと(手元では60秒程度)以下の画面が表示され、無事設定が保存されたことが分かります。


「Go to My Portal」をクリックすると、利用規約が表示されるので「I Agree」をクリックします。続いてパスワードリマインダ(パスワードを忘れた時の秘密の質問)を入力して「Save」をクリックします。以下のランディングページが表示されたら設定完了です。


なお、デフォルトでの管理者のユーザID(Eメールアドレス)はtest@liferay.com、パスワードはtestとなっていますので、次回以降Liferay Portalにログインする際にはこれらを入力する必要があります。

以上でLiferay Portalが使える状態になったかと思います。みなさまも是非Liferay Portalをインストールしていただき、実際に触ってみてください!


トラブルシューティング


Liferayが正常に起動しない場合は、以下のログの内容を確認してみてください。

<LIFERAY_HOME>/logs/liferay.xxxx-xx-xx.log
<LIFERAY_HOME>/tomcat-x.x.xx/logs/catalina.xxxx-xx-xx.log

また、サーバに宛がわれたメモリを確認してください。Liferay Portalはデフォルトでヒープに1GB、PermGenに256MB使う設定となっています。2GBだとギリギリですので、最低でも3GBは欲しいところです。

Thursday, December 25, 2014

それ、CMISで繋げます(Liferay編その1)

CMISは文書管理リポジトリにアクセスするための仕様ですが、「CMIS対応しているっていうけど、何ができるの?」という質問を最近ときどき頂きます。

何ができるか、という質問に対する答えは、技術的な観点に限定しても、以下の2つの要素に分解できるでしょう。
・CMIS単体で提供される、文書管理機能のセット
・CMISによるシステム間連携

CMISは、連携、あるいはデータやサービスの相互運用性(interoperability)を主眼として策定されたもので、そのために文書管理機能としてはいろんなECMの最大公約数的な機能に絞られています。そういう意味では、CMISで実際にいろいろ繋いだものをお見せするのが、CMISのメリットを理解していただく早道かと思います。
(※最大公約数とはいえ、CMISの提供する文書管理機能にもある種のクセはあるのでその点は機会があれば別途)

 Liferayと繋いでみた

というわけで初回はLiferayと繋いでみましょう。
Liferayでは、そのCMS的な機能のバックエンドとして、バージョン6.1からCMISリポジトリをサポートしています。

ここではLiferay6.2を使用して、弊社製品であるCMIS対応の文書管理リポジトリであるNemakiWareに接続してみます。
NemakiWareを使う理由なのですが、単に弊社製品だからという商売っ気だけでなく、実際にCMIS仕様の遵守率が100%で、他ECMと比較しても現時点で1位にあるからです。
http://cmissync.org/CmisCompat/

NemakiWare自体のインストール・起動はまた別途ご紹介しますが、
インストーラのダウンロード:こちら
インストール・起動方法:こちら
になります。

CMIS接続のための設定は、LiferayのWiki(英語)を参照しました。
 
 

下準備

Liferay側での下準備として、ポータルのプロパティ(portal-ext.propertiesなど、プロパティの上書き機構に準ずる)に
session.store.password=true
company.security.auth.type=screenName 
と設定します。
 
この設定では、Liferay上のログインユーザ持つスクリーン名/パスワードが、CMISリポジトリにログインするためのユーザID/パスワードと一致している必要があります。
LiferayのUIからCMISリポジトリを操作することになるので、Liferayのログインユーザ情報がCMISリポジトリのログインユーザ情報として引き渡されるためです。
もしCMISリポジトリがLDAP認証などに対応していれば、ID/PWDは簡単に統一化できるでしょう。

ここではLiferay、NemakiWareともに、admin/adminユーザでログインするものとします。

リポジトリの追加

AdminメニューのContentを開きます。

左側のペインからDocument and Mediaを開き、AddボタンのドロップダウンメニューからRepositoryを選択します。

新規に追加するリポジトリのために、設定項目を入力します。
重要なのは
RepositoryType
CMISには接続方式として、WebService、AtomPub(およびBrowser)が定義されています。ここではAtomPubが推奨されています。
AtomPub URL
AtomPubで接続する場合のコンテキストURLを入力します。おつかいのCMISリポジトリによって当然異なります。なお、このURLを開こうとするとリポジトリ全体の情報を記述したxmlファイルがダウンロードできます。NemakiWareの場合はデフォルトで
http://localhost:8080/core/atom
です。
RepositoryID
省略可能です。
CMISサーバでは、一番大きな単位としてリポジトリがあり、1つのCMISサーバは複数のリポジトリを持てることになっています。ですが実際は「メイン」リポジトリが1つだけということも珍しくありません。
この値を省略すると、CMISサーバ側で設定されているメインリポジトリが自動的に選択される仕組みになっています。

最後にもう1つ、Permissionという設定項目がありますが、これはLiferay上で、このCMISリポジトリを見られるユーザを制限するものです。CMIS側の権限設定とは関係ありません。
値にはAnyone(Guest Role), Site Members, Ownerがあります。

以上、設定できたらSaveを押したら、リポジトリの追加完了です。

Liferayのスクリーン名/パスワードがCMISリポジトリのそれと一致していない場合は、エラーになります。上手く行かない場合はCMISリポジトリ側のエラーログを見てください。

コンテンツの表示

CMISリポジトリにあるコンテンツに、LiferayのUIからアクセスできることを確認してください。ファイルに対して、コンテキストメニュー的なものも表示されていますね。アクションとしてCheckoutも行えるようです。

Checkout時の挙動については、CMISリポジトリごとに微妙に揺れがあるので、また次回の話題とさせていただきます。

なお、画像にもあるようにリポジトリを追加すると"Access these files offline using Liferay Sync."というメッセージが表示されます。Liferay Syncの説明はここでは省きますが、オフラインのときにした編集でもDropboxライクに同期できる仕組みです。

CMISリポジトリに限っていえば、CMISインタフェースのレベルでCmisSyncというDropboxライクな同期ツールが既に存在していますので、そちらもご検討ください。と陰に陽に自社製品をご紹介させてもらいまして、今回の結びとさせていただきます。


(文:linzhixing)

Monday, December 22, 2014

Alfresco勉強会#25でAlfrescoのアップグレードについて発表しました

こんにちは、かわべです。
12月17日に弊社オフィスで第25回Alfresco勉強会が開催されました。
寒い中ご参加いただいた皆様、ありがとうございます!

発表振り返り

今回は発表が2つありましたが、発表ごとに別の記事としています。
私はAlfrescoのアップグレードについて発表しました。
発表資料はこちら

Alfrescoのアップグレードは、コンテンツ実体(ファイルシステム)とメタデータ(データベース)のコールドバックアップデータを新しいAlfrescoに移行することで実行できます。ただし、カスタムモジュールなどが移行対象のバージョンでも期待通り動作するか、事前に検証することも大切です。
という発表の最後に、デモとして4.2.fから5.0.cへのアップグレードをお見せした…の で す が!

うまくいきませんでした…
(3回ぐらい練習したのに…)

時間を掛けた割に、ちゃんとしたものをお見せできなくてすみませんでした。
検証したところ、SQLのdumpを書き戻すときにデータベース名を指定する部分を飛ばしてしまったようです。
あのあと一旦DBをドロップして、再作成してから書き戻すとちゃんと移行できました。
勉強会が終わるまでに解決できなかったのが心残りですが、資料の手順は間違っていないはずなので参考にしてみてください。

告知1

次回のAlfresco勉強会は2015年2月18日(水)に開催予定です。
たくさんの方のご参加をお待ちしております!参加登録はこちらからお願いします。
また、「こういうテーマの発表が聞きたい」などのご意見があれば、ぜひconnpassのフィードなどでご連絡ください。

告知2

こちらは勉強会ではなく、弊社セミナーのご案内です。
2015年1月20日(火) 19時〜20時、Alfrescoの基本的な機能や使い方についての少人数セミナーを開催いたします。
(勉強会の終わりではWebinarだとお伝えしてしまいましたが、弊社オフィスで行うようです)
詳細や申し込み、お問い合わせは以下のリンクからお願いします。
基礎からわかるAlfrescoセミナー
ご都合が合えば、こちらもぜひご参加ください。

Thursday, December 18, 2014

Alfresco勉強会#25でワークフローについて話しました

とたにです。

久しぶりにAlfresco勉強会でしゃべりました。
今回はAlfrescoのワークフローについて、どういった機能が用意されているのか、また新しくワークフローを追加するにはどんな作業が必要なのかを具体的にイメージしてもらえることをゴールにして、入門レベルの内容を準備しました。

ワークフローはAlfrescoの活用方法によっては重要な位置づけとなる機能ですが一方で全く利用するつもりのない方もいるので、勉強会の題材としては少しささる人が少ない、狭い話題を選んでしまったかも、という反省をしつつこのブログを書いています。

アドバンストワークフローでは最低限必要な2つのファイルのみを作って、Alfrescoにワークフローを追加する方法について説明したのですが、説明後に「もっと簡単にワークフローを開発する方法はありますか?」という質問を頂きました。アドバンストワークフローはactivitiというBPMエンジンを採用していてプロセスの記述能力は非常に高いのですが、その反面、開発者レベルのスキルが要求されるのも事実です。このあたりは勉強会で理解いただくというアプローチのほかに、手軽に利用できるワークフローのセットを公開して選択して使っていただく、というアプローチもいいかもしれないと思いました。

また日本型ワークフロー(という言葉があるかどうかは知らないですが)では、必ず期待される機能として承認フロー上の承認者としてユーザの上司を自動でアサインしたい、というものがあり、それについても質問されたのですが、標準のAlfrescoにはそのような組織モデルが実装されていないので実現するためには、Alfresco内もしくは外部にそのような組織モデルおよび取得のサービスを実装する必要があります。

第25回Alfresco勉強会ワークフロー入門編
サンプルコードはこちら

ワークフローの開発は細かいTipsがたくさんあるので応用編として書ける内容もまだまだあるのですが、やはり少し題材として狭いので勉強会で取り上げるかは現時点では未定です。他のネタが思いつかなければ取り上げるかもしれません。