プロセス計画エクスプローラのカスタマイズ
プロセス計画とは、特定の部品またはアセンブリの生産、検査、修復、維持管理のために作業現場で必要な作業を詳細に記述したものです。プロセス計画には、実行するオペレーション、その実行順序、必要な物理的リソース、プラントと技能、ドキュメント参照、説明テキスト、および必要な時間とコストが記述されています。
Windchill MPMLink プロセス計画を使用して、以下を定義できます。
• 製品の製造を実行するために必要なオペレーション。
• これらのオペレーションを実行するシーケンス。
• 各オペレーションの時間、コスト、および制約。
• オペレーションの実行に必要な物理的リソースおよび技能。
• 製品の製造時に必要な部品と、その部品を製造プロセスで使用する場所およびその方法。
Windchill MPMLink では、プロセス計画は作業現場の作業指示の作成にも使用します。作業指示は、作業現場での部品の生産、検査、修復、および維持管理のために使用される段階的な手順です。作業指示は動的に生成された HTML ドキュメントで、プロセス計画情報 (シーケンス、オペレーション、部品の割当、リソースの割当、時間など) と図面、イメージ、およびアノテーション付き 3D セッションのようなすべての関連ドキュメントを結合しています。
カスタム計算式の作成
計算式セットを使用して、属性のセットを対応する計算式や方程式に関連付け、属性値の計算に使用します。計算式セットを構成するコンポーネントは、次のとおりです。
• FormulaSet はセットを識別します。
• FormulaMetaData は Java 計算式の名前と説明を定義します。
• FormulaValuatedLink は属性名を計算式の定義に関連付けます。
次の図は、カスタム計算式を追加するために作成する必要があるデータの例を示しています。
「計算式セット」タブは、オペレーションに関連付けられた時間とコストの計算に使用できる定義済みの計算式を選択するときに使用します。たとえば、標準の時間とコストの計算式セットや、定期的な時間とコストの計算式セットなどです。これらの計算式セットでは、オペレーションで生産される部品の数が考慮され、作業拠点に対して定義された仕様 (セットアップ時間、キュー時間など) が使用されます。計算式と計算式セットは、「時間とコストを計算」操作が選択されているときと、プロセス計画やオペレーションを製造ガントエクスプローラにロードするときに使用されます。
複数の計算式セットが 1 つの作業拠点に関連付けられているときには、その作業拠点のデフォルトの計算式セットとして 1 つの計算式セットを指定することができます。作業拠点をオペレーションに割り当てると、この計算式セットがオペレーションに割り当てられます。
| 計算式を計算式セットに割り当てる必要があります。既存の計算式セットが存在しない場合は、カスタム計算式を定義する前に計算式セットを定義する必要があります。カスタマイズされた計算式セットに PSE を使用して値を追加できるように、PSE をカスタマイズすることができます。詳細については、PSE のドキュメンテーションを参照してください。 |
カスタム計算式を作成するには、次の手順に従います。
1. LoadFromFile ユーティリティを使用して XML ベースのロードファイルを読み込みます。ここで <csvname> はシステムに対して一意でなければなりません。このロードファイルには次のエレメントがすべて含まれている必要があります。
◦ csvFormulaSet - FormulaSet オブジェクトを作成します。
◦ csvFormulaMetaData - FormulaMetaData オブジェクトを作成します。
◦ csvAddFormulaMetaData - FormulaMetaData を FormulaSet にリンクします。
<csvFormulaSet handler="com.ptc.windchill.mpml.formula.LoadFormula.
createFormulaSet">
<csvuser></csvuser>
<csvname>Standard Time and Cost</csvname>
<csvdescription>This formula Set is used to calculate the time and
cost of an Operation</csvdescription>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
</csvFormulaSet>
2. 計算式インタフェースを実装して計算値を返す Java クラス名にリンクすることで、計算式メタデータを作成します。たとえば FloatingPointWithUnits などです。
LoadFromFile ユーティリティを使用して XML ベースのロードファイルを読み込みます。ここで <csv 名> はシステムに対して一意で、<csv 計算クラス名> は計算式インタフェースを実装する Java クラスです。
<csvFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.createFormulaMetaData">
<csvuser></csvuser>
<csvname>StandardAttributeValueFormulaTime</csvname>
<csvdescription>Standard Attribute Value Formula</csvdescription>
<csvtype>time</csvtype>
<csvformulaClassName>com.ptc.windchill.mpml.formula.Standard AttributeValueFormula</csvformulaClassName>
<csvfolder>/Default/Design</csvfolder>
<csvparentcontextPath></csvparentcontextPath>
<csvorganizationName></csvorganizationName>
<csvorganizationID></csvorganizationID>
</csvFormulaMetaData>
3. 属性名を使用して、計算式メタデータを計算式セットにリンクします。
たとえば、計算式を計算するサービスを呼び出した場合、その計算式セットに関連付けられた計算式メタデータが実行され、属性名をキーとして使用して、すべての計算値のマップが返されます。
LoadFromFile ユーティリティを使用して XML ベースのロードファイルを読み込みます。ここで <csv 属性名> は MPMOperation オブジェクトの時間とコストに関する再利用可能な属性です。
<csvAddFormulaMetaData handler="com.ptc.windchill.mpml.formula.
LoadFormula.addFormulaMetaDataToFormulaSet" >
<csvformulaSetName>Standard Time and Cost</csvformulaSetName>
<csvformulaMetaDataName>StandardAttributeValueFormula Time</csvformulaMetaDataName>
<csvattributeName>IBA|MPM_Attr_MPMOperationSetupTime </csvattributeName>
</csvAddFormulaMetaData>
計算式インタフェースを実装する Java クラスを作成する場合、次に示す入力には入力マップにおいてデフォルトでアクセス可能です。
◦ FormulaHelper.FORMULAVALUATED: 計算式セットがリンクされているオブジェクトで、ForumlaValuated にキャストします。
◦ FormulatHelper.FORMULAVALUATED_TI: 計算式セットがリンクされているオブジェクトタイプインスタンスで、TypeInstance にキャストします。Null にすることもできます。
◦ FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME: 計算式メタデータの計算式セットへのリンクに使用する属性名で、String にキャストします。結果のマップ内でキーとして使用されます。
◦ FormulaHelper.LOT: 「時間とコストを計算」操作のコンテキストでユーザーによって指定されるロット値。Double にキャストします。
計算値の Java クラスの例を以下に示します。
import com.ptc.core.meta.common.AttributeIdentifier;
import com.ptc.core.meta.common.AttributeTypeIdentifier;
import com.ptc.core.meta.common.TypeinstanceIdentifier;
import com.ptc.core.meta.context.common.AttributecontextSpec
import com.ptc.core.meta.server.TypeIdentifierUtility;
import com.ptc.core.meta.type.common.TypeInstance;
import com.ptc.core.meta.type.common.TypeInstanceFactory;
import com.ptc.windchill.mpml.MPMLinkHelper;
import java.text.NumberFormat;
import java.util.HashMap;
import wt.units.FloatingPointWithUnits;
import wt.util.WTContext;
import util.WTException;
public class StandardAttributeValueFormula implements Formula{
private static final String RESOURCE = "com.ptc.windchill.mpml.formula.formulaResource";
private static NumberFormat numberFormat =
NumberFormat.getInstance(WTContext.getContext().getLocale());
/** Creates a new instance of StandardAttributeValueFormula */
* This Formula simply return the value of the attribute.
public StandardAttributeValueFormula() {
}
public FloatingPointWithUnits calculate(HashMap inputs)throws
InvalidFormulaInputException, WTException{
//Get the object on which the formula is call
Object object = inputs.get(FormulaHelper.FORMULAVALUATED);
//Get the TI on which the formula is call
TypeInstance ti =(TypeInstance)inputs.get(FormulaHelper.FORMULAVALUATED_TI);
//Get the attribute that is calculated by the formula
String attribute_name = (String)inputs.get(FormulaHelper.FORMULAVALUATED_ATTRIBUTE_NAME);
if(object == null)
throw new InvalidFormulaInputException( RESOURCE, formulaResource.REQUIRED_FORMULA_INPUT_MISSING, new Object[]{FormulaHelper.FORMULAVALUATED} );;
TypeInstanceIdentifier tii = null;
//Get the TI of the object if null
if(ti==null){
tii = TypeIdentifierUtility.getTypeInstanceIdentifier(object);
ti = TypeInstanceFactory.newTypeInstance(tii);
}else
tii = (TypeInstanceIdentifier)ti.getIdentifier();
//Get ATI for the attribute to calculate
AttributeTypeIdentifier ati = (AttributeTypeIdentifier)MPMLinkHelper.getIdentifierFactory().get(attribute_name,tii.getDefinitionIdentifier());
AttributeIdentifier[] ais = ti.getAttributeIdentifiers(ati);
//If the attribute value is not in the TI, update it to get the value
if(ais.length<1){
AttributecontextSpec fl = new AttributecontextSpec();
fl.putEntry(ati);
ti = MPMLinkHelper.updateTypeInstance(new TypeInstance[] {ti}, fl, null)[0];
ais = ti.getAttributeIdentifiers(ati);
}
//Get the attribute value
Object value = null;
if(ais.length>0)
value = ti.get(ais[0]);
//Return the value of the attribute if it’s a FloatingPointWithUnits
if(value instanceof FloatingPointWithUnits)
return (FloatingPointWithUnits)value;
// value is null
return FloatingPointWithUnits.valueOf(numberFormat.format(0));
}
}
| 新しい操作を作成し、計算式サービスを使用して計算式セットの実行を呼び出すことで、計算式にさらに入力を追加することもできます。新しい操作の作成方法については、PSE のドキュメンテーションを参照してください。 |
定期的な時間とコストの計算式の有効化
定期的な時間とコストの計算式を有効にするには、次の手順に従います。
1. 「タイプおよび属性の管理」ユーティリティを起動します。
2. 「再利用可能な属性を管理」枠で、Resource_Attribute_Org オーガナイザーを選択します。
3. 次のプロパティを持つ、新しい属性を挿入します。
◦ 名前: MPM_Attr_SetupLotInterval
◦ データタイプ: 実数
◦ 内部名: MPM_Attr_SetupLotInterval
◦ 説明: 「表示名」および「階層の表示名」: セットアップのための Lot 間隔
4. 次のプロパティを持つ、新しい属性を挿入します。
◦ 名前: MPM_Attr_SetupTimeDuringProcessing
◦ データタイプ: 実数
◦ 内部名: MPM_Attr_SetupTimeDuringProcessing
◦ 説明: 「表示名」および「階層の表示名」: セットアップのための Lot 間隔
5. 次のプロパティを持つ、新しい属性を挿入します。
◦ 名前: MPM_Attr_SetupCostDuringProcessing
◦ データタイプ: 実数
◦ 内部名: MPM_Attr_SetupCostDuringProcessing
◦ 説明: 「表示名」および「階層の表示名」: 処理中のコストをセットアップ
6. 「タイプを管理」枠で、 > > にある作業拠点タイプを編集します。
7. 「テンプレート」タブで「属性ルート」を選択し、「属性を追加」をクリックして、あらかじめ作成済みの 3 つの属性を作業拠点タイプに関連付けます。
8. 製造リソースエクスプローラを起動します。
9. 既存の各作業拠点について、作業拠点をチェックアウトし、Setup Lot Interval、Setup Time During Processing、Setup Cost During Processing という属性の「情報」タブに値を設定します。すべての属性を設定した後、作業拠点をチェックインします。
累積時間とコストの測定単位の変更
プロセス計画エクスプローラの累積時間とコスト機能は、測定システムのデフォルトの単位は使用しません。
時間とコストの計算単位を変更するには、次のプロパティを修正します。
com.ptc.windchill.mpml.CumulatedTimeAndCostActionTimeUnit
com.ptc.windchill.mpml.CumulatedTimeAndCostActionCostUnit
これらのプロパティは次の場所にあります。
codebase/com/ptc/windchill/mpml/xconf/mpmlin.properties.xconf
デフォルトの値は、それぞれ "min" および "$" です。
作業指示のカスタマイズ
Windchill MPMLink とともにインストールされる作業指示テンプレートは、用途に合わせてカスタマイズできます。作業指示をカスタマイズするには、JSP と Info*Engine に関する基本知識が必要です。
Info*Engine タスクは、作業指示に表示される情報の収集に使用され、JSP はその情報を表示する際の配置とフォーマットに使用されます。
場所 | 説明 |
<WT_ホーム>\codebase\netmarkets\jsp\ mpml | 作業指示に使用される JSP の場所です。 |
<WT_ホーム>\tasks\com\ptc\windchill\ mpml\workinstructions | 作業指示データの収集に使用される Info*Engine タスクの場所です。 |
<WT_ホーム>\codebase\com\ptc\windchill\ mpml\xconfs\ mpmlink.properties.xconf | 作業指示プロパティの場所です。 |
<WT_ホーム>\codebase\netmarkets/css/wor kInstructionStyles.css | 作業指示スタイルシートの場所です。このファイルは、作業指示に使用されるフォントおよびレポートタイトルの色の変更に使用できます。 |
作業指示に使用される JSP
以下に、作業指示の設定に使用される JSP のリストとその説明を示します。
JSP | 説明 |
headerWorkInstruction.jsp | 作業指示の一番上の端に表示されるロゴイメージを作成します。ロゴのすぐ隣に、レポートに示される操作のプロセス計画に関する情報を示すテーブルがあります。右端は、このプロセス計画が関連付けられているアセンブリテーブル情報になります。 |
configSpecWorkInstruction.jsp | 作業指示レポートで作成されるコンフィギュレーション仕様テーブルを作成します。このレポートでは、標準、ベースライン、エフェクティビティの 3 タイプのコンフィギュレーション仕様が有効です。表示されている値は、作業指示レポートを起動したときにデータに適用される展開基準のものです。 |
operationHeaderWorkInstruction.jsp | 左マージンに、sequenceHeaderWorkInstruction.jsp で作成された情報を表示します。オペレーションまたはサブオペレーションのラベル番号を作成し、シーケンス番号の次に配置します。ラベル番号の下には、そのオペレーションの名前、番号、バージョン、短い説明を含むテーブルを表示します。 |
operationDetailHeaderWorkInstruction. jsp | オペレーションヘッダーの下にテーブルを作成します。使用する作業拠点と時間およびコストを含むオペレーションの詳細を示します。 |
operationDetailWI.jsp | オペレーションの詳細説明、関連部品、割り当てられているリソース、関連ドキュメントを含むテーブルを作成します。ドキュメントテーブルの「表示」列の値が「Yes」の場合、関連ドキュメントは認識されたイメージとして、詳細テーブルの左にある作業指示パネルに表示されます。作業指示に表示可能なイメージファイルは、次のプロパティで指定された拡張子を持つ必要があります。 com.ptc.windchill.mpml.WorkInstructi onIllustrationFileExtensionAllowed |
sequenceHeaderWorkInstruction.jsp | オペレーションがシーケンスの一部の場合、この JSP はブランチにリンクを作成し、オペレーションを返します。オペレーションが別のオペレーションのサブオペレーションの場合、この JSP は親オペレーションへのリンクを作成します。 |
footerWorkInstruction.jsp | 各オペレーションセクションの最後に表示されるフッタ領域を作成します。オペレーションの現在の状態、ステータス、検査、最初の作成時期、最後にオペレーションを更新した人、最終更新日時が表示されます。 |
coreWorkInstruction.jsp | 作業指示レポートを構成するコア JSP です。URL パラメータを処理して、プロセス計画内のオペレーションに関連するデータの収集に使用する Info*Engine タスクを呼び出します。JSP をプロセス計画から起動した場合は、 processPlanLogicWorkInstruction.jsp を呼び出します。 オペレーションから起動した場合は、 operationLogicWorkInstruction.jsp を呼び出します。 この JSP は、オペレーション間の親子関係とシーケンスのブランチも計算し、オペレーションを返します。各オペレーションについて、テーブルを作成し、Info*Engine タスクによって返されたデータを表示する JSP を呼び出します。 |
operationLogicWorkInstruction.jsp Info*EngineInfo*Engine | すべてのオペレーションと各オペレーションの標準手順を見つける、Info*Engine タスクを起動します。オペレーションは、オペレーションラベル番号を基準に並べ替えられます。この JSP は、レポートにアイテムを表示する機能はありません。 |
processPlanLogicWorkInstruction.jsp | すべてのオペレーション、シーケンス、各オペレーションの標準手順を見つける、Info*Engine タスクを起動します。見つかったオペレーションは、オペレーションラベル番号を基準に並べ替えられます。この JSP は、レポートにアイテムを表示する機能はありません。 |
作業指示で使用される Info*Engine
以下に、作業指示のデータの収集に使用される Info*Engine のリストとその説明を示します。
Info*Engine タスク | 説明 |
describeAttributes.xml | このタスクの各 Webject は、属性値がローカライズされるグループを作成します。そのローカライズされた値が、作業指示レポートに表示されます。 |
getOperationData.xml | このタスクの Webject がオペレーションで、作業指示レポートに表示するデータをクエリーします。収集するデータセットは、作業拠点、プロセス、部品、製造能力、リソース、ドキュメントです。各データセットは Info*Engine グループに保存されます。 |
getOperationsAndStProceduresUnderAnOperation.xml | このタスクの Webject は、1 レベル下のすべてのサブオペレーションと各オペレーションの標準手順を含むグループを作成します。 |
getProcessPlanAndAssemblyInformation.xml | このタスクの Webject は、プロセス計画に関連付けられたアセンブリに関する情報を含むグループを作成します。 |
getSequencesAndStProceduresUnderAProcessPlan.xml | このタスクの Webject は、1 レベル下のすべてのシーケンスと各プロセス計画の標準手順を含むグループを作成します。 |
sortingOperations.xml | このタスクの Webject は、サブオペレーションと各オペレーションの標準手順を含むグループを作成します。また、オペレーションと各レベルの標準手順を並べ替えます。現在のところ、アルゴリズムは再帰的ではなく、最大 3 レベル下までに限られます。つまり、3 レベル下までのサブオペレーションのみを見つけ、さらにサブオペレーションがあったとしてもそこで終わります。さらに下のレベルを取得するには、このタスクに適用されているパターンに従って、同じようにレベルを追加します。 |
sortingSequences.xml | このタスクの Webject は、サブシーケンスと各シーケンスの標準手順を含むグループを作成します。また、シーケンスと各レベルの標準手順を並べ替えます。現在のところ、アルゴリズムは再帰的ではなく、最大 3 レベル下までに限られます。つまり、3 レベル下までのサブシーケンスのみを見つけ、さらにサブシーケンスがあったとしてもそこで終わります。さらに下のレベルを取得するには、このタスクに適用されているパターンに従って、同じようにレベルを追加します。 |
作業指示プロパティ
作業指示のカスタマイズ
作業指示は、ヘッダーとロゴをユーザー独自の情報に置き換える、簡易な作業指示にするなど、さまざまな点でカスタマイズが可能です。
以下に、一般的な作業指示のカスタマイズをいくつか示します。
カスタマイズ | 説明 |
オペレーションの時間単位の変更: | 次の JSP を修正します: timeUnit in coreWorkInstruction.jsp たとえば、秒を分にするには、m に変更します。 |
オペレーションのステップの時間単位の変更: | 必要に応じて、次の JSP を修正します。 setupTimeUnit processingTimeUnit LaborTimeUnit queueTimeUnit, teardownTimeUnit, waitTimeUnit, moveTimeUnit たとえば、秒を分にするには、m に変更します。 |
作業指示のテーブルの場所を変更するには、以下の手順に従います。 | 次の JSP の最後に移動します。 coreWorkInstruction.jsp 次に、HTML 表示のデザインを変更します。 |
作業指示へのオペレーション処理コストの表示: | 次に示すタスクに移動します。 • getOperationsAndStProceduresUnder AnOperation.xml • sortingOperations.xml 次の属性を前述のタスクに追加します。 MPM_Attr_MPMOperationProcessingCost 次に、次の JSP に列と表示データを作成します。 operationDetailHeaderWorkInstruction .jsp |
作業指示のタイトルのフォント、サイズ、または色の変更: | 次の CSS ファイルと、CSS ファイルの定義を使用する JSP を修正します。 workInstructionStyles.css |
作業指示の一番上またはオペレーションテーブルのロゴの変更: | 次の手順に従います。 xconfmanager -d com.ptc.windchill.mpml.WorkInstructionLogo=<logo> -t codebase/wt.properties ここで <logo> は、次のフォルダにあるロゴの .gif ファイルへの完全パスです。 codebase\netmarkets\jsp\mpml デフォルト値は次のとおりです。../../images/ptcLogo_workInstructions.gif corresponding to folder codebase\netmarkets\images |
イメージ拡張子タイプの追加: | 拡張子タイプを次のプロパティに追加します。 com.ptc.windchill.mpml.WorkInstructi onIllustrationFileExtensionAllowed |
テーブルの再配置、削除、または新規追加: | 次の JSP を修正します: coreWorkInstructions.jsp |
オペレーションの番号付けの変更
Windchill MPMLink では、オペレーションに 10 ずつ増加させた番号を付けています。たとえば、オペレーション 10、オペレーション 20 のようになります。ただし、別の番号付けスキームで自動的に増加させるように、オペレーションを設定することもできます。
番号付けスキームを変更するには、次のプロパティを修正します。
• wt.operationLabelIncrement
• wt.operationLabelNumberOfCharacters
たとえば、5 ずつ増加する 3 桁のオペレーションラベル (005、010) を作成するには、以下を site.xconf に追加して、xconfmanager -pF を実行します。
• <Property name="wt.operationLabelIncrement" overridable="true" targetFile="codebase/wt.properties" value="5"/>
• <Property name="wt.operationLabelNumberOfCharacters" overridable="true" targetFile="codebase/wt.properties" value="3"/>
また、オペレーションが使用する埋め込みを変更するには (0 以外の文字列など)、次のプロパティを修正します。
• wt.operationLabelPaddingCharacter