(このトピックは編集中です)
ファイルアップロード
Resource attributeを定義
Contextにタイプcom.sap.ide.webdynpro.uielementdefinitions.ResourceのValue Attributeを追加します。
FileUpload UIを追加する
アップロード後の情報を取得
IWDResource iwdr = (IWDResource)wdContext.getCurrentElement().getAttributeValue("Resource");
logger.infoT(iwdr.getResourceName());
logger.infoT(iwdr.getResourceType().getFileExtension());
logger.infoT(iwdr.getResourceType().getHtmlMime()); ファイルダウンロード
Resource attributeを定義
Contextにタイプcom.sap.ide.webdynpro.uielementdefinitions.ResourceのValue Attributeを追加します。
FileDownload UIを追加
FileDownload UIを追加し、resourceプロパティにResource attribute valueを指定すす
入力補助機能として検索ヘルプまたは入力値提案を実装することができます。
単純型検索ヘルプ
UIエレメント「DropDownByKey」を利用して実装する。標準設定によって項目数が50を超える場合、ポップアップ検索ヘルプとして表示されます。
該当設定方法は「RadioButtonGroupByKey」も同一です。
静的設定
固定値で項目一覧を設定する場合のみ使用します。
UIエレメント「DropDownByKey」のプロパティ「selectedKey」にマッピングされているコンテキストアトリビュートのタイプにシンプルタイプを設定して、「Enumeration」項目に項目一覧を追加する。
動的設定
値を動的に設定する場合、使用する。
UIエレメント「DropDownByKey」のプロパティ「selectedKey」にマッピングされているコンテキストアトリビュートに対してコーディング処理を行う。
該当ロジックはコンテキストを定義したコントローラーに実装する。
※コンテキストを参照しているコントローラーに実装した場合、「must not modify the datatype of a mapped attribute」エラーが発生する。
// コンテキストからModifiableSimpleValueSet オブジェクトを取得
com.sap.typeservices.IModifiableSimpleValueSet<String> valueSet =
wdContext.currentHeader01Element().getAttributePointer(IPublicContract006Comp.IHeaderElement.CATEGORY).
getAttributeInfo().getModifiableSimpleType().getSVServices().getModifiableSimpleValueSet();
// ESまたはBAPIのドロップダウンを設定
List<Category> list = zprocessInit.getT_Category();
for(Category category : list ) {
valueSet.put(category.getKey(), category.getText());
}
// ドロップダウンの初期値を設定する場合
wdContext.currentHeaderElement().setCATEGORY(list.get(0));
複合機能型検索ヘルプ
検索条件付きの検索機能を表す。複合機能型検索ヘルプはWDJのObject Value Selector(OVS)機能を利用した共通部品として実装され、
各業務画面から利用します。
検索用のヘルプ標準部品を利用
OVSは検索で使用するノードと処理ロジックだけ追加することで簡単に検索ヘルプを追加することができます。
自動生成されるOVSで使用する検索条件用ノードと検索結果用ノードは用意する必要があります。
・OVS設定処理ロジック
OVS用のノードとOVSリスナーを利用してOVSを設定します。
// 検索ヘルプを設定するコンテキスト
com.sap.tc.webdynpro.progmodel.api.IWDAttributeInfo[] ovsStartUpAttributes
= {wdContext.nodeHead().getNodeInfo().getAttribute(IPrivateOVSView.IHeadElement.PROCESS_TYPE)};
// OVSの処理リスナー (クラス定義必要)
com.sap.tc.webdynpro.progmodel.api.IWDOVSContextNotificationListener listener
= new TestOVSContextNotificationListener ();
// OVSの設定処理
com.sap.tc.webdynpro.progmodel.api.WDValueServices.addOVSExtension(
"TestOVS", // OVS名称ー任意
ovsStartUpAttributes, // 検索ヘルプ設定対象
wdContext.nodeInput(), // 検索条件ノード
wdContext.nodeOutput(), // 検索結果ノード
listener // リスナーオブジェクト
);
・OVSリスナークラス定義
インタフェースIWDOVSContextNotificationListenerを実装してOVSの実行時呼び出されるクラスを定義し、OVSの設定で利用される。
private class TestOVSContextNotificationListener implements
com.sap.tc.webdynpro.progmodel.api.IWDOVSContextNotificationListener{
// OVSの初期検索条件の値設定ロジック
public void applyInputValues(com.sap.tc.webdynpro.progmodel.api.IWDNodeElement applicationNodeElement,
com.sap.tc.webdynpro.progmodel.api.IWDNodeElement queryInputNodeElement) {
queryInputNodeElement.setAttributeValue(
IPublicTest04Comp.IInputElement.PROCESS_TYPE,
applicationNodeElement.getAttributeValue(IPrivateOVSView.IHeadElement.PROCESS_TYPE));
}
// 検索処理の実装
public void onQuery(com.sap.tc.webdynpro.progmodel.api.IWDNodeElement queryInputNodeElement,
com.sap.tc.webdynpro.progmodel.api.IWDNode queryOutputNode) {
// 検索ロジック
for(int i = 10; i < 20; i++) {
IWDNodeElement element = queryOutputNode.createAndAddElement();
element.setAttributeValue(
IPublicTest04Comp.IOutputElement.PROCESS_TYPE, "11" + i);
element.setAttributeValue(
IPublicTest04Comp.IOutputElement.PROCESS_TYPE_NAME, "テストタイプ1111" + i);
}
}
// 検索結果の行を選択した後の処理
public void applyResult(com.sap.tc.webdynpro.progmodel.api.IWDNodeElement applicationNodeElement,
com.sap.tc.webdynpro.progmodel.api.IWDNodeElement queryOutputNodeElement) {
// start copying the attributes
applicationNodeElement.setAttributeValue(
IPrivateOVSView.IHeadElement.PROCESS_TYPE,
queryOutputNodeElement.getAttributeValue(IPublicTest04Comp.IInputElement.PROCESS_TYPE));
}
検索用のヘルプカスタム部品を作成
IWDOVSProviderとIWDOVSDialogを実装したクラスを利用して別ウィンドウとビューを持つOVS画面を作成できます。
・OVS設定処理ロジック
カスタム部品は別のウィンドウとビューを保持するので、OVS用のノードとOVSリスナーの代わりにOVSプロバイダ及びOVSダイアログを利用する。
設定ロジックは一般的にコンポーネントコントローラーまたはカスタムコントローラーのwdDoInitに実装します。
// 検索ヘルプを設定するコンテキスト
com.sap.tc.webdynpro.progmodel.api.IWDAttributeInfo[] ovsStartUpAttributes
= {wdContext.nodeHead().getNodeInfo().getAttribute(IPrivateOVSView.IHeadElement.PROCESS_TYPE)};
// OVSプロバイダ (クラス定義必要)
com.sap.tc.webdynpro.progmodel.api.IWDOVSProvider provider = new TestOVSProvider();
// OVSの設定処理
com.sap.tc.webdynpro.progmodel.api.WDValueServices.addOVSExtension(
"TestOVS", // OVS名称ー任意
ovsStartUpAttributes, // 検索ヘルプ設定対象
provider, // OVSプロバイダ
null
);
・OVSプロバイダ及びOVSダイアログクラス定義
インタフェースIWDOVSProviderを実装したOVSプロバイダはOVSダイアログ情報を保持しています。
private class TestOVSProvider implements IWDOVSProvider {OVSDialg dialog;
IWDOVSControl ovsControl;// OVSウィンドウを生成して返す
@Override
public IWDOVSDialog createOVSDialog(IWDOVSControl ovsControl) {
dialog = new OVSDialg();
this.ovsControl = ovsControl;
return dialog;
}
// 明示的にウィンドウを閉じる場合、使用
public void closeWindow() {
dialog.closeWindow();
}
// OVSコントロール情報が必要な場合、使用
// OVSを呼び出したアトリビュート情報等
public IWDOVSControl getControl() {
return this.ovsControl;
}}
インタフェースIWDOVSDialogを実装したOVSダイアログはOVSウィンドウのオブジェクトを持っている。
private class OVSDialg implements IWDOVSDialog {
IWDWindow window;
// ウィンドウを「閉じる」ボタンを押すタイミングで呼び出される
@Override
public void exit() {
// TODO Auto-generated method stub
}
// OVSヘルプとして使用するウィンドウを返す
@Override
public IWDWindow getWindow() {
IWDWindowInfo windowInfo =
(IWDWindowInfo)wdComponentAPI.getComponentInfo().findInWindows("TestCompWindow");
window = wdComponentAPI.getWindowManager().createModalWindow(windowInfo);
return window;
}
// ウィンドウを閉じる処理として明示的にウィンドウを閉じる場合、使用
public void closeWindow() {
window.destroyInstance();
}
}
入力値提案
データの一部を入力すると入力値にヒットするデータが一覧として表示されます。
UIエレメント「InputField」の「suggestValues」を「true」に設定してマッピングしたコンテキストアトリビュートには「単純型検索ヘルプ」と同一のコディングまたはシンプルタイプマッピングを行います。
このトピックでは、WDJ開発における各基本UIエレメントを取り上げて説明します。(このトピックは編集中です。)
Label
用途
他のUIエレメントのラベルとして表示される。
関連付けのUIエレメントのプロパティ「state」が「required」になっている場合、必須マークが表示される。
主要プロパティ
| プロパティ | 設定可能値 | 説明 |
|---|---|---|
| labelFor | UIエレメントID | 関連付けUIエレメントのIDを設定 |
| design | emphasized light standard | 強調表示に設定 「:」なしに設定 基本表示 |
| text | テキスト | 関連付けUIエレメントのIDを設定 |
Value Help
Web DynproのValue Help
① Simple Value Selector(SVS)
② Extended Value Selector(EVS)
③ Object Value Selector(OVS)
help.sap.com - Value Help Tutorials
外部リンク
このトピックでは、例を取り上げて手順に従ってポータルロールの作成方法を説明します。
ポータルロールの作成
1.ロールを新規作成
2.ロールの属性を入力
3.ロールの作成を完了
ポータルロールの編集
4.ロールを編集
5.ワークセットをロールに追加
6.もう一つのワークセットを追加しておく
7.EntryPointをTrueにしておく
ポータルロールの割当
ポータルロールの表示
このトピックでは、例を取り上げて手順に従ってiViewの作成方法を説明します。
1.iViewを新規作成
2.iViewの作成方法を選択
3.アプリケーションサーバを指定
4.アプリケーションを指定
4.iViewの属性を入力
5.iViewの作成を完了
6.その他のiViewを作成しておく
このトピックでは、 UWLサービスのアクセス方法を取り上げて説明します。
UWLサービスの取得
Portal利用
IUWLService uwlService = (IUWLService) WDPortalUtils.getServiceReference(IUWLService.ALIAS_KEY); PortalRuntime.getRuntimeResources().getService(IUWLService.ALIAS_KEY);
JNDI利用
// look up UWL service private
IUWLService findService() throws NamingException {
Properties env = new Properties();
env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.sapportals.portal.prt.registry.PortalRegistryFactory");
// create initial context
InitialContext ctx = new InitialContext(env);
// retrieve UWL service
IUWLService uwlService = (IUWLService) ctx.lookup("/broker/services/" + IUWLService.ALIAS_KEY); return uwlService;
}
ワークアイテムの走査
public void retriveItems() {
try {
// look up UWL service
IUWLService uwlService = findService();
// define session timeout period
final int sessionIdleTimeout = 60;
// create context
UWLContext uwlContext = new UWLContext();
// find logged in user.
IUser user = //TODO Get the user for whom the items are to be retrieved.
uwlContext.setUser(user);
uwlContext.setLocale(Locale.getDefault());
// begin session IUWLSession uwlSession;
uwlSession = uwlService.beginSession(uwlContext, sessionIdleTimeout);
uwlContext.setSession(uwlSession);
IUWLItemManager itemManager = uwlService.getItemManager(uwlContext);
QueryResult result = itemManager.getItems(uwlContext, null, null);
ItemCollection items = result.getItems();
Item item = null;
for (int i = 0; i < items.size(); i++) {
item = items.get(i);
// item.getSubject() can give you Task's Subject string
// item.getAttribute("taskId").getStringValue() gives you taskId
// (a check for null should be added also to avoid NullPointerException).
Map params = new HashMap();
params.put("taskId", item.getExternalId());
String executionURL = WDURLGenerator.getApplicationURL("sap.com/tc~bpem~wdui~taskinstance", "ATaskExecution", params);
//TODO Add code send mail which contains above URL.
}
} catch (UWLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}
このトピックでは、UWLの表示を取り上げて説明します。
キャッシュ機能
UWLは、通常キャッシュを使用し、キャッシュで保存されているアイテムが表示されます。
システムイメージ
UWLキャッシュの更新
キャッシュ更新
- タイマによる自動更新
以下の図で示されたように、いまの設定では、60秒単位でUWLキャッシュがバックアンドのBPMシステムと同期化を取っております。 - ログオン処理による更新
ユーザがログオンしたときに、UWLキャッシュの更新がリクエストされます 画面リフレッシュによる更新
ユーザが画面でリフレッシュリンクをクリックしたときに、UWLキャッシュの更新がリクエストされます
UWLキャッシュには有効期間があり、有効期間が切れましたら、更新されます。(デフォルトは5分)
またUWLキャッシュは下記の場合も更新されます。
- ユーザがポータルにログオンしたら、ログオンされたユーザはDeltaプールに追加され、バックグラウンドでUWL Cacheを更新します。(デフォルトは1分)
- UWLのWebDynpro UIからアイテムを選択したり、ソートしたりした場合、Cacheの有効期間が切れましたら、更新されます。
- UWLのUIはデフォルトで10分間隔でRefreshされ、UWLのUIはCacheからアイテムを再度ロードし、Cacheの有効期間が切れましたら、更新されます。
- 手動的にUWLを更新する際
アプリレベルのキャッシュ
UWL表示
統合ワークリストは以下のタイミングで再表示処理が行われます。
- 一定間隔で自動的に再表示
統合ワークリストのUIは一定間隔で自動的にRefreshされます。 - ユーザがリフレッシュリンクを押下した時
- ユーザがアイテムをソートしたり、フィルタリングしたりした時
iViewレベルの設定
- パラメータ:Wait duration before calling providers on loading of UWL
デフォルトとは20(秒)と設定されます。ログオン直後になどUWLをロードする際に、キャッシュの内容が20秒以内に取得されたものであれば、キャッシュの内容をそのまま取得して表示し、キャッシュの内容が20秒前に取得されたものでれば、キャッシュを更新させてからキャッシュの内容を取得して表示するといういみです。
0に設定しておけば、キャッシュを更新させて常に最新のものを取得して表示することになります。 - パラメータ:Wait duration before calling providers on loading preview
アイテムの詳細画面の表示
1.ログオン直後のUWL表示
ログオン時に、UWLキャッシュ更新がリクエストされますが、UWLキャッシュ更新の完了を待たずに、当時のキャッシュ内容を画面に表示して、「更新を待っています」というメッセージを出力します。
(レスポンス性を向上するための措置)
下記の画面で設定された値(デフォルト値:20秒)が経過した後に、再度キャッシュの内容を取りなおして表示します。(その時点でもUWLキャッシュ更新が完了していない場合、画面上に処理中アニメを表示して画面操作不可にします。)
この設定値が0と変更されれば、ログオン直後のUWL表示は常にUWLキャッシュ更新が完了するまで待つようになります。
2.マニュアルでリフレッシュされた場合のUWL再表示
先にUWLキャッシュがに更新されます、その後、UWLキャッシュの内容が画面に表示されます
3.ィルタリング検索、代理ユーザが選択された場合のUWL再表示
UWLキャッシュの即時更新が発生しません、その時点のUWLキャッシュの内容が画面に表示されます。
4.画面自動リフレッシュ(10分間隔?)のUWL再表示
UWLキャッシュの即時更新が発生しません、その時点のUWLキャッシュの内容が画面に表示されます。
■代理指定者名前の表示
リストに該当するタスクがある場合のみ、代理指定者の名前が表示されます。
プロバイダの設定
このセクションは準備中です。
表示のカスタマイズ
このセクションは準備中です。
UWLは複数のプロバイダシステム (ビジネスワークフロー、コラボレーションタスク、アラートフレームワーク、および KMの最新のお知らせ) からタスクと通知を収集し、それらを単一のリストに表示します。
コンセプト
統合ワークリストは、タスクを管理するための一元的なアクセスポイントを提供します。
この統合ワークリストは、各ユーザの作業スタイルに応じてパーソナライズすることができます。
アイテム
UWLに表示される項目は、ワークアイテムまたはアイテムと呼ばれます。
アイテムのタイプ
以下のアイテムタイプがあります。
- タスク
- 警告
- 通知
- 追跡
アイテムのステータス
以下のアイテムステータスがあります。
- 処理中
- 完了
アイテムの所有者
アイテムは所有者をもちます、ワークアイテムの転送や代理により所有者がかわることができます。
プロバイダ
UWLは複数のプロバイダシステムからのタスクおよび通知が 1 つのリストにまとめられ、1 箇所でアクセスできるようになります。
実現
アーキテクチャ
ソフトウェアコンポーネント
UWL機能
UWL設定
上記の画面でキャッシュの利用有無やキャッシュの有効時間、代理の設定などのパラメータ設定が多数用意されています。
このトピックでは、統合Conflictを取り上げて、その発生原因と解決策を説明します。
原因
ワークスペースを統合する際に、同じソースで、前回統合された後に、別々修正が発せしていれば、システムが判断できないため、
統合Conflictが発生します。
以下の図でそのイメージを示します。
(source:SAP Help Portal)
解決
統合Conflictが発生したときに、統合元のソースはActiveバージョン、統合先のソースはCollidingバージョンとして格納されます。同時にConflictフラグをワークスペースに立てられます。
解決方法は下記のようになります。
- 統合元のソースが正であれば、Activeバージョンを採用します。
- 統合先のソースが正であれば、Collidingバージョンを採用します。
- 各自の修正内容をマージする必要があれば、マージを取ります。
いずれにしても新たにアクティビティを起こして対応する必要があります。
対応の手順を簡単に示します。
外部リンク
このトピックでは、それらのツールを取り上げてそれぞれ説明します。
DTR Client
概述
DTR Clientは、Eclipse Perspectiveとして、NWDS環境に統合されています。
そこで、各DTRクライアントツールはeclipse viewとして多数用意されています。
各ツール
Closed Activities
Integration Conflicts
Open Activities
オープン中のActivity
ビューのツールバーメニューから全ユーザのActivityを照会することができます。
- checkin(チェックイン)
Activityがチェックインされたら、ローカルの変更がすべてDTRのinactiveワークスペースに反映され、別の開発者も見えるようになります。
- revert(変更を元に戻す)
Permissions
Repository Browser
ツリー構造で、Repositoryのリソースを照会することができます。
Version Graphy
WEBを利用
メイン画面
DTRのWEBツールのメイン画面は以下のようなURLからアクセスすることができます。
http://<host>:<port>/dtr/

ツールのアクセス
ツールバーにツールへアクセスするためのアイコンが並べられていますので、そちらを利用することができます。 
また、リポジトリツリーの「system-tools」ノードよりも各ツールをアクセスすることも可能です。 
各ツール




ファイルブラウザ
ワークスペース比較

外部リンク
Androidとは
Android(アンドロイド)とは、Googleによってスマートフォンやタブレットなどの携帯情報端末を主なターゲットとして開発されたOSです。カスタマイズ版Linuxカーネル、ライブラリやフレームワークその他のミドルウェア、ART仮想マシン、主要なアプリケーションからなるソフトウェアスタック(集合)パッケージで構成されています。
Androidの歴史
| 年月 | 出来事 |
|---|---|
| 2003年10月 | Android社が発足 |
| 2005年 | Google社がAndroid社を買収 |
| 2007年11月 | Google社がAndroidを無償で提供することを発表 |
| 2008年9月 | Android1.0公開 |
| 2009年4月 | Android1.5公開、Docomo社よりHTC社製HT-03A社製(Android1.5)を発売 |
| 2009年9月 | Android1.6公開 |
| 2009年10月 | Android2.0公開 |
| 2010年1月 | Android2.1公開、Google社よりHTC社製 Nexus One (Android2.1)を発売 |
| 2010年4月 | SoftbankよりHTC社製HTC Desire(Android2.1)を発売 |
| 2010年5月 | Android2.2公開、DocomoよりSony社製Xperia(Android1.6)を発売 |
| 2010年6月 | auよりシャープ社製IS01(Android1.6)を発売 Docomoよりシャープ社製LYNX SH-10B(Android1.6)を発売 |
| 2010年12月 | Android2.3公開 |
| 2011年2月 | Android3.0公開 |
| 2011年11月 | Android4.0公開 |
| 2012年7月 | Android4.1公開 |
| 2012年11月 | Android4.2公開 |
| 2013年7月 | Android4.3公開 |
| 2013年11月 | Android4.4公開、GoogleよりNexus5(Android4.4)を発売 |
| 2014年3月 | スマートウォッチ向けにカスタマイズされたAndroid Wear公開 |
| 2014年11月 | Android5.0公開 |
| 2015年3月 | Android5.1公開 |
| 2015年10月 | Android6.0公開 |
| 2016年8月 | Android7.0公開 |
| 2016年12月 | Android7.1公開 |
| 2017年8月 | Android8.0公開 |
| 2017年12月 | Android8.1公開 |
| 2018年8月 | Android9.0公開 |
Activity
アクティビティ(英:Activity)はDTRへ対する変更の開発及び移送の管理単位です。プログラムの変更を管理します、ABAPスタックにおける変更依頼に相当します。
Open Activity
DTR に保存されたオブジェクト、つまりバージョン管理リソースをチェックアウトするときです。これらにはオブジェクトの新規バージョンが格納されます。ここで行う任意の変更を元に戻すことができます。
Closed Activity
チェックインした後のアクティビティです。これらのアクティビティを変更することはできなくなります。これらにはオブジェクトの新規バージョンが格納されます。クローズ済アクティビティの用途は、たとえばオブジェクト内容を他のワークスペースに統合することです。
http://help.sap.com/saphelp_nw70/helpdata/ja/6c/aed198e1d474429eec7d7bafeed015/frameset.htm
Application
アプリケーション(英:Application)とは、プラットフォームにに動作する各機能のことを指しております。
一方、IT用語として普通の意味では、アプリケーションとは、利用者が実行したい作業を実施する機能を直接的に有するソフトウェアです。
Assembly
展開ディレクトリ形式のJ2EEアプリケーションの場合には,EAR形式またはZIP形式へのアセンブルは不要です。
CBS
コンポーネントビルドサービス(英:Componet Build Service,略:CBS)は、ソースファイルからソフトウェアコンポーネント構築と、サーバへソフトウェアコンポーネント配置を行うサービスです。
CMS
変更管理サービス(英:Change Management Service,略:CMS)はソフトウェア変更のライフサイクル(開発→検証→本番稼動)を管理するサービスです。
Development Component
開発コンポーネントは、明確な外部インタフェースとカプセルされた内部実装があり、他のコンポーネントのパブリックインタフェースを参照して相互使用することができます。そのため、基本的な再利用可能な単位になります。
Development Object
開発オブジェクト(英:Development Object)は、コンポーネントの構成要素で、機能部分を提供します。開発コンポーネントに含められている一つ一つのJavaクラスやJSPファイル、Webdynpro定義ファイルなどは、それぞれ開発オブジェクトに該当します。
Develop Track
開発トラック(英:Develop Track)とは、ソフトウェアコンポーネント(SC)を開発から、テスト、本稼働使用するまでの一連のライフサイクルを対応したシステム構成のことです。ABAPシステムの移送グループに相当します。
開発トラックで、SCの開発ステータスは以下の四つに分けられます。
- 開発
- コンソリデーション
- テスト
- 本稼働
開発トラックには、上記の各ステータス毎のランタイムサーバやソースが格納されたDTRワークスペースの定義が含められています。
Domain
ドメイン(英:domain)はCMSドメインのことです、CMSドメインは、変更管理サービス(CMS)で管理される開発ランドスケープの構成部分を記述したものです。
DTR
デザインタイムリポジトリ (英:Design Time Repository、略:DTR) はファイルバージョン管理を提供するリポジトリであり、ソースファイルをデータベースにバージョンごとに保管します。DTR は NWDI の一部として、JavaEE Engine 上のサービスとして稼動します。
EP
EP(エンタプライズポータル、英:Enterprise Portal)は、SAP及び非SAPシステムの情報ソース、アプリケーション、サービスヘのアクセスを、 Web ベースのインタフェースで 1 箇所から行えるようにします。EPを利用することにより、すべての操作が単一のユーザエクスペリエンスに統合されます。
ESR
エンタープライズサービスリポジトリ(英:Enterprise Services Repository、略:ESR) は、WEBサービスを呼び出すためのインタフェース情報のほか、どのように組み合わせて使うかの「プロセスコンポーネント」、それらをどういう状況で使うかの「統合シナリオ」などを登録してあるレジストリです。
Instance
インスタンスはシステムランドスケープ⇒システム⇒インスタンス,2桁数字のインスタンス番号により識別されます。インスタンスはメッセージサーバに登録され、2桁数字のインスタンス番号により識別されます。
一方、IT用語として普通の意味では、インスタンスとは、オブジェクト指向プログラミングで、クラスを基にした実際の値としてのデータのことです。クラスを「型」、インスタンスを「実体」として、クラスと対比して用いられることが多い
Java Application
NetWeaverにおけるJavaアプリケーション(英:Java Application)とは、クライアントからURLやリモートインタフェースなどを介して直接呼び出すことが可能な機能単位のことです。ここのクライアントというのは、ユーザエージェントであるWEBブラウザもあれば、個別実装のクライアント側プログラムもあります。
Javaアプリケーションの分類には以下のものが含められています。
- WebDynproアプリケーション
- J2EE標準のアプリケーション要素
- Webアプリケーション(Servlet、JSPなど)
- EJBアプリケーション
- Webサービス
JDBC
JDBCはCore APIとOptional Package APIから構成されております、 Core APIはJDBCの基本機能を提供する一方、Optional Package APIは接続プーリングや分散トランザクションなど、サーバ・サイドJavaで求められる拡張機能を提供し、、JavaEEを構成するAPIの1つとなっております。JMS
JMS(Java Message Service)はメッセージングサービスを利用するためのJava標準APIであり、 J2EE 1.3 以降に標準で含まれています。
メッセージオブジェクトを作成して通信を行い、非同期に通信を行うことも出来ます。
Message Server
メッセージサーバ(英:Message Server)は、SAPシステムに一つのみ存在し、負荷分散や、アプリケーションサーバ間の通信を管理します。
メッセージサーバとは何かというと、セントラルインスタンスで稼働している親分的な存在のプロセス(サービス)で、インスタンス間の通信の仲介役をしたり、ユーザがログオンする際のログオン負荷分散のディスパッチャの役割を担ったりしています。
サーバと名が付いているので、アプリケーションサーバと同類のサーバなのかというと、そうではありません。あくまで1つのOSプロセスに過ぎません。
外部ポート番号は、ログオン時の負荷分散機能で使用。
内部ポート番号はデフォルトでは無効になっていますが、有効にすれば、インスタンス間の通信専用のポート番号になり、フロントエンドPCからの通信を受け付けません。
基本的には、メッセージサーバ内部ポートは無効にしておき、従来と同様に、外部ポート番号だけを有効にすれば良いと思います。
ABAPメッセージサーバポート番号
外部ポート rdisp/msserv = 36 (例:3600)
内部ポート rdisp/msserv_internal = 39 (例:3900、デフォルト値 = 0 (無効))
JAVAインスタンスのメッセージサーバは、SCS(セントラルサービスインスタンス)で動作しますが、ABAPインスタンスと違って、内部ポート番号だけを有効にします。
JAVAメッセージサーバポート番号
外部ポート rdisp/msserv = 0 (無効)
内部ポート rdisp/msserv_internal = 39 (例:3902)
参考:http://help.sap.com/saphelp_nw70/helpdata/ja/4e/cffdb69d10424e97eb1d993b1e2cfd/content.htm
NWA
SAP NetWeaver Administrator は、SAP NetWeaver を管理およびモニタするためのWeb ベースツールです。
NWDI
NWDI(NetWeaver Development Infrastructure) は、 NetWeaverプラットフォームの上に動作するJavaベースのアプリケーションを開発するための基盤であり、アプリケーションのバージョン、構築、およびライフサイクルを管理する機能を備えています。
NWDI自体もNetWeaver Javaプラットフォームに稼働するものですので、NetWeaverインストール時に利用タイプDIを選択してインストールを行うことで、 NWDIに必要な機能がインストールされます。
Product
製品(英:Product)とは、 価格設定と販売の単位であり、一つ以上のソフトウェアコンポーネントを集めたものです。1つのソフトウェアコンポーネントを複数の製品に含めることができます。
Service Group
サービスグループ(英:Service Group)とは、サービスをグループ化したものです。NWAの「アプリケーション通信: 設定」にて、サービスグループを単位として、アプリケーションが参照したサービスのプロバイダシステムを纏めて設定することができます。
Service Registry
サービスレジストリ(英:Service Registry、略:SR)
SLD
SLD(システムランドスケープディレクトリー、英:System Landscape Directory)とは、システムランドスケープ全体の情報を管理するセントラルDBです。
SLDサーバはすべての SAP Web Application Server Java のインストールにおいてインストールされますが、機能させる場合には明示的に有効化される必要があります。
Software Component
ソフトウェアコンポーネント(英:Software Component、略:SC)とは、まとめて開発、使用、出荷およびメンテナンスされる開発コンポーネント (DC) をグループ化したものです。
System
SAP システムは、複数のアプリケーションサーバインスタンスと、1 つ以上のデータベースで構成されています。
System ID
SAP ERPシステムのための3バイトのユニークな識別子。システムごとに割り当てられ、システム同士を接続し、情報交換をする場合に必要とされます
System Landscape
システムランドスケープ(英:System Landscape )とは、システムの導入から運用保守までの全ライフサイクルを対応したシステム全体の構成のことです。SAP推奨であるな3システムランドスケープは、「開発環境」、「検証環境」、「本番環境」の三つの環境から構成し、システム導入から本番稼動後も維持し続けます。
また、各環境はそれぞれさらに、DBサーバやECCサーバ、EPサーバ、CEサーバといった複数のサーバから構成されます。
UME
UME(User Management Engine、ユーザマネジメントエンジン)は、NetWeaver Java Platformの上に構築されているシステムのユーザ及び権限管理を統合します。
UMEは、すべての Java アプリケーションに集中的なユーザ及び権限管理機能を提供し、複数のデータソースからユーザ管理データに対して作業することができます。
Workspace
ワークスペース(英:workspace)とは、論理開発のロケーションです。
このトピックでは、JavaEEサーバであるAsJavaのアプリケーション管理を取り上げて説明します。
モジュール管理
JavaEEアプリケーション(ear)を構成するモジュールは、Webモジュール(war)とEJBモジュール(jar)があります。
- Webモジュール
Webモジュールとは、Web アプリケーションのことです。 Web モジュールは、サーブレット、JavaServer Pages (JSP) ファイル、 および Hypertext Markup Language (HTML) ページなどの静的コンテンツを、 デプロイ可能な単一の単位にアセンブルすることによって作成されます。 - EJBモジュール
EJB モジュールは、1 つ以上の Enterprise Bean をデプロイ可能な単一の単位にアセンブルするために使用されます。 EJB モジュールは、標準の Java アーカイブ (JAR) ファイルに保管されます。
NWA画面で「設定管理」→「インフラストラクチャ」→「アプリケーションモジュール」で下記の画面をアクセスすることができます。
アプリケーション管理
このトピックでは、SAP標準で用意されている様々な管理者機能を取り上げて纏めて説明します。
管理者機能を利用できるツールはいかのようなものがあります。
- Management Console
- Visual Administrator
- config tool
- Web画面
- NWDSクライアント
Management Console
Visual Administrator
Visual Administrator は \usr\sap\(SID)\DVEBGS(システム番号)\j2ee\admin にある go.bat で起動します。
go.bat を起動すると、登録された接続先を選択する画面になるので Default を選び、Connect で Java System に接続します。
Java System 管理者ユーザ J2EE_ADMIN のパスワードを入力して Connect します。
Java SystemのDispatcherと一つ又は複数のServer があり、それぞれの設定を行う事が出来ます
Config tool
Config tool は Java System が稼働していない時でも使用可能なツールです。
\usr\sap\(SID)\DVEBGS(システム番号)\j2ee\configtool にある configtool.bat で起動します。
JAVAの起動パラメータやメモリ割り当ての設定が出来ます。
WEB画面
スタートページ
NWA
システム情報
http:<portal.domain>:<port>/nwa/sysinfo
Web Services Navigator
http:<portal.domain>:<port>/wsnavigator
User Management
http:<portal.domain>:<port>/useradmin
Services Registry
http:<portal.domain>:<port>/sr_central
EJB Explorer
http:<portal.domain>:<port>/ejbexplorer
ポータル
このトピックでは、AsJavaのJavaEE仕様準拠状況を取り上げて説明します。
準拠状況
AsJavaの各バージョンは、下記のようにJavaEE仕様を準拠しております。
- 7.0
J2EE 1.3 - 7.1-7.4
JavaEE 5.0
JavaEE仕様
JavaEE6
下記のリンクをご参考ください。
JavaEE5
JavaEE5は以下の仕様から構成されます。
- Web Services Technologies
- Implementing Enterprise Web Services (JSR 109)
- Java API for XML-Based Web Services (JAX-WS) 2.0 (JSR 224)
- Java API for XML-Based RPC (JAX-RPC) 1.1 (JSR 101)
- Java Architecture for XML Binding (JAXB) 2.0 (JSR 222)
- SOAP with Attachments API for Java (SAAJ) (JSR 67)
- Streaming API for XML (JSR 173)
- Web Service Metadata for the Java Platform (JSR 181)
- Web Application Technologies
- Java Servlet 2.5 (JSR 154)
- JavaServer Faces 1.2 (JSR 252)
- JavaServer Pages 2.1 (JSR 245)
- JavaServer Pages Standard Tag Library (JSR 52)
- Enterprise Application Technologies
- Enterprise JavaBeans 3.0 (JSR 220)
- J2EE Connector Architecture 1.5 (JSR 112)
- Common Annotations for the Java Platform (JSR 250)
- Java Message Service API (JSR 914)
- Java Persistence API (JSR 220)
- Java Transaction API (JTA) (JSR 907)
- JavaBeans Activation Framework (JAF) 1.1 (JSR 925)
- JavaMail (JSR 919)
- Management and Security Technologies
- J2EE Application Deployment (JSR 88)
- J2EE Management (JSR 77)
- Java Authorization Contract for Containers (JSR 115)
J2EE 1.4
J2EE 1.4は以下の仕様から構成されます。
- J2EE Connector Specification 1.5
- J2EE Deployment API Specification 1.1
- J2EE Management Specification 1.0
- Enterprise JavaBeans Specification 2.1
- Enterprise JavaBeans to CORBA Mapping 1.1
- Java API for XML Processing Specification 1.2
- Java API for XML Registries Specification 1.0
- Java API for XML-based RPC Specification 1.1
- Java Authorization Contract for Containers 1.0
- Java IDL API
- Java Naming and Directory Interface Specification 1.2.1
- Java Message Service Specification 1.1
- Java Servlet Specification 2.4
- Java Transaction API Specification 1.0.1B
- Java Transaction Service Specification 1.0
- JDBC Specifications, 3.0, 2.1, and Optional Package API (2.0)
- JavaBeans Activation Framework Specification 1.0.2
- JavaMail API Specification 1.3
- JavaServer Pages Specification 2.0
- RMI over IIOP
- SOAP with Attachments API for Java Specification 1.2
J2EE 1.3
J2EE 1.3は以下の仕様から構成されます。
- JDBC Extension 2.0
- Java Naming and Directory Interface Specification (JNDI) 1.2
- Java API for XML Processing (JAXP) 1.1
- Java Servlet 2.3
- JavaServer Pages (JSP) 1.2
- JavaServer Pages Standard Tag Library (JSTL) 1.0
- Enterprise JavaBeans (EJB) 2.0
- J2EE Connector Architecture 1.0
- Java Message Service API (JMS) 1.0
- Java Transaction API (JTA) 1.0
- JavaMail API 1.2
- JavaBeans Activation Framework (JAF) 1.0
- Java Authentication and Authorization Service (JAAS) 1.0
このトピックでは、アプリケーションサーバ Java (AS Java) のアーキテクチャの概要を取り上げて説明します。
ソフトウェアアーキテクチャ
JavaEEアーキテクチャ
外部リンク
コンセプト
WebdynproはSAPにおいて、ユーザインタフェースを作成するためのプログラミングモデルのこと。
Webdynproの具体的なコンセプトは以下のとおり
- コーディングの最小化
- デザインの最大化
- コンポーネントの再利用のサポート
- Webサービスとデータバインドのサポート
- 画面レイアウトとプログラムロジックの分離
- プラットフォーム非依存
WebDynproアプリケーション
WebdynproアプリケーションはWebdynproコンポーネントへのエントリポイントであり、URLを介して呼び出せる唯一のWebdynproエンティティです 。以下はそのイメージ図です。

アプリケーションはインタフェースビューを持っているWDコンポーネントのアクセスポイントとして提供される。
各アプリケーションにはWDコンポーネント、インタフェースビュー及びStartupプラグを定義する。
WebDynproコンポーネント
インタフェースビュー
・インタフェースビューとして公開されたWDコンポーネントのウィンドウをWDアプリケーションまたは別のWDコンポーネントから呼び出すことができる。
・複数のインタフェースビューを一つのウィンドウに割り当てることができる。
・インタフェースビューに定義するプラグは該当インタフェースビューを参照するウィンドウに定義されている必要がある。
インタフェースコントローラー
・各WDコンポーネント毎に一つのインタフェースコントローラーが自動定義されて、コンポーネントコントローラーとマッピングされる。
・インタフェースコントローラーに定義するコンテキスト、メソッド、イベントはコンポーネントコントローラーに定義されている必要がある。
・インタフェースコントローラーに定義したコンテキスト、メソッド、イベントのみが別のWDコンポーネントから利用できる。
コンポーネントコントローラー
・WDコンポーネント毎に一つのコンポーネントコントローラーが自動定義されて、WDコンポーネント全体の制御ロジックを実装する。
・UIエレメントのイベントとは違う独自のイベント処理が必要な場合、イベントを定義することができる。
カスタムコントローラー
・コンポーネントコントローラの付属コントローラーとして定義可能なコントローラーでコンポーネントコントローラーが大きくなる場合、
処理を分けることができる。
ウィンドウコントローラー
・主にインバウンドプラグの遷移に関するロジックを実装する。MVCモデル概念に基づき、詳細のロジックはできる限り、コンポーネントコントローラーまたは
カスタムコントローラーで実装する。
ウィンドウ
・ビューの配置とプラグによる画面遷移のモデリングを行う。
ビューコントローラー
・UIエレメントから発生するイベントのハンドリング、動的レイアウト変更、画面遷移等のロジックを実装する。MVCモデル概念に基づき、
詳細のロジックはできる限り、コンポーネントコントローラーまたはカスタムコントローラーで実装する。
ビュー
・画面のレイアウトをモデリングする。各UIエレメントに関する詳細は「X.X UIエレメント」を参照する。
プラグ
・主に、インバウンドプラグとアウトバウンドプラグが存在する。ウィンドウでアウトバウンドプラグをインバウンドにリンクさせることにより
画面遷移を定義し、ウィンドウコントローラーまたはビューコントローラーからアウトバウンドプラグのイベントを発生して実際の画面遷移を行う。
・インバウンドプラグは遷移先の画面で処理ロジックを追加することができる。
・プラグの種類としては下記の通り存在する。
Startupプラグ WDアプリケーションから呼び出す開始用のプラグ
Exitプラグ WDアプリケーションの処理を終了してログオフ等を行うプラグ
Inboundプラグ 通常の画面遷移で遷移先用プラグ
Outboundプラグ 通常の画面遷移で遷移元用プラグ
コンテキスト
・ノードとアトリビュートで構成されるWDJ特殊のデータ構造。
イベントとイベントハンドーラー
・イベントとしてはUIエレメントイベント、プラグイベント、そしてユーザ定義イベントが存在する。
・UIエレメントから発生するイベントは通常アクションという。
シンプルタイプとストラクチャー
・WDで使用されるデータの種類、桁数制限等をシンプルタイプとして定義し、複数の場所から再利用することができる。
・関連する複数のデータをストラクチャーとして定義してコンテキストで使用することができる。
モデル
WDJでは、一般的によく利用されるモデルの種類として、 EJB、WebService、RFCの三種類があります。
WDのモデルインポート機能によってES/CAF/BAPIを呼び出すモデルが自動生成され、WD上利用される。




































































