if (description.getKind() != FlowElementKind.FLOW_COMPONENT) {
throw new IllegalArgumentException("element must be a flow component"); //$NON-NLS-1$
}
FlowPartDescription component = (FlowPartDescription) description;
FlowGraph graph = component.getFlowGraph();
// フロー部品の外側からの入力と、フロー部品の内部の入力を結線する
List<FlowElementInput> externalInputs = element.getInputPorts();
List<FlowElementOutput> internalInputs = Lists.create();
for (FlowIn<?> fin : graph.getFlowInputs()) {
internalInputs.add(fin.toOutputPort());
}
bypass(externalInputs, internalInputs, attributes);
// フロー部品の内側からの出力と、フロー部品の外側への出力を結線する
List<FlowElementOutput> externalOutputs = element.getOutputPorts();
List<FlowElementInput> internalOutputs = Lists.create();
for (FlowOut<?> fout : graph.getFlowOutputs()) {
internalOutputs.add(fout.toInputPort());
}
bypass(internalOutputs, externalOutputs, attributes);
// 不要な結線を解除
for (FlowIn<?> fin : graph.getFlowInputs()) {
disconnect(fin.getFlowElement());
}
for (FlowOut<?> fout : graph.getFlowOutputs()) {
disconnect(fout.getFlowElement());
}
// インライン化したフロー部品を除去
disconnect(element);