変更記事のインデックスのカスタマイズ
推定所要時間
モデルのバージョンを追跡しないよう、変更記事のインデックスをカスタマイズできます。
説明:
5 分
演習:
15 分
説明
通常、変更記事の変更インデックスはモデルのリビジョンを反映します (メジャーリビジョンとマイナーリビジョンの値に基づきます)。特定のリビジョンで変更記事を作成しない場合、そのモデルの DB プロパティを表示すると、リストにエントリが 1 つ不足しているように見えます。次の例では、リビジョン 2 で変更記事を作成していません。
モデルのリビジョンを表示する代わりに、最後に使用したインデックス値から自動的に変更記事のインデックスが増分するよう指定できます。この演習では、インデックスに文字 (A、B など) を使用します。
演習
この演習では、新しい Java クラスを追加して、変更記事のインデックスの初期値と以降の値を定義します。また、acme.xml を更新して、新しいビジネスオブジェクトを登録します。
この演習は、ビジネスロジックの拡張の演習が終了していることを前提としています。
変更記事のカスタマイズの主な手順は次のとおりです。
新しい TestCustomChangeNote クラスの作成
1. NetBeans で、TestCustomChangeNote という名前のクラスを com.acme.datamgmt.biz に追加します。
2. com.osm.dm.biz.DMChangeNote3D を拡張して、標準の変更記事インデックスをカスタマイズ済みのものに置き換えます(ここをクリックして表示されるファイルから、コードを NetBeans にコピーアンドペーストできます)。
package com.acme.datamgmt.biz;
import java.util.Collection;
import java.util.List;
import com.osm.*;
import com.osm.action.*;
import com.osm.actionmenu.*;
import com.osm.biz.*;
import com.osm.datamgmt.biz.ChangeNote;
import com.osm.datamgmt.biz.VersionableDoc;
import com.osm.dm.biz.*;
import com.osm.dt.biz.*;
import com.osm.exception.*;
import junit.framework.*;
public class TestCustomChangeNote extends DMChangeNote3D {
public TestCustomChangeNote(WMSession theSession, int theHandle)
throws WMException {
super ("Acme Action");
}
@Override
protected String getChangeIndexValue(WMElement element)
throws WMException {
return getCustomChangeIndex((VersionableDoc) element);
}
private String getCustomChangeIndex(VersionableDoc owner)
throws WMException {
String customChangeIndex = "A";
ChangeNote chNote = null;
if (owner != null) {
Collection list = owner.getChangeNotes();
if (!list.isEmpty()) {
chNote = (ChangeNote) list.toArray()[list.size() - 1];
}
if (chNote != null) {
customChangeIndex = incrementCharacter(chNote.getChangeIndex(), chNote.getChangeIndex().length() - 1);
originalChangeIndex = chNote.getChangeIndex();
} else {
originalChangeIndex = customChangeIndex;
}
}
return customChangeIndex;
}
private String incrementCharacter(String s, int index) {
if ((s.charAt(index) == 'Z') || (s.charAt(index) == 'z')) {
s = changeZToA(s, index);
if (index == 0) {
s = addLeadingA(s);
} else {
s = incrementCharacter(s, index - 1);
}
} else {
char[] c = s.toCharArray();
c[index]++;
s = String.valueOf(c, 0, c.length);
}
return s;
}
private String changeZToA(String s, int index) {
char[] c = s.toCharArray();
c[index] = 'A';
return String.valueOf(c, 0, c.length);
}
private String addLeadingA(String s) {
return "A" + s; //frozen
}
}
3. TestCustomChangeNote クラスファイルを保存します。
新しいビジネス ロジックを使用するための XML ファイルの編集
この拡張を XML ファイルの BASE_CHANGENOTE_3D クラスに追加します。
1. NetBeans で、acme.xml ファイルを開きます。
2. BASE_CHANGENOTE_3D クラスを wmconf.xml から acme.xml にコピーします (<ClassDefs> タグの追加が必要になることがあります)。
3. <BusinessObjectClass>com.osm.dm.biz.DMChangeNote3D から com.acme.datamgmt.biz.TestCustomChangeNote に変更します。
4. 変更を acme.xml ファイルに保存します。
コードのテスト
コードは、インストールしなくても、NetBeans から実行できます。
1. NetBeans で dev.properties ファイルを表示し、run.modeOSDM に設定します。
2. 主プロジェクトを構築スクリプトを実行します。
3. 主プロジェクトを実行スクリプトを実行します。
4. Creo Elements/Direct Modeling でモデルを作成します。
5. モデルを保存します (右クリックして「Model Manager」 > 「3D 保存」)。「保存」ダイアログで変更記事を追加します。
6. モデルを編集し、変更記事を追加しないまま Creo Elements/Direct Model Manager に保存します。
7. モデルをもう一度編集し、Creo Elements/Direct Model Manager に保存して変更記事を追加します。
8. Creo Elements/Direct Model Manager で、モデルの 「DB プロパティ」を開いて「注記」タブをクリックします。リビジョン 1 とリビジョン 3 に関する変更記事が存在し、それらに A と B というインデックスが付いていることを確認します。
これは役に立ちましたか?