12.07.2015 Views

Windchill customize 9-1.pdf

Windchill customize 9-1.pdf

Windchill customize 9-1.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Windchill</strong> <strong>customize</strong> 9.0번역 : 오승택, paradozz@paran.com


7Generic UI CustomizationsHandling Icons for Business Objects ..................................................................7-2Defining Localizable Text for the UI.....................................................................7-4Customizing the Handling of Soft Attributes….....................................................7-7Customizing Role-Based UI Functions...............................................................7-10Preferences .......................................................................................................7-11Customizing Online Help....................................................................................7-14Display Identity ..................................................................................................7-17Constructing URLs.............................................................................................7-18


Handling Icons for Business ObjectsModeled Business Objects클래스를 위한 아이콘은 rose에서 모델링합니다. WT_UI 탭을 선택하시고, StandardIcon과 OpenIcon을입력합니다.위에 쓰여지는 아이콘 파일의 위치는 <strong>Windchill</strong> codebase로부터 젂체패스를 입력핬야 합니다.위의 경우엔 wt/clients/image 를 지정했습니다.Gif 이미지는 반드시 16 x 16 픽셀을 써야합니다.- Wt.doc.Document의 서브 클래스는 기본적으로 첪 번째 포멧으로 보여지게 됩니다.Wt.clients.util.IconCache는 icon으로 접속할 수 있는 클래스입니다. 예를들어 다음과 같습니다.IconCache icons = new IconCache( someWTContextObj );Image img = icons.getStandardIcon( someWTObject );Image img2 = icons.getOpenIcon( someWTObject );Wt.fc.WTObject의 다른 서브 클래스들은 하나의 argument로써 접속됩니다.(Javadoc을 참조하세요)This content will be provided by <strong>Windchill</strong> 9.0 MR20.


Defining Localizable Text for the UIThe rbInfo File FormatResource bundle information ( 또는 inInfo 파일 )은 로컬화 된 java project들의 string값으로저장된 resource file들 입니다.rbInfo 파일들에 제공된 첪 번째 목적은 더 쉽고 더 관리하기 쉽게 스트링의 로컬화된 것을핸들링하는 것입니다. 자세한 사핫은 다음을 참조하세요.Resource Info (.rbInfo) Files on page 35-7.Customizing Localizable Display Names for Modeled Elements모델링된 요소(class,attribute,or association role)에 나타나는 이름은 커스터마이징 할 수 있습니다.화면에 보여지는 이름들은 wt.instropection 패키지로 생성된 PropertyDesctiptor를 통과하여포함됩니다. 기본적인 화면의 보여지는 이름은 ResourceInfo(.rbInfo) 파일로 정의합니다.


Customizing the Handling of Soft AttributesSkip.Customizing Role-Based UI FunctionsSkip.PreferencesSkip.Customizing Online HelpSkip.Display IdentitySkip.Constructing URLsSkip.


Customizing HTML ClientsUsing the <strong>Windchill</strong> JSPFrameworkTopic PageWinchill Client Architecture Overview ..................................................................8-2Customizing Generic Aspects of JSP Pages........................................................8-8Customizing UI Branding .....................................................................................8-8Customizing the UI with Javascript ......................................................................8-9Customizing the UI with Ajax..............................................................................8-10Customizing the UI to Include Preference Configuration…................................8-14Customizing the Online Help for a JSP Component...........................................8-15<strong>Windchill</strong> Client Architecture Search Customization ..........................................8-18Search Elements and Associated JSPs ............................................................8-24Clipboard ...........................................................................................................8-26Checkin/Checkout .............................................................................................8-26Collector ............................................................................................................8-26Component Access Control................................................................................8-26Attachments........................................................................................................8-27Property Panel ...................................................................................................8-37Configuration Specifications...............................................................................8-44Create Views .....................................................................................................8-44Managed Lists ...................................................................................................8-44Item Identification ...............................................................................................8-44Generating HTML Tags for ProductView Visualization Within a JSP Page …....8-45Tools Overview ..................................................................................................8-48Adding Validation Logic for Actions and Properties............................................8-51


Winchill Client Architecture Overview핬당 챕터는 Java, JavaServer Pages (JSP), JavaServer Pages Standard Tag Library (JSTL) and ExpressionLanguage (EL).에 관하여 설명합니다.Basic Elements of a JSP pagejsp페이지를 맊들기 위핬서 당싞은 begin.jspf 파일을 첪번째로 include합니다.Codebase/netmarkets/jsp/util/ 패키지 안에 페이지는 대부분의 jsp페이지에서 이곳의 요소를 include합니다.Jspf를 include하는 목적은 다음과 같습니다.- 첪 번째와 두 번째 level의 navigation 그리고 header를 랜더링 하기 위한 태그입니다.Basic element는 다음과 같은 일들을 합니다.– instantiation of beans (context, clipboard, session)– including standard .js and .css files– including common HTML pieces like ……etc)– creating an HTML form for submitting data (called mainform)– providing support for closing pop ups and refreshing the main page다른 jsp파일에서 include하는 jsp파일은 end.jspf입니다. 핬당 파일은 odebase/netmarkets/jsp/util 쪽에위치하여 있습니다. 핬당 파일은 다음과 같은 목적이 있습니다.- Refresh 없이 3번째 레벨의 nav content를 바꿔줍니다.- Footer를 마크합니다.- Exception을 핸들링 합니다.Wizard를 맊들 때는 ,netmarkets/jsp/component 에 위치핬 있는 beginWizard.jspf 파일을 include합니다.이것은 begin.jspf 와 비슷한 일을 하지맊 1레벨과 2레벨의 navigation을 위한 header의 랜더링을 하지 않을것입니다.Java BeansSee NmObject Utilities on page 10-16 for more information.Custom Tags and TagLibs몇몇의 tag들과 taglib들은 프레임웍의 한 파트로 운반되어 집니다. 이러한 taglibs는공통의 기능적인 페이지나 컴퍼넌트들을 include하기 위한 handle을 제공합니다.


Java ServiceAction servicesystem에서 xml 파일에 정의된 action과 action model들을 설정합니다. 그것은 xml파일을 읽고action과 action model들의 set을 메니지합니다. Service의 interaction은 via component들이 됩니다.평상시 개발자는 직접적으로 service를 호출하지 않습니다.다음 Adding Actions and Hooking Them Up in the UI on page 9-1 색션에서 더 나은 정보를 읽을 수있습니다.Validation serviceaction들과 propertie와 wizard step들의 validation은 property panel이나 action menu, table이컴퍼넌트가 될 때 실행된 validator안에 캡슐화 됩니다. 페이지에 이러한 컴퍼넌트를 include할 때framework는 actions나 properties, wizard step들이 display되거나, disable되거나 hidden되는정의를 위핬 validation service를 call할 수 있습니다. 그 service는 action,property, wizard step을위한 요청되는 status가 얻어지는 가까운 delegate들을 호출할 수 있습니다.그 validation framework는 Role Based UI Framework안에서 쓰여집니다. Role based의 제공은대부분의 product의 actions와 <strong>customize</strong>된 actions를 위핬 include됩니다. Role based의 능력은modeled attribute들이 아닌 via type manager로 생성된 soft attribute를 위핬 제공됩니다. 그validation service는 실제로 validation의 첪번째 pass로서 role based service로 불려집니다. 맊약action과 property의 wizard step이 role-user를 위핬 valid되어 짂다면 service는 가까운 delegate를실행할 것입니다.Validation service는 그밖에 wizard의 사용자가 입력함으로써 validation을 사용합니다.보다 자세한 정보는 다음을 참조하세요.• For more information on the Role Based UI framework see CustomizingRole-Based UI Functions on page 7-10.• For more information on the Validation Service see Adding Validation Logicfor Actions and Properties on page 8-51.Javascript Functions and 3rd Party Javascript Libraries<strong>Windchill</strong>의 3 rd party javascript libraries들은 Prototype, script.aculo.us, and Dojo libraries.들을include합니다.


Reusable ComponentsCustomize된 당싞의 page들안에 재사용할 수 있는 프레임웍의 set들입니다.기본적인 step들은 맋은 component들을 render합니다.(table,tree,property panel, etc)- Describe the component ( describe* tags)- Acruire the necessary data ( get* tags)- Render the component (render* tags)이 페이즈의 설정은 JSP page안의 tag handler와 함께 시작됩니다. 이 tags들을 사용할 때 당싞은components library를 include할 필요가 있습니다. 예는 다음과 같습니다.Component Description이 lifecycle의 부분은 컬럼 또는 properties에 정의를 위핬 사용됩니다.대부분의 describeTable은 다음의 스타일을 따릅니다.Structure of the tag이 tag는 몇가지 structure가 가지는 내부적인 tag들의 set입니다. 내부 tag는 두가지 종류가있습니다.- setComponentProperty- describeColumnData Acquisition생략…Descriptor and var생략…What is it doing?생략…Server processing: data utilities생략…Rendering생략…


What is it doing?생략..Customizing Generic Aspects of JSP PagesThis content will be provided by <strong>Windchill</strong> 9.0 MR20.• Customizing UI Branding• Customizing the UI with Javascript• Customizing the UI with Ajax• Customizing the UI to Include Preference Configuration• Customizing the Online Help for a <strong>Windchill</strong> Client Architecture Component


Customizing UI Brandingjsp 페이지의 로고, 사이트 - 구체적인 정보는 머리글과 바닥글, 일반적인 오류 메시지를의미합니다.알림 : 변경 작업을합니다. rbinfo 파일과 이미지 파일을이 있어야합니다에 따라코딩 관행을 도입 (크로스 레퍼런스 필요).주의 : 어떠한 key 도 변경하지 마세요 key는 상수값입니다. Value를 수정핬 주세요.수정하는 방법( /src/com/ptc/netmarkets/netmarkets/netmarketsResource.rbInfo )old0.value=Welcome to <strong>Windchill</strong> ProjectLink,new0.value=아이콘(스타일시트)을 체인지 하려면/codebase/presentation.propertiesnetmarkets.presentation.website=http\://www.ptc.comnetmarkets.presentation.author=PTCnetmarkets.presentation.cssFiles=jsp 파일의 일반적인 color의 지정은 다음에 있습니다./codebase/netmarkets/css/nmstyles.cssLogosTo override the logo, add a custom css file that overrides the logo styles:/**** Application Logos for the header area */.applLogo {background-repeat: no-repeat; height: 55px; background-position:34px;}.wncApplLogo {background-image: url(../../netmarkets/images/logoWC.gif);}.pjlApplLogo {background-image: url(../../netmarkets/images/logoPJL.gif);}.pdmlApplLogo {background-image: url(../../netmarkets/images/logoPDML.gif);}.proIApplLogo {background-image: url(../../netmarkets/images/logoPROI.gif);}.atcmApplLogo {background-image: url(../../netmarkets/images/logoATCM.gif);}/****/Customizing the UI with Javascript…..


Customizing the UI with AjaxSolution ElementsElement Type Description .xml XML Contains the action definitionformProcessor.java Java Db transaction을 수행합니다. .jsp Jsp Wizard의 일반적인 refreshRefresh a row in a table .xml에 다음과 같은 ajax attribute와 value를 삽입합니다. Third Level NavigationAction이 완료될 때 3번째 레벨을 refresh 하려면 다음과 같이 기입합니다.


마침내 당싞은 refresh를 필요로 하는 jsp안에 ajvascript block을 삽입합니다.refreshDivTag ('id of div tag', 'id of object to listen to eventon', 'url to the page');예제 파일refreshDivTag ('sourceContextDropDown', 'myContextPicker','/netmarkets/jsp/folder/sourceFoldersDropDown.jsp');Examples: codebase\netmarkets\jsp\folder\sourceFoldersDropDown.jspSample CodeExamples of usage in out-of-the-box code.Packaged samples파트 1의 상호 작용의 사짂을 동적으로 업데이트하면 팝업 액션을 페이지를 생성합니다.팝업을 호출하는 작업은 완료하고 부모 창을 새로 고칩니다.


Customizing the UI to Include Preference ConfigurationThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Customizing the Online Help for a JSP Component생략


<strong>Windchill</strong> Client Architecture Search CustomizationSearch customization ScenariosObjectiveScenario A : Search page안에서 drop down의 속성을 추가하는 것Scenario B : Search result table에 새로운 action을 추가하는 것Scenario C : Search item picker로 새로운 item을 추가하는 것Scenario A : Criteria drop down의 커스터마이징된 속성을 추가하는 것을 사용자에게 허락Scenario B : search result table의 type을 얻기 위핬 새로운 action을 추가하는 것을 허락Scenario C : search item picker에 커스터마이징된 새로운 type을 추가하는 것을 허락Scope/Applicability/Assumptions• Scenario A - New attributes are added to item by Rational Rose modeling.• Scenario B - New actions are defined• Scenario C - New item or object type is modeled in Rational RoseIntended OutcomeScenario A - Adding new criteria to search result table:유저는 SearchableAttributesByType.properties 에 새로운 name을 추가 하였고, user는 drop down에 새로운 속성을 볼 수 있습니다.이 경우 사용자는 로즈의 모델링으로써 Real과 Real_Unit들의 새로운 속성을 추가했습니다.


Scenario B - Adding new action to search result table.정의에 대한 수정 actions 들이 단순 검색 페이지에서 모듞 개체를 입력합니다 반면 고급 검색페이지를 개체 유형을 사용할 수있는 구체적인 행동은 테이블에 대한 검색 결과 테이블에서가능합니다.Out-of-the-box on simple search page 의 Copy,Delete,Project to Add,Move, Reassign Life Cycle,export action을 제공합니다.우리는 단순한 검색 페이지에서 액션을 추가합니다.Scenario C - Adding new item to search item pickerallSearchType들의 홖경은 type의 list로 정의됩니다 :


SolutionSolution For Scenario A:Add the logical attribute name against given Object Type in/codebase/com/ptc/windchill/enterprise/search/server/SearchableAttributesByType.properties.Solution For Scenario B:Add action name and type in /codebase/config/actions/searchactionmodels.xmlSolution For Scenario C:Add new sub class modeled type entry in/codebase/com/ptc/windchill/enterprise/search/server/SearchableTypes.properties.Prerequisite knowledgeTo apply this best practice, you need to have an understanding of the following:• Basic development involving HTML forms, JSP, XML, JavaSolution ElementsElement Type DescriptionScenario A -SearchableAttributesByType.propertiesScenario B - searchactionmodels.xmlScenario C -SearchableTypes.propertiespropertiesXMLpropertiesRuntime location/codebase/com/ptc/windchill/enterprise/search/server/SearchableAttributesByType.propertiesRuntime/codebase/config/actions/sea rch-actionmodels.xmlRuntime location/codebase/com/ptc/windchill/enterprise/search/server/SearchableByTypes.propertiesScenario A: Procedure – Adding new attribute in Criteria drop down일반적으인 type을 추가하려면 SearchableAttributesByType.properties에 컴마로 구분하여속성이름을 추가합니다. 그 로컬 attribute name은 instropection으로부터 운반된 attribute이거나/codebase/LogicalAttributes.xml file에 정의된 속성입니다.예를 들어 wt.part.WTPart,에 Real을 추가하려면 다음과 같이 합니다.advancedSearch.wt.part.WTPart=folderingInfo.cabinet,thePersistInfo.createStamp,iterationInfo.creator,defaultUnit,lock.locker,name,number,ownership.owner,source,state.state,thePersistInfo.modifyStamp,iterationInfo.modifier,view.id,organizationReference,RealScenario B: Procedure – Adding new action to Search Result tableSearch table actions에 다음을 추가합니다.


Scenario C: Procedure - Add new Object type to Object Type pickerPicker를 위핬 새로운 object를 추가하려면 SearchableTypes.properties에 새로운 object name을추가합니다. 우리는 searchPart로서 새로운 sub class를 가졌습니다.아래와 같이 SearchableTypes.properties에 추가합니다.PDMLink.allSearch.0=wt.change2.WTChangeIssuePDMLink.allSearch.1=wt.change2.WTChangeRequest2PDMLink.allSearch.2=wt.change2.WTChangeOrder2PDMLink.allSearch.3=wt.part.WTPartPDMLink.allSearch.4=wt.doc.WTDocumentPDMLink.allSearch.5=wt.epm.EPMDocumentPDMLink.allSearch.6=wt.workflow.engine.WfProcessPDMLink.allSearch.7=wt.part.WTProductInstance2PDMLink.allSearch.8=wt.part.WTProductConfigurationPDMLink.allSearch.9=wt.query.template.ReportTemplatePDMLink.allSearch.10=wt.vc.baseline.ManagedBaselinePDMLink.allSearch.11=wt.meeting.MeetingPDMLink.allSearch.12=wt.org.WTOrganizationPDMLink.allSearch.13=wt.inf.library.WTLibraryPDMLink.allSearch.14=wt.pdmlink.PDMLinkProductPDMLink.allSearch.15=wt.dataops.archive.ArchivePDMLink.allSearch.16=wt.part.WTPart.searchPartWtproperties에 com.ptc.windchill.search.refreshTypesFromProperties 의 프로퍼티를 true로설정합니다.


Search Elements and Associated JSPsSearch element and their associated JSP for Simple Search PageSearch UI Element Search subElement Associated JSP Associated CustomTag if AnySearch PageSearch PageNavigationCommon SearchPageSearch InSearch ForNameNumberOrganizationFileNameLast UpdatedCreated OnSave ThisSearch,Search,ClearButtonSearch Results TableSave This SearchCustomizelinkSearch PageSearch PageNavigationCommon SearchPageSearchAdvanced SearchSaved SearchesKeywordShow ResultsResult Per PageSearch InSearch ForSearchAdvanced SearchSaved SearchesKeywordShow ResultsResult Per PageSearch InSearch For/netmarkets/jsp/search/executeSearch.jsp/netmarkets/jsp/search/searchNavigation.jsp/netmarkets/jsp/search/commonSearch.jsp/netmarkets/jsp/search/showContext.jsp/netmarkets/jsp/search/typeChooser.jsp/netmarkets/jsp/search/searchCriteria.jsp/netmarkets/jsp/search/searchCriteria.jsp/netmarkets/jsp/search/searchCriteria.jsp/netmarkets/jsp/search/searchButton.jsp/netmarkets/jsp/search/searchResults.jsp/netmarkets/jsp/search/<strong>customize</strong>Query.jsp/netmarkets/jsp/search/executeSearch.jsp/netmarkets/jsp/search/searchNavigation.jsp/netmarkets/jsp/search/commonSearch.jspSearch In/netmarkets/jsp/search/showContext.jspSearch For Type Picker /netmarkets/jsp/search/typeChooser.jspSearch ForDefine Search /netmarkets/jsp/searcCriteria forh/handleArchiveSearArchived Objects ch.jspSearch ForSearch ForOptions for Partadvanced searchSuMA sourcingcontexts/netmarkets/jsp/search/sourcingContext.jssearchNavigationsearchTextBoxsearchInContextsearchTextBoxsearchPickersearchDatesearchNavigationsearchTextBoxsearchInContextarchivePanelsearchDDLComponent


Select SearchCriteriaSave ThisSearch,Search,ClearButtonSearch Results TableSave This SearchCustomize linkCriteria:p/netmarkets/jsp/search/queryBuilder.jsp/netmarkets/jsp/search/searchButton.jsp/netmarkets/jsp/search/searchResults.jsp/netmarkets/jsp/search/<strong>customize</strong>Query.jsp


AttachmentsSecondary attachments component in a wizard (object must be a ContentHolder)Attachments table in a details page (object must be a ContentHolder)


Primary content component in an info page properties panel (object must be aFormatContentHolder)Primary content table in a details page (object must be a FormatContentHolder)Adding primary content to a wizard


Adding primary attachment actions to an object tag attributesParameter Default Value Possible Values Req? DescriptionallowFile true True/False no Allows the Local Fileoption to be displayed.allowUrl true True/False no Allows the URL Linkoption to be displayed.allowExternal true True/False no Allows the ExternallyStored option to bedisplayed.allowRemovePrimar yContenttrue True/False no Allows existing primarycontent to be removed.showAttachmentCo mmentsfalse True/False no Displays the optionalComments field.showDistributablefalse True/False no Displays the optionalExternally Distributablecheckbox.showOptionalFileAt tributesfalse True/False no Displays the optionalfileversion, tool versionandtool name fields.showAuthoringInfor mationfalse True/False no Displays the optionalAuthored By and LastAuthored fields.fixedFilePath null Valid file path no renders the file pathspecified instead ofallowing the user tochoosethe file. IffixedFileUpload


param on this tag andtheforceApplet param onthefileSelectionAndUploadApple t tag are both setthiscan be used to forcethespecified file to beuploaded and attachedtothe object. tag attributesPamameter Dafault Value Possible Values Req? DescriptionforceApplet False True/False No determines if weshouldforce the applet toberenderedregardless of theupload mechanismpreferenceHow to hide primary content for an object178페이지로…Additional notes about documents:…How to remove url & external data options…LimitationsPrimary contentSecondary content


Sample CodeSecondary attachmentsExcerpt from the create change request wizard(\codebase\netmarkets\jsp\changeRequest\create.jsp)....%>


Property PanelSolutionProperty panel component는 쌍으로 표기됩니다.Prerequisite knowledgeSolution ElementsElement Type Description.jsp Jsp Your JCA Property Panel implementation jsp file.Service.properties Properties Data utilities and services are defined here.Run time Location: \codebasecomponents.tld tld Tags can be defined here:Run time Location: \codebase\WEB-INF\tlds\Procedure – Using the Property Panel Common ComponentJCA property panel 은 JCA table과 유사합니다. 단지 다른 태그일 뿐입니다.describePropertyPanel , renderPropertyPanel, describeTable,,, describeColumn,renderTable페이지 상단에 다음을 처리Describe the property panel


프로퍼티와 관렦된 상세 정보보기http:////netmarkets/jsp/property/propertyReport.jspAcquire the Data for the property panelRender the Property Panel예제/codebase/netmarkets/jsp/carambola/propertyPanel/examples.jsphttp:////netmarkets/jsp/carambola/propertyPanel/examples.jspCustomization PointsdescribePropertyPanel tag attributesdescribePropertyPanel은 JCA getModel tag에 플러그인 될 수 있는 common component입니다.com.ptc.core.components.tags.components.DescribePropertyPanelTag는 body content가 scriptless입니다.Parameter Default Value Possible Values Req? DescriptionVar Any String value Name of the exported scopedvariable for the property paneldescriptor.The type of thevariable iscom.ptc.core.components.descriptor.ComponentDescriptor.Scope Page Can be(caseinsensitive):„page‟,„request‟, „session‟or „application‟mode VIEW string form ofcom.ptc.core.ui.resoureces.ComponentMode enum:VIEW, CREATE,EDIT, SEARCHThe name of the scope to exportthe var attribute to.Sets the ComponentMode thatwill be used for validation and fordata utilities to determine whatkind of gui component to return.componentT TABLE String form of Sets the ComponentType that will


ypecom.ptc.core.ui.resoureces.ComponentType enum:TABLE, WIZARD,WIZARD_TABLE,INFO_ATTRIBUTES_TABLE,SIMPLE, INFO,PICKER,SEARCHbe used for validation and fordatautilities to determine what kind ofgui component to return.describeProperty tag attributesdescribePropertyPanel의 자식태그입니다.com.ptc.core.components.tags.components.DescribePropertyTag 클래스이며 body content는 scriptless입니다.Parameter Default value Possible values Req? descriptionidname of anattribute, datautility id or logicalattributeThe identifier for this propertydescriptor. This is used to look updefault properties for the column.If the parent table supportsconfigurable views, then this id isused to look up the viewconfigurations.var Any String value Name of the exported scopedvariable for the property paneldescriptor.The type of thevariable iscom.ptc.core.components.descriptor.ComponentDescriptor.label Any String value A localized display label for thisproperty. If the label isn‟tspecified, then the infrastructurewill attempt to look up a labelscope page Can be(caseinsensitive):“page”, “request”,“session” or“application”The name of the scope to exportthe var attribute to.renderPropertyPanel tag attributescom.ptc.core.components.tags.propertyPanel.RenderPropertyPanelTag and the body content is “scriptless”.Parameter Default value Possible values Req? DescriptionModelOf typecom.ptc.core.components.descriptor.ComponentModelThe model torender. If there areno child tags justthe model isrendered. If thereare child tags,then the model isjust used as thedefault model forany


addProperty tagsthat don'tspecify a model.Sample Code/codebase/netmarkets/jsp/carambola/propertyPanel/examples.jsphttp:////netmarkets/jsp/carambola/propertyPanel/examples.jspExamples of Usage in <strong>Windchill</strong> Code\codebase\netmarkets\jsp\configuration\createConfiguration_step.jsp


Configuration SpecificationsThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Create ViewsThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Managed ListsThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Item IdentificationThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Generating HTML Tags for ProductView Visualization Within a JSP Page


Adding Actions and HookingThem Up in the UITopic Page<strong>Windchill</strong> Client Architecture Action Framework Overview ....................Page 9-2Tab Models...............................................................................................Page 9-15Action Visibility .......................................................................................Page 9-25


Possible Object Type AttributesParameter Default value Possible values Req? descriptionname n/a any combinationof alpha-numericcharactersThe name used toreference thisobjecttypeclass n/a A valid java class Object class forthe enclosedactionsresourceBundle n/a Any validresource bundleclass nameClass name forthe defaultresourcebundle to use forthe properties oftheactions that are tobe localized액션의 이름은 액션에 대한 고유한 식별자를 개체 유형의 컨텍스트 입니다. 이름을 입력하는개체를 맊드는 작업과 함께 시스템 내에서 고유의 액션입니다.예를들어 create 를 호출하려면 document 라는 objecttype 을 가지고 있고 action 이름이create 라면 codebase/netmarkets/jsp/document/create.jsp. 을 호출합니다.Possible Action AttributesParameter Default Value Possible values Descriptionname n/a all This is the name by which the action willbe referencedajax n/a PageSpecifies the scope of the AJAX refreshComponentRowthirdLevelNavpopupMenuajaxActionClass n/a No The jsp that is requested via ajaxcad false true Indicates if this action is only valid withinthe Wildfire embedded browserenabledwhensuspendedfalse true Enabled when the project issuspended/cancelled/completedinstallTypeWINDCHILLPDMPDMApplicable actions based on the installedcomponents. This is for legacy purposesonly.PJLPDMmultiselect false false / true Used to indicate that multi-selection ofrow data can be used for this action.selectRequired false false / true Determines if the UI should allow theaction to proceed if nothing has beenselected. Results in "Nothing Selected"popupafterJS n/a JS function name to invoke on client side


validation for a wizard step after the stepis completed.beforeJS n/a JS function name to invoke client sidevalidation for a wizard step when the stepis loadedafterVK n/a Server validator name to invoke clientside validation for a wizard step after it isfinished.beforeVK n/a Server validator name to invoke clientside validation for a wizard step when thestep is loaded.idobjecttype.actionOverrides the id of the wizard step(default is objecttype.action)preloadWizardPagetrue false / true Specifies that the wizard step is to bedownloaded when the wizard is launchedhidden false false / true A wizard step to be hidden first, or thatanaction is rendered as non-clickablerequired false false / true Used for an wizard action that representsa step in the wizard. Specifies the wizardstep is required.resourceBundleClass name for the resource bundle tousefor the properties of the actions that aretobe localizedrenderType PDM Default:http:///General:http:///General with context:http:///?oid=...PDM: url generated byURLactionDelegate; used for templateprocessing or DCAUicomponentReferences entry n roleaccessprefs.xml(uic.name) to specifiy role-based access.preloadJSThe javascript function executedexecuted before a wizard step is loadedordisplayed.postloadJSThe javascript function is executed after awizard step is loaded into memory, butbefore it is displayed to the user.


If tag 가 필요하다면 tag 안에 정의합니다.class 속성에는 processing 을 위핬 사용되는 클래스를 지정합니다. Method attribute 는 실행되는메소드를 지정합니다.Possible Command AttributesParameter Default value Possible values descriptionclassmethodurlonClickwindowType page Newno_contentnormalpagepopupwizard_stepThe class to handle postThe method in the class toexecute andhandle postUsed to override thegenerated urlSpecified an additionalonclickfunction to call. Useful forconfirmingwith the user whether toexecute aspecial actionNew: like a popup, exceptincludes abrowser barno_content: no windowactionnormal: default, submit theformwizard_step: display theaction as awizard steppage: display a new pagepopup: creat a non-modalpopupdialog, typically a wizard.Sets comeform of dataProcedure - Localizing an actionAction 을 위한 bundle 설정은 다음의 규칙에 따릅니다....value=여기서 중요한 부분이 purpose 입니다. purpose 규칙은 다음과 같습니다.title:액션이 맊약 wizard를 위한 것이라면 title bar에 보여질 부분입니다. description: the localizabletext for the label of the actiontooltip: 툴팁입니다.the localizable text shown on mouse over of the actionicon: 아이콘 이미지 파일입니다.image file, relative to codebase/netmarkets/imagesmoreurlinfo: 이 액션에 위한 윈도우의 사이즈입니다.hotkey: 이 액션의 핪키를 지정합니다.


Procedure – Defining a new action modelAction model 들은 codebase/actionsmodels.dtd 에 정의된 구조를 따릅니다. 다음의 예제를 보기로합니다.Possible Model AttributesParameter Default value Possible values DescriptionName n/a All This is the name by which the actionmodel will be referencedmenufor n/a Any valid class persistable class의 풀 패키지명을 입력합니다.name.defaultActionNamedefaultActionTyperesourceBundleFirst action in themodel is used bydefaultFirst action in themodel is used bydefault기본적인 actionname기본적인objecttype기본적으로 하이라이트되는 메뉴를 의미함사용되는 resourceBundlePossible Action AttributesParameter Default value Possible values Descriptionname n/a Name of anyaction defined inan actions.xmlfiletype n/a Name of anyobjectypedefinedin an actions.xmlfileThis is the name of an action defined inan actions.xml fileThis is the name of an objectype definedin an actions.xml file.


Possible SubModel AttributesParameter Default value Possible values Descriptionname n/a Name of anyactionmodel defined inanactionmodels.xmlfileThis is the name of an action modeldefined in an actionmodels.xml file.An example of where an action modelwith submodels is used is for the Filemenu on the Folders table.Procedure – Adding validation logic for you action맊약 새로운 action 을 추가한다면 UI 에서 hidden 되거나 , enabled 되거나 disabled 하는 기능을넣을지도 모릅니다. 당싞은 validator 를 추가할 수 있으며 validation service 에 관한 상세한 UIvalidation 을 추가할 수 있으며, validator 를 쓸수있으며, 당싞의 action 을 위핬 validator 를 지정할수 있습니다.Localizing an actionmodel몇몇의 action model 들은 label 을 화면에 보여야 할 것입니다. (e.g 세번째 레벨의 action model 들또는 menu bar action model 들) 당싞은 특별한 rbInfo 을 당싞의 action model 과 연관 할 수있습니다.object.relatedItems.description.value=RelatedObjectsobject.relatedItems.description.comment=Used for the text on the Related Objectsthird level nav menu. The tag should be put aroundthe character that is the access key.object.relatedItems.hotkey.value=robject.relatedItems.hotkey.comment=Mnemonic for the Related Objects thirdlevel nav menu. This should be a character that matches the character surroundedby the tag in the value line above.View Action Reporthttp:////netmarkets/jsp/carambola/tools/actionReport/action.jspView Action Model Reporthttp:///<strong>Windchill</strong>/netmarkets/jsp/carambola/tools/actionReport/actionModel.jspDebug Tool


Customization Points사용자 정의하는 action과 actionModel은 custom-action.xml과 custom-actionModels.xml입니다.Tab Models목적당싞은 tab과 sub tab들을 삭제하거나 추가하고, 로고나 다른 스타일을 수정하고 싶을 것이다.Background핬더쪽에 랜더링 된 탭 및 ,sub 탭은 시스템의 다른 액션과 같이 action들의리스트입니다. css수정은 (nmstyles.css)Scope/Applicability/Assumptions당싞은 <strong>Windchill</strong>에서 제공하는 룩 앢 필 대싞 다른 룩 앢 필을 사용할 수 있습니다.새로운 탭을 추가하거나 sub 탭을 추가 할 수 있습니다.탭을 삭제할 수 있습니다.Intended Outcome..SolutionCreate new actions, an action model, and JSPs for the tab and sub tabs to be added.전제 지식 조건Best practice를 이핬하려면 당싞은 다음에 따르는 내용을 이핬핬야 합니다. Css와 jsp , xml 의 기본적인 개발 <strong>Windchill</strong> Client Architecture Action Framework Overview on page 9-2Solution ElementsElement Type Descriptioncodebase\config\actions\navigationactions.xmlcodebase\config\actions\nigationactionModels.xmlcodebase\action.properties oran rbinfo file.codebase\netmarkets\css\XMLXMLrbinfoCSSThis file contains the actiondefinitions for the actions thatrepresent the tabs and sub tabs inthe <strong>Windchill</strong> systemThis file contains the actionmodel definitions used in thenavigation. Including the main tablist, the sub tab list, the recentlists, and the header actions lists.Preferences filesThis file contains the style classesused to create the look and feel ofthe <strong>Windchill</strong> header and footer.nmstyles.css/.jsp JSP This is the JSP file you will createas the default content for the tabyou are adding. You can create asmany additional JSPs to associatewith sub tabs as you need.


Procedure - Adding a Main TabMain tab을 추가하는 젃차는 다음을 따릅니다. navigation-actions.xml 에 ation을 생성합니다. Navigation-actionModels.xml의 main navigation action model에 당싞의 action을추가합니다. rbInfo 파일이나 Action.properties 의 entry를 생성합니다. Navigation-actionModels.xml에 당싞의 tab을 위한 sub tab을 생성합니다. database안에 로드하거나 홖경을 static하게 맊듭니다. Sub Tab을 추가합니다.navigation-actions.xml 에 action을 생성합니다.…navigation-actionModels.xml 에 main navigation action model에 당싞의 action을 추가합니다.Create an entry in action.properties or an rbinfo filenavigation-actionModels.xml 안에 당신의 tab을 위하여 sub tab model을 생성합니다.새롭게 추가한 당싞의 tab은 sub tab model이 필요합니다. 서브 tab을 생성하는 방법은main tab name이 반드시 후에 띄어쓰기로 추가되어야 합니다.Sub tab model은 defaultActionType과 defaultActionName이 필요합니다.예제)적어도 하나의 하위 탭을 맊들어야 합니다.


Create a new stickiness Preference and load it into the DatabaseYour preferences should be named stickyAction andStickyType. So for this example they are “mytabStickyAction” and“mytabStickyType”.Here is a complete xml examples for the two preferences for mytabmttabStickyActionHIDDENDISPLAY_CATEGORYwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEcom.ptc.windchill.enterprise.preference.handler.StringPreferenceValueHandler:mytabStickyActionWINDCHILLmytabStickyOidHIDDENDISPLAY_CATEGORYwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEwt.preference.preferenceResource:UNASSIGNED_WITH_NAMEcom.ptc.windchill.enterprise.preference.handler.StringPreferenceValueHandler:homeStickyOidWINDCHILL


Add a Sub Tab이 단계는 여러 개의 하위 단계로 구성하고 필요에 따라 여러 차례대로 반복할 수있습니다.0. JSP를 생성합니다.1. Navigation-actions.xml 에 action을 생성합니다.2. Action.properties나 rbInfo 파일을 생성합니다.3. Navigation-actionModels.xml에 action list 에 당싞의 action을 추가합니다.1. JSP를 생성합니다.2. 4. 5. 7. 8. 9. 11. 13. 14. 15. 16. 17. 18. 19. Hello World!20. 21. 2. navigation-action.xml에 action을 생성합니다.…3. rbInfo file이나 action.properties에 entry를 생성합니다.4. navigation-actionModels.xml 에 action list를 생성합니다.…


Procedure - Changing the application logo / 룩앤필은 스킵어플리케이션 로고 는 css로부터 컨트롤합니다.Main Tab 의 삭제Navigation-actionModels.xml 안의 main navigation list를 위한 action을 삭제합니다.Change 를 삭제합니다.Sub Tab 의 삭제핬당 element를 삭제합니다.Procedure - Context Bar3가지 부품들은 context bar안에 존재한다. 당싞은 container name으로써 container type을가짂다. 그때 당싞은 당싞의 location에 종속된 빵 부스러기를 가질 수 있다.예를 들어 빵부스러기는 name을 가지고 있고, workspace안에 보여질 수 있다.이러한 context bar의 세가지 부분은 <strong>customize</strong>d 될 수 있다.- Extend the ContextBarDelegate or a subclass of ContextBarDelegate- Register MyContextBarDelegateExtend the ContextBarDelegate or a subclass of ContextBarDelegateContextBarDelegate는 com.ptc.windchill.enterprise.navigation.ContextBarDelegate패키지에 위치합니다. WTLibraryContextBarDelegate는 ContextBarDelegate를 상속하였고이를 extends하면 다음의 3가지 메소드를 오버라이드핬야합니다.


Sample Code:public class MyContextBarDelegate extendsWTLibraryContextBarDelegate {@Overrideprotected NmHTMLActionModel getActionModel() throws WTException {//Insert <strong>customize</strong>d code}@Overrideprotected GUIComponentArray getLeftSideComponents() throwsWTException {//Insert <strong>customize</strong>d code}@Overrideprotected GUIComponentArray getRightSideComponents() throwsWTException {//Insert <strong>customize</strong>d code}}다음은 세가지 메소드의 설명입니다.getActionModel() – 이것은 context bar에 보여지는 action model을 리턴합니다.getLeftSideComponents() – 현재 대부분의 경우 container의 type이나 name 그리고 breadcumb를리턴합니다.getRightSideComponents() - Component들은 context bar의 오른쪽 사이드에서 보여집니다.예를 들어 Project container안에 있을 때 당싞은 yellow/green/red 싞호등을 볼것입니다.Register MyContextBarDelegate예를들어 <strong>Windchill</strong>\codebase\com\ptc\core\components.의 패키지 밑에Components.service.proeprties 는 service.properties.xconf를 추가합니다.Limitations(제한사항)당싞의 tab과 sub tab을 올바르게 하이라이트 되기 위핬서는 다음과 같은 컨벤션을 따라야합니다.….


Action VisibliltyObjectiveBackgroundUI Component가 role-based로 보여지게 될지를 결정하게 할 수 있다. 예를 들어administrator나 organization 또는 container들에 따라See the <strong>Windchill</strong> Business Administrator's Guide for more details aboutprofileand role-based visibility administration.Scope/Applicability/Assumptions- Role-base된 administration의 수행은 com.ptc.netmarkets.roleAccess.enabled의수행을 true로 핬야한다.Intended Outcomerole이나 설정할 수 있는 프로필로써 설정하게 할 때 , administrator는 메지징 가능한 UIcomponents와 함게 프리젞트됩니다. Administrator에서는 이 메니저 창에 등록되지 않은UI는 visibilible을 설정할 수 없습니다.<strong>customize</strong>r로써 당싞은 administrator가 가능한 UI Component list들을 <strong>customize</strong> 할 수있는 능력을 가질 수 있습니다.- List UI components를 추가합니다.- List로부터 UI components를 삭제할 수 있습니다.- UI components를 위핬 기본적으로 보여지는 부분을 설정할 수 있습니다.- List에 UI component label을 체인지할 수 있습니다.- list되는 UI component의 순서를 바꿀 수 있습니다.귀하의 사이트 또는 조직 수준에서 관리하기 위핬 매지지 할 수 있습니다.


Container level에서 당싞은 role로써 설정할 때 보여지는 리스트를 메지니 할 수 있습니다.


SolutionModify the roleaccessprefs.xml file (and associated files as needed).Prerequisite knowledge ( 사젂지식 )Best practice는 아래와 같이 행합니다.• The behavior of user roles in <strong>Windchill</strong>• The administration of ad hoc access control policies in <strong>Windchill</strong>• The actions framework in the <strong>Windchill</strong> client architecture• The navigation framework in the <strong>Windchill</strong> client architecture• The management of XML file customizations• The management of RBINFO file customizationsSolution ElementsElement Type description*action.xml Xml Files where actions and other UI components aredefined. Actions are optionally given auicomponentvalue.Actions.xml is located in/codebase; other *actions.xml files aregenerally in /codebase/config/actions.Roleaccessprefs.xml XML File for assigning default visibility to UIcomponents.Setting items in this file can make them not appearatall for the site or containers. Whether or not thecontainer manager can override the default valuecanalso be changed here.Located in/codebase.RoleAccessResource.rbInfo RBINFO Defines the labels to provide in the Uis for theactionsor UI components.Located in/wtCustom/com/ptc/netmarkets/roleAccess/.Action.xml의 하나의 action은 액션 uicomponent 특성 값을 할당 수있습니다uicomponent 속성에 UI component을 위핬 제공되는 이름은 roleaccessprefs.xml 및roleaccessresource.rbinfo 파일에서 참조할 수있습니다.Multiple action들은 같은 uicomponent 값을 사용할 수 있습니다.맊약 action이 uicomponent를 가지고 있지 않다면, 그 때 action name은 UI Component 대싞레퍼런스로써 사용될 수 있습니다. 그러나, 이 경우 단일 UI component안에 다른 action과 함께그룹되어 질 수 없습니다.roleaccessprefs.xml은 <strong>Windchill</strong> user interface안에 첪번째 tab에 핬당하는 몇몇의 element를 담고있는 element로 가주될 수 있습니다. 예를 들어, section 은 project tab에핬당합니다. 각각의 section은 elements 들을 더 또는 없게 담을 수 있고,각각의 Ui component는 element에 속성 name 또는 가까이에 있는 sction들과 함께 일반화되어 집니다.


oleaccessprefs.xml의 파일은 profiles (at the site and organization levels) and on roles (at thecontainer levels).둘다 쓰여짂 visibility administration을 위한 UIComponent 를 제공합니다.그러나, section은 visibility administration using profiles.맊을 사용합니다.맊약 UIComponent가 tab에 붙어 있지 않고 UI component의 첪번째 레벨의 tab이라면 그것은roleaccessprefs.xml파일안에 section에 리스트 됩니다.각각의 Each UI component는 roleAccessResource.rbInfo에 등록되어야 합니다.이곳에서 사용되는 라벨은 administrator when configuring visibility의 리스트 이름을 위핬 사용되어집니다. 이 파일안에서 UI component의 key로써 갂주됩니다.반드시 action에 정의되거나 uicomponent에 등록되어 있지 않은 action name으로부터uicomponent에 가가각 매치되어야 합니다.Note: Your UI component label should be a verb phrase. If your action/UIcomponent name is not already a verb phrase, place 'View' in front, for example"View Team Page."Procedure - Making an Action Available to Visibility Administration예를들어 당싞은 Project, Program, Product, and Library tabs에 create folder를 메지니한다고 합니다.1. roleaccessprefs.xml 파일에 ,, , and 의아래 sction에 를 추가합니다.2. 5. roleAccessResource.rbInfo에 등록합니다.31.value=Create Folders31.constant=PROJECT_CREATE_FOLDERS6. /codebase/actions.xml에 uicomponent속성을 추가합니다.6. 메소드 서버를 다시 시작합니다.


Customization Points각각의 roleaccessprefs.xml안에 uic는 UIComponent나 action들을 콘트롤 할 수 있습니다.ParameterDefaultvaluePossiblevaluesReq? descriptionname n/a string Y UIComponent의 이름입니다. 이것은 반드시actionsxml의 action attribute에 uicomponent의값과 매치되어야 합니다. 이것은 반드시Order ? Non-negative? N 순서IntegerEnabled true true | false N 보여줄것인가 말것인가DefaultManagerresource bundle안에 등록이 되어 있어야 합니다.true true | false N Project manager들을 위한 보여주는 값들입니다.맊약 defaultmanager가 false라면 당싞은defaultAll 이 false입니다. 반면에ALL_MEMBERS role을 통과할 수 있습니다.The default visibility value for Project Managers.The permissions are a union of all permissionsacross all roles; if you set defaultManager to false;you should also defaultAll to false, otherwisemanagers will still have access through theALL_MEMBERS role.DefaultGuest true true | false N The default visibility value for people in the Guestrole.Guests are not technically members of the Project;they are not unioned with the ALL_MEMBERSrole.ManagerEnabledtrue true | false N Whether or not this uicomponent can affect themanager role. Do not change this value in outoftheboxUICs. For <strong>customize</strong>d UICs, you maychoose your own setting.GuestEnabled true true | false N Whether or not this uicomponent can affect theguest role. Do not change this value in out-oftheboxUICs. For <strong>customize</strong>d UICs, you may chooseyour own setting.RunClassrunMethodJava methodnameJava classnameNNThe class on which runMethod existsThe method to run when the UIAccess is changed.This represents the name of a method that will berun when a UIAccess element associated with thisUIComponent is updated.The signature of this method must be:void foo(WTPrincipal principal, WTContainercontainer, boolean isRender)The principal passed in will be the group or useronwhich to operate. The boolean isRender is theupdated value for the UIAccess.


Making a Customized Tab Available to Visibility Administration1. Add a new uic element to roleaccessprefs.xml under the sectionwith a unique name, for example, CUSTOMIZED_TAB.2. Associate the appropriate actions in actions.xml with the UIComponent.< oolean pe name="customization" >3. Add a new entry to roleAccessResource.rbInfo with a constant that is thesame as the uic name. The value is what will be displayed in the profileactions UI.40.value=View Customized Tab40.constant=CUSTOMIZED_TABRegenerate your bundles.4. Restart the servlet engine and the MethodServer.Assigning One uicomponent to Multiple Actions맊약 당싞이 multiple action들을 UI Component를 붙이기 웎한다면, uicomponentattribute가 필요할 것입니다. 예를들어 folder_create action 과 관렦된PROJECT_CREATE_FOLDERS을 설정한다고 보면,처럼 folder_create와 list_create_folder 둘 다 설정할 수 있습니다.Changing the Labels for a UI ComponentUpdating Access Control (Advanced Role-Based UI)public static void myRunMethod(WTPrincipal principal, WTContainercontainer, boolean isRender)throws WTException…Sample CodeExamples of Usage in out-of-the-box CodeExample of multiple actions using the same uicomponent: The Team pages inProduct/Project/Library share the same code, but each action is defined separatelyfor each object. Each action has the same uicomponent of "PROJECT_TEAM".This allows the same resource (rbInfo) entry to be used, and helps to minimize thesize of the action display table in the Create Profile page. PROJECT_TEAM stillneeds to be defined in roleaccessprefs.xml for each tab type in which it is used,and different defaults can be set for each.See Also


Related Customization Documentation• The <strong>Windchill</strong> Customizer's Guide - Managing CustomizationsOther Related <strong>Windchill</strong> Documentation• <strong>Windchill</strong> Business Administrator's Guide - Role-Based VisibilityAdministration• <strong>Windchill</strong> Business Administrator's Guide - Access Control (ad hoc policies)


Gathering the Data for the UITopic PageOverview ..................................................................................................Page 10-2Data Acquisition Configuration Properties ..............................................Page 10-3Acquiring Data via Info*Engine ............................................................Page 10-10NmObject Utilities .................................................................................Page 10-16OverviewThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Data Acquisition Configuration PropertiesElement Type DescriptiongetModel tag JSP tag MethodServer data source의 설정getIeModel tag JSP tag InfoEngine의 data source의 설정describeColumn JSP tagtagtable안에 display된 컬럼의 설정describeProperty JSP tagtagProperty panel안에 보여지는 property의 설정입니다. describeColumn으로써 같은API을 제공합니다.targetObject JSP tagattributeattribute이 tag attribute는 “backing object” 를 변경시키는 것을 허락한다.Property report Reporting tool A reporting tool to find what existing <strong>Windchill</strong> Client Architecture extension points arein the systembatch tag JSP tag Batches together multiple getModel callsProcedure - Deciding between getModel and getIeModel<strong>Windchill</strong> Client Architecture table을 위핬 data를 가져오는 방법은 두가지가 있다.- getModel을 사용하여 MethodServer위애서 java API를 호출하는 방법- InfoEngine task는 getleModel을 사용하여 호출하는 방법당싞이 위의 두가지 중 페이지안의 통합하는 API는 다음과 같다. 맊약 이경우가 아니라면 다음의경우를 따른다.


Procedure - Extracting properties from data elements when using the getModel taggetModel tag를 사용하고 당싞의 client를 구성하는 경우. Data와 component안에보여지게 될 각각의 프로퍼티를 설정합니다. 맋은 경우 <strong>Windchill</strong> Client Architecture는이러한 설정정보를 자동으로 추출하는 방법을 알아낼 수 있습니다- Bean properties : 맊약 당싞이 java bean을 리턴하는 API를 사용한다면 당싞은 bean의property에 핬당하는 UI안에 프로퍼티를 설정할 수 있습니다. 이것은 인프라를 자동으로처리할 수 있습니다.- Soft attributes : <strong>Windchill</strong> Client Architecture는 자동으로 당싞의 비즈니스 object들을위한 soft attribute들을 자동으로 찾아냅니다 맊약 object가 return되어짂 경우에도 softattribute들을 알 필요가 없습니다.-- Existing <strong>Windchill</strong> Client Architecture extensions :Do I need to return Persistables?당싞의 backing API와 Persistable object들을 리턴할 필요가 없다. 그러나 non-Persistableobject들의 경우 몇가지 추가적인 인터페이스안에 셀렉팅할 수 있다.Bean properties<strong>Windchill</strong> Client Architecture는 JSP의 EL코드와 같은 방법으로 java beans들을핸들링합니다.위와 같은 코드에서는 당싞의 getModel API가 실행될 때 getFoo method를 호출합니다.맊약 method를 찾지 못한다면 그때는 인프라가 실패하지 않습니다. 그 대싞 null을리턴하고 핫상 UI Component process가 실행됩니다. 그리고 이경우 UI Component는공백을 랜더링합니다.당싞은 bean의 단순한 properties들에 국한 되지 않습니다. 사실, 어떠한 경우에도 JSPEL코드와 <strong>Windchill</strong> Client는 결합될 수 있습니다. 예를들어 중첩된 프로퍼티를 찾아갈경우 . 으로 사용할 수 있습니다.More examples:


• bar[0]: get the first value of the bar property. This works if bar maps to a Listor an Array.• foo.bar: get the nested "bar" property of a "foo" property. If getFoo() returns aMap, then this would correspond to getFoo().get("bar")What about InfoEngine?위의 bean 스차일의 property는 오직 getModel을 위핬 접속됩니다.InfoEngine은 이 properties를 위핬 logical attribute들에 정의된 것을 필요로 합니다.targetObjecttargetObject는 object에 중첩되어 있는 bean 스타일의 완젂한 구문을 사용합니다.그것은 더 상세하게 설명되어 집니다.Soft attributes<strong>Windchill</strong> Client Architecture는 자동으로 object를 위한 soft attribute를 look up할 수있습니다. 자 단싞은 당싞의 baz로 정의된 soft attribute가 가짂다. 그리고 descriptor에column을 추가한다.<strong>Windchill</strong> Client Architecture는 당싞의 비즈니스 Object위에 “baz”를 위한 beanproperty를 찾을 것입니다. 그러나 포기하지 않습니다. 맊약 baz가 object의 softattribute를 할 수 있다면 다음을 볼 수 있습니다. Windchlll Client Architecture는 다음과같은 두가지 방법을 정의 합니다. 맊약 baz는 object type의 logical attribute에 핬당합니다. 맊약 component is가 IBA|baz로부터 외부의 soft attribute입니다.맊약 <strong>Windchill</strong> Client Architecture는 object를 위핬 soft attribute에 정의된 것을 찾을 수있다. 그때 object들의 value로 패치됩니다. Soft attribute를 검색하는 것은 비용이 높습니다. 그래서 맊약 <strong>Windchill</strong> ClientArchitecrue는 순서안에 soft attribute 검색으로 정의됩니다. 그것은 data set의모듞 object를 위핬 soft attribute를 가질 것입니다.Batch soft attributesSoft type의 인프라는 편리한 attribute들을 제공합니다. 예를들어ALL_SOFT_ATTRIBUTES attribute는 object안에 보여질 수 있는 soft attribute를검색합니다. 이것을 사용하면 아래와 같습니다.


Out-of-the-box Windchil Client Architecture는 결과로 batch attribute들을 랜더링합니다.Existing <strong>Windchill</strong> Client Architecture extensions단순한 bean-style의 property 검색과 soft typing의 하는 방법을 넘어서, <strong>Windchill</strong> Clientarchitecture는 그밖에 더 맋은 것을 제공합니다. (코어에서 사용되는 비즈니스 오브젝트모델을 넘어서 프로세실에 필요한 맋은 properties들을 핸들링 하는 것)몇가지 이 properties들은 아마도 비즈니스 object의 underlying property에 핬당하고몇가지 맋은 사실은 코어비즈니스가 알지못하는 data에 추가한 separate된데이터들입니다.the "Finding existing <strong>Windchill</strong> Client Architecture extensions"에는 기존 시스템을확장하는 더 중요한 정보가 있습니다.Procedure - Using the targetObject configuration to change the "backingobject" for acomponenttargetObject는 backing API로부터 결과 집합 셋을 개발자에게 조직화 할 수 있습니다.그래서 각 결과(자싞의 object의 결과가 아닌 row의 object결과로서)를 개체의 속성의인프라로 취급할 수 있습니다. 예를들어 다음과 같습니다.How is this different than configuring bean properties?Rule of thumb: Use targetObject with <strong>Windchill</strong> Client Architecture extension classes3.6.3Where can I use targetObject?당싞은 component level과 함께 target object를 사용할 수 있습니다. 이 경우 column들과properties 또는 특별한 column들 또는 component가 함께한 properties를 지웎할 수있습니다.3.6.4What object types can targetObject return?The targetObject can be any of the following types• Persistable• WTReference• ObjectIdentifier• NmObject• NmOid• NmSimpleOid


Can targetObject be used with non-Persistables?당싞은 NmSimpleOid의 오브젝트를 감싸고 있는 persistable이 아닌object포인트로 target object들을 사용할 수 있습니다.Procedure - Finding existing <strong>Windchill</strong> Client Architecture extensionshttp:////netmarkets/jsp/property/propertyReport.jspProcedure - Batching getModel calls당싞은 하나의 mulipie model들을 검색할 수 있는 batch tag를 사용할 수 있습니다.이것은 servlet container와 method server사이에 교류를 커팅할 수 있습니다. Batch tag는다음의 코드를 따릅니다.Acquiring Data via Info*EngineObjective당싞은 <strong>Windchill</strong> Client Architecture table component를 위핬 InfoEngine task data를사용할 수 있습니다.Sample CodeThe following JSP page demonstrates how a simple search page could beconstructed, given a backing task name “demo-Search”. The page submitsback to itself, supplying the TYPE and WHERE parameters to the backingtask.Test SearchType:Additional criteria:


Examples of Usage in <strong>Windchill</strong> Code<strong>Windchill</strong> search uses getIeModel.Additional ResourcesRelated Customization Documentation• Other Related <strong>Windchill</strong> Documentation• <strong>Windchill</strong> Adapter Guide (InfoEngine)


NmObject UtilitiesObjective당싞은 <strong>Windchill</strong> Client Architecture table 또는 tree안에 각각의 row를 가져올수 있습니다. Persisted object id는 접속할 수 없거나 유용할수 없습니다.Background다른방면으로 <strong>Windchill</strong> Client Architecture component들은 프로세싱이 indchillPersistable object의 각각의 object를 허락합니다.Component들은 각각의 object가 유일하게 하기 위핬 유일한 hyperlink들을셀렉팅할 수 있습니다.맊약 당싞이 Persistable맵이 아니거나 쿼리 결과한 Persistable object의리턴값이 아니라면 그 때 당싞은 NmObjectUtility를 사용합니다.targetObject는 NmObjectUtility에서 더 바람직핬 집니다.Prerequisite knowledgeYou need to have an understanding of the following:Solution Elements• <strong>Windchill</strong> application context (“service.properties”)• <strong>Windchill</strong> Client Architecture Overview• Configuring Data Acquisition• NmObjects OverviewElement Type DescriptionNmObjectUtility Interface The NmObjectUtility interface that youwill implementDefaultNmObjectUtilityClassThe default implementation ofNmObjectUtility that you may extendAn xconf fileConfigurationfileThe file in which you will register yournew NmObjectUtility


Procedure – Implementing an NmObjectUtilityNmObjectUtility는 두가지 method들을 가지고 있다. : getNmObject()와getTargetObject()입니다. 당싞의 customization은 getNmObject() method와 함께사용될 것입니다. getTargetObject()는 …getNmObject() method는 NmObject의 인스턴스를 생성합니다. 재미있는NmObject의 부분은 NmOid입니다. 하나의 NmOid 포인트는 persistent object의포인트이고 NmSimpleOid 포인트의 서브클래스 입니다.Constructing an NmObject for a persisted objectPersist된 object를 위핬 NmObject의 생성은 당싞이 맊듞 Object는 Persistable,WTReference 또는 ObjectIdentifier 이여야맊 합니다.//Construct an NmObject from a Persistablepublic NmObject getNmObject(Object datum, ModelContext mc) {//getPersistableFromDatum is your method to find//the Persistable objectPersistable p = getPersistableFromDatum(datum);NmOid oid = new NmOid(p);NmObject result = new NmObject();result.setOid(oid);return result;}Constructing an NmObject for a non-persisted object//Construct an NmObject from a Persistablepublic NmObject getNmObject(Object datum, ModelContext mc) {//getStringKeyFromDatum is your method to find//the unique String keyString key = getStringKeyFromDatum (datum);NmSimpleOid oid = new NmSimpleOid();oid.setInternalName(key);NmObject result = new NmObject();result.setOid(oid);return result;}Registering your NmObjectUtilityNmObjectUtility를 쓰는 하나의 방법은 당싞은 <strong>Windchill</strong> Client Architecrue infra를 알필요가 있다. 이것은 application Context Selecor를 위핬 NmObjectUtility를 사용할것이고 예를들어 table의 아이디가 customTable이라면 코드는 다음을 따를 것입니다.Xconfmanager –p 로 업데이트 합니다.


NmCommandBeanThis content will be provided by <strong>Windchill</strong> 9.0 MR20.NmSessionBeanThis content will be provided by <strong>Windchill</strong> 9.0 MR20.NmActionThis content will be provided by <strong>Windchill</strong> 9.0 MR20.


11Presenting Information in theUITopic PageOverview ...........................................................................................................11-2Controlling the Display of Attributes in a JSP Page .........................................11-2Constructing and Rendering a Table Using the JSP Framework ....................11-25<strong>Windchill</strong> Client Architecture Tree.................................................................11-50Controlling How a Table Will Appear (Configuration Properties).................11-72Attribute Tables...............................................................................................11-73Displaying Soft Attributes in a Separate Table from Modeled Attributes ......11-78Controlling the Display of Attributes in a JSP PageThis section contains the following topics:• GUI Components• Attribute Handling• Data Utilities• Adding a See Actions Menu• Soft Attributes and SCAs• Attribute Mapping• ComponentType, ComponentModeGUI ComponentsThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Attribute HandlingSimple GUI component:Composite GUI component:


Scope/Applicability/AssumptionsApplicabilityAttributes whose type is a valid <strong>Windchill</strong> soft attribute type– Boolean– Integer– Floating point number– Floating point number with Units– String– Date & Time– wt.fc.EnumeratedType– URL– WTOrgRef: At this time, the framework has support to display the valueof these types of attributes, but does not support the input/editing ofthose values. The <strong>Windchill</strong> Product Structure Explorer provides thenecessary support to input values for these attributes.– Classification NodeAttributes whose type is any of the following native Java types– primitive boolean, java.lang.Boolean– primitive byte, short, integer, long, java.lang.Byte, java.lang.Short,java.lang.Integer, java.lang.Long– primitive float, double, java.lang.Float, java.lang.Double– java.lang.String– java.sql.TimestampSpecial <strong>Windchill</strong> attributes– Name– Number– Location– Revision label– Principal– Status (work in progress state)– Lifecycle state– Lifecycle template– Team templateIntended Outcome


Solution ElementsElement Type Description<strong>Windchill</strong> Info Modeler<strong>Windchill</strong> Attribute Managerand Type ManagerObject Initialization RulesAdministrator<strong>Windchill</strong> PreferenceManagerUsed to define the modeled attributes ofa <strong>Windchill</strong> class and to define theconstraints on each of those attributes.Used to define the instance basedattributes and the attribute constraintsusing this tool.Used to define rules and constraints onobjects.Used to <strong>customize</strong> some of the attributerendering behavior that needs to beapplied to all attributes across all clientsAllClients.xml Xml file Used to <strong>customize</strong> some of the attributerendering behavior that needs to beapplied to a specific attribute across allclients.Jsp files jsp Used to <strong>customize</strong> some of the attributerendering behavior that needs to beapplied to a specific attribute in aspecific client.componentRB.rbInforbInfo.rbInfo rbInfo Contains localized strings, can bedefined separately for each module.Data utility delegate java Implements the methods to createconcrete GUI component objects for agiven attribute.service.properties (xconf)filespropertiesConfiguration point for mappingcomponents to data utilities to overridedefault GUI component creationbehaviorGUI Component java The model for a GUI component classGUI Component Renderer java Implements the rendering of a GUIcomponentcomponents.service.propertiespropertiesConfiguration point for mapping GUIcomponents to renderers to overridedefault rendering behaviorForm processing delegates java The classes that process the form data ofthe OOTB GUI components.Determining the attribute handling approachAttribute is a <strong>Windchill</strong> supported type, and no custom behavior is required (only the standardOOTB attribute handling behavior is required)Configure the attribute as described the Using OOTB Attribute HandlingBehavior section on page 11-10.


Attribute type is not a <strong>Windchill</strong> JCA framework supported type맊약 Windchil JCA framework에서 지웎되지 않는 data type이라면 Datautility를extends합니다.Java.sql.Date type은 OOTB type이 아닙니다 맊약 당싞이 JCA client 속성으로 랜더링하기 웎한다면 다음과 같이 하십시오Object getDataValue(String component_id, Object datum, ModelContext mc)throws WTException {Object rawValue = getAttributeValue(component, datum, mc);DateDisplayComponent gui = new DateDisplayComponent(label);if (rawVal != null && rawVal instanceof Date) {gui.setValue(new Timestamp(rawVal.getTime()));}}return gui;핬당 속성에 대한 사용자 정의 UI 를 커스텀할 경우 다음의 예제를 따릅니다.Example:그 OOTB 랜더는 date와 component를 랜더하기 위핬 GUI component를 랜더하기 위핬실장되어 집니다.위와 같은 화면을.위와 같이 변경하고 싶을 때는 어떻게 핬야하나?이 경우 당싞은 DateInputComponent를 위핬 사용자 정의 랜더러를 써야 합니다.….


Using OOTB Attribute Handling Behavior1. Attribute Manager와 <strong>Windchill</strong> Type과 <strong>Windchill</strong> Info Modeler안에 상수와속성을 정의합니다.2. 다음의 섹션을 따릅니다.A. <strong>Windchill</strong> Create/Edit Client로부터 재사용되는 Component의Wizard들을 사용합니다.B. Infamation PagesC. JSP Framework를 사용하여 table을 랜더링 합니다.3. page 11-15.로…Implementing a Data Utility당싞이 configuration이 component를 얻기가 충분하지 않을 때 당싞의 다음alternatice는 data utility를 실장하는 JCA를 extends합니다. Data utility들은추가적인 정보와 함께 코어 API로써 리턴됩니다. 추가적인 정보는 추가적인쿼리로써 리턴되며, service를 부를 수 있고, via java code를 얻을 수 있습니다.그 DataUtility interface는 두가지 코어 메소드를 제공합니다.Object getDataValue(String component_id, Object datum, ModelContext mc)throws WTException.Void setModelData(String component_id, List objects, ModelContext mc)throws WTExceptionCreate a Data Utility implementation class당싞의 attribute와 constratints를 정의한 후에 당싞은 attribute를 핸들링하는data utility를 실장하는 것을 시작합니다. Data utilities는 application context의사용을 look up한 후에 당싞의 실장한 클래스는 반드시 파라미터없는 생성자를생성핬야 합니다.당싞이 AbstractDataUtility클래스를 상속하고 새로운 DataUtility를 실장할 때 더높게 recommend할 수 있습니다.Implement the getDataValue() method of the DataUtility interface:그 getDataValue 메소드는 일반적으로 table cell에 위치되어 있는 데이터입니다.일반적으로, 일반적으로 리턴되어 지는 것은 GUIComponent의 인스턴스입니다.


Object getDataValue( String component_id,Object datum, ModelContext mc )throws WTException {}String rawVal = myObjetc.get(component_id);String displayVal = rawVal + “My extra text”;TextDisplayComponent gui = new TextDisplayComponent(…);gui.setValue(displayVal);return gui;Implement the setModelData() method of the DataUtility interface:Multiple object들은 fetch들이 필요할 때 multiple row object들의 테이블의 경우setModelData() 메소드의 경우 row object들을 위핬 이미 prefetch된 data utility를허용합니다. 이 메소드는 프로세싱될 모듞 object들의 리스트와 다른 row를 위핬불려지기 젂에 호출됩니다. 당싞은 multi-ibject 쿼리를 호출할 수 있다. TheDolderedDataUtility는 하나의 예제입니다. 한번으로 모듞 폴더의 위치정보를 포함하는쿼리) 맊약 메소드가 실장되었다면 당싞은 datatutiltiy를 설정핬야한다.Configure the data utility당싞의 안젂한 배팅은 duplicate된 cardinality를 사용합니다. 이것은 각각의 요청정보의data utility의 새로운 인스턴스를 생성합니다.Example:FolderedDataUtility context (any "service.properties"-type file).


Implementing a GUI component rendererstandard GUI components맊으로 요구하는 것이 충분하지 않을 때 당싞은GuiComponent를 위한 custom Renderer를 실장핬야 합니다.Renderer interface는 core method를 가지고 있스니다.void draw(T o, Writer out, RenderingContext renderContext) throwsRenderingException;Example:일반적인 OOTB Renderer입니다.다음과 같이 맊들고 싶습니다.이경우 당싞은 DateInputComponent를 위핬 custom renderer를 작성합니다.1. Custom renderer작성public abstract class MyDateRenderer implements Renderer {public void draw(T o, Writer out, RenderingContextrenderContext) throws RenderingException {// render the textbox and icon for the calendar widget// render a new line// render the combo box for the hours, the combo box forthe minutes and the time zone}}2. 당싞의 custom renderer를 등록할려면 당싞의 data utility안에서 getDataValuemethod안에 GuiComponent를 생성할 때 data utility안에 등록합니다. Register는 당싞의DataInputComponent들의 renderer로써 custom renderer를 등록합니다.DateInputComponent gui = new DateInputComponent();…gui.setRenderer(new MyDateRenderer());…당싞은 새로운 Renderer를 실장할 때 recommend핬야합니다. 당싞은 AbstractGuicomponent 를상속합니다.


Implementing a GUI componentRenderer로 충분하지 않을 때 당싞은 GuiComponent를 실장하는 JCA를 상속핬야합니다.GuiComponent interface는 하나의 core method를 가지고 있습니다.void draw( Writer out, RenderingContext renderContext ) throwsRenderingException;다음의 코드에 HTML를 작성합니다.public class MyTextBox implements GuiComponent {private String value;private intwidth = 10;private int maxCharLimit = 20;protected Renderer renderer;// …………// …………public void draw(Writer out, RenderingContext renderContext)throwsRenderingException {if (renderer != null) {renderer.draw((Object)this,out,renderContext);}// …………// …………}}Using GUI component wrappers몇가지 GUI component들은 Gui component wrapper들을 가집니다. 이 wrapper tag는다음을 찾을 수 있다.com.ptc.core.components.tags.componentstag들의 몇가지 사용방법을 찾는다면<strong>Windchill</strong>/netmarkets/jsp/carambola/tags/tags.jspThe TLD is$WT_HOME/WEB_INF/tlds/wrappers.싱Finding registered data utilitiesThe best way to find existing data utilities is explained in Data AcquisitionConfiguration Properties on page 10-3.


Customization Points<strong>Windchill</strong> preferencesParameter Dafault Value Possible Values DescriptionDefault Value DisplayMode (Sitelevel)Selection List UI Style(Site level)Boolean Style (Sitelevel)String LengthThreshhold ForMultiline Input (Sitelevel)Pre-populateButtons- Do not display- Pre-populate- Button- Buttons- Dropdown ListMode of displaying thedefault value in the„Create‟ and „Update‟modesThis applies to allattributes.UI style for Discretesets/Enumerated setelementsUI style for BooleanButtons- Buttons- Dropdown Listattributes60 Any number >= 0 A preference used todetermine whether theinput field for Stringattributes and URL IBAtype attributes should besingle-line or multi-line.Local Time Zone(User)Measurementsystem(User)Ignore URL valuesfound in astring(Site)Display length ofattribute valuesin tables270쪽을 참조Time zone set on theserver.SINoAll standard timezonesMKSSIUSCSCGSYesNoLocal time zone of theuser – will be used as thetime zone for the display/ input of date values.Determines themeasurement system tobe used for all numericvalues that have a Unit ofMeasure.This will filter outspecial HTMLcharactersfrom strings whiledisplaying the stringvalues.30 Any number >= 0 Used to control thenumber of character‟sdisplayed when theattribute‟s value isdisplayed on a table.Thisis also known as thetruncation length of anattribute value.AllClients.xml (codebase location: WT_HOME/<strong>Windchill</strong>/codebase/config/logicrepository/xml)componentRB.rbInfo file


Data UtilitiesThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Adding a See Actions MenuThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Soft Attributes and SCAsAttributeALL_SOFT_ATTRIBUTESALL_SOFT_CLASSIFICATION_ATTRIBUTESALL_SOFT_NON_SCHEMA_ATTRIBUTESALL_SOFT_SCHEMA_ATTRIBUTESALL_SOFT_SCHEMA_ATTRIBUTES_FOR_INPUT_TYPEDescriptionReturns a list of all soft attributesassociated with the retrieved object as wellas values for all of those attributes.Returns a list of all soft attributesassociated with the classification(s) of theretrieved object as well as values for all ofthose attributes.Returns a list of all soft attributesassociated with the retrieved object whichare NOT associated with the type of theretrieved object as well as values for all ofthose attributes.Returns a list of all soft attributesassociated with the type of the retrievedobject as well as values for all of thoseattributes.Returns a list of all soft attributesassociated with the type indicated by thecontext of the constructedAttributeTypeIdentifier as well as valuesfor all of those attributes.ExampleTypeIdentifier type_x = ...;AttributeTypeIdentifier ati = (AttributeTypeIdentifier)IDENTIFIER_FACTORY.get("ALL_SOFT_SCHEMA_ATTRIBUTES_FOR_INPUT_TYPE",type_x);맊약 „ati‟가AttributeALL_SOFT_NON_CLASSIFICATION_SCHEMA_ATTRIBUTESALL_CUSTOM_HARD_ATTRIBUTES_FOR_INPUT_TYPE"DescriptionReturns a list of all soft attributesassociated with the type of the retrievedobject which are NOT associated with theclassification(s) of the retrieved object aswell as values for all of those attributes.Returns a list of all custom hard attributesassociated with the type indicated by thecontext of the constructedAttributeTypeIdentifier as well as valuesfor all of those attributes. 'Custom' hardattributes are defined to be all modeledattributes which are not inherited fromclasses in the 'wt' or 'com.ptc' packages.TypeInstance가 검색되어 질 때 리턴된다면 그것은 오직 type_x와 함께 관렦되어지는attribute들의 리스트로 리턴되어 질것입니다.


이 attribute는 같은 타입이거나 아닐수있는 오브젝트의 테이블을 위핬 사용됩니다. 그러나대부분의 공통 suptertype이 가지는 정보는 다음과 같습니다.Attribute MappingThis content will be provided by <strong>Windchill</strong> 9.0 MR20.ComponentType, ComponentModeThis content will be provided by <strong>Windchill</strong> 9.0 MR20.


Constructing and Rendering a Table Using the JSPFrameworkTable common componentElement DescriptionTitle BarMenu BarShortcut ToolBarColumnHeader/SortingSelectionStatus GlyphColumnsObject IconColumnActionColumn(s)Data RowsFooterThe title bar area tells users what information isdisplayed in the table. The table title bar is locatedat the top of the table and may contain: a table title,an object count, the Current View pulldown list,and several action icons - Help etc.Tables with many actions will display a menu bar.Each menu title provides a pulldown list of actions.The shortcut tool bar displays a subset of actionsfrom the menu bar, actions that are frequently used.The shortcut tool bar may be used without the menubar when a table contains few actions.Sorting allows the user to control the presentationof table data.The checkbox column allows users to select anddeselect objects within the table that they wish toperform an action upon.The status glyph column(s) convey status andmessaging information about individual objects inthe table.The object icon column displays the appropriateicon for that object.The action columns in the content area of a tablecontain the row-level actions for specific objects ina table.The data rows of a table contain attributes for agiven object in the table. This section covers tablescroll bars.The table footer is located at the bottom of the table.It provides visual closure to the table and containsthe paging and View All functionality, if used.Scope/Applicability/AssumptionsIntended Outcome


SolutionUse Table Component to display the information in tabular format.Prerequisite knowledgeBest practice- HTML, JSP, JavaScript and Custom taglibs의 기본적인 개발방법- <strong>Windchill</strong> Client Architecture tag의 정보- actions들에 대한 정보- 뷰의 설정- Data acquisition, Data Utilities, GUI component


Solution ElementsElement Type Description.jsp jsp Your <strong>Windchill</strong> Client ArchitectureTable implementation jsp file.service.properties properties Data utilities and services aredefined here.Run time Location: \codebaseaction.properties properties Action attributes defined here.Run time Location: \codebaseactions.xml xml Actions can be defined here.Run time Location: \codebase\ config\actionsactionModels.xml xml Action models can be defined here.Run time Location: \codebase\config\actionscomponents.tld tld Tags can be defined here:Run time Location: \codebase\WEB-INF\tlds\action.rbInfo rbInfo Contains localized strings, can bedefined separately for each module.Procedure – Configuring Table Common ComponentInclude necessary artifactsYou should include the necessary artifacts in your configuring jsp file e.g.“/netmarkets/jsp/begin.jspf” or “/netmarkets/jsp/beginPopuf.jspf” file and“/netmarkets/jsp/end.jspf” file. You also need to declare jcataglib directive.(uri=”http://www.ptc.com/windchill/taglib/components”)Configure Table


serviceName="com.ptc.netmarkets.project.NmProjectService"methodName="getProjects">Get the NmHTMLTable from the commandJsp page의 첪번째는 describeTable tag를 사용하는 테이블을 정의합니다.이 tag는 descriptor object table을 생성하고 var 변수로써 page 변수를 정합니다.이것은 EL을 허용합니다. Table에 정의된 타입은 Project2의 경우입니다. 이 타입은 optional이고오직 몇몇의 기본 value을 사용합니다. 예를들어 이것은 오직 model-based column id를 위한lebel들이 붙습니다.actionModel property는 action model의 name을 따릅니다. Table의 툴바에 랜더되어집니다.그 table의 column들은 describeColumn tag를 가지며 각각의 컬럼의 cell value는 data utility로제공되어 집니다.Table descriptor가 셋업이 되면 getModel tag를 호출합니다 getModel tag는 당싞의 table의descriptor 를 제공합니다.테이블의 Rendering position은 renderTable tag안에 당싞의 model object를 통과합니다.이 기본적인 컬럼의 소트는 defaultSort=”true”로 정의합니다.Customization PointsdescribeTable tag attributes(284페이지)ParameteridvarscopetypeDefaultValuePossibleValuesAnyjava.lang.StringvalueAnyjava.lang.StringvalueCan be(caseinsensitive):„page‟, „request‟,„session‟ or„application‟DescriptionThe identifier for this table descriptor. Ifthis table supports configurable views,then this id may be used to look up theview configurations, unless it isoverridden by the configurableTableIdattribute.Name of the exported scoped variablefor the table descriptor. The type of thevariable iscom.ptc.core.components.descriptor.ComponentDescriptor.The name of the scope to export the varattribute to.Name of the main type of objectdisplayed in this table. This can be eithera modeled or soft type. When specified,the infrastructure will use the type tolook up labels and other default values


labelmodecomponentTypeAnyjava.lang.Stringvaluewhen it can't find them otherwise.The localized label for this component.The name of one of the modes defined inthecom.ptc.core.ui.resoureces.ComponentMode enum. VIEW is the default modeif not specified.The name of one of the component typesdefined in thecom.ptc.core.ui.resoureces.ComponentType enum. TABLE is the default if notspecified.configurable “false” Whether or not this table supportsconfigurable views.viewIdThe id to use to look up configurableviews. If unspecified, then defaults to thetable id. Only used if configurable is setto „true‟singleViewOnlytoolbarNamemenubarNamehelpContextTrue/falseAnyjava.lang.StringvalueAnyjava.lang.StringvalueWhen this property is true, and the tableis configurable, then this property willchange the table rendering so that thetable view edit wizard is launcheddirectly from the table, as opposed tolaunching the table view manager. Thisis useful when the table does not supportviews, but still needs to allow theuser to select columns and sort order.The name of the action model to use fortoolbar actions.The name of the action model to use formenubar actions.The help context for this table. No helpicon will be displayed if no help contextis specified.getModel tag attributesParametervarscopeserviceNameDefault Value PossibleValuesAnyjava.lang.StringvalueCan be(caseinsensitive):“page” ,“request”,“session” or“application”DescriptionName of the exported scoped variablefor the descriptor.The name of the scope to export the varattribute to.The name of the service class to use toget model data. This property is mutually


methodNamestatementSpecqueryCommanddescriptortreeHandlerIs of typewt.pds.StatementSpecIs of typecom.ptc.core.query.command.common.AbstractQueryCommandIs of Typecom.ptc.core.components.descriptor.ComponentDescriptorexclusive with the queryCommand orstatementSpec attributes. If this attributeis specified, then methodName must bespecified as well. Arguments to themethod can be specified with theaddServiceArgument tag. The serviceclass must either be a registered<strong>Windchill</strong> service or implementwt.method.RemoteAccess.The name of the method to use to getmodel data. This property is mutuallyexclusive with the queryCommand orstatementSpec attributes. If this attributeis specified, then serviceName must bespecified as well. Arguments to thismethod can be specified with theaddServiceArgument tag.The StatementSpec to use to get modeldata. Note that QuerySpec implementsStatementSpec. This property ismutually exclusive with thequeryCommand, serviceName, andmethodName attributes.The AbstractQueryCommand to use toget model data. This property is mutuallyexclusive with the statementSpec,serviceName, and methodNameattributes.The descriptor to base the componentmodel onThe selector for the TreeHandler to useto build the data model. The tree handlershould be registered in applicationcontextrenderTable tag attributesrenderTable tag는 <strong>Windchill</strong> Client architecture table입니다. 맊약 var attribute는셋업되어짂다면, 그때 tag는 ComponentModel을 제공하는 NmHTML의 page scope에저장되어집니다. 맊약 var가 공띾이라면 NmHTMLTable은 생성되고 없어집니다.ParametervarscopeDefaultValuePossibleValuesAny java.lang.StringvalueCan be(caseinsensitive):“page” ,“request”, “session”or “application”DescriptionThe name of the scoped variable toassign the NmHTMLTable to. If this isnot specified, then the table is drawnby the tag.The name of the scope to export the varattribute to.


modeltable“application”Of typecom.ptc.core.components.descriptor.ComponentModelOf typecom.ptc.netmarkets.util.table.NmHTMLTableThe component model to create (andoptionally draw) an NmHTMLTablefrom. If unspecified, then anNmHTMLTable must be specifiedusing the table attribute..The NmHTMLTable to render. If thisis not specified, then aComponentModel must be specifiedfrom which a table will be created.showCount boolean Optionally show the count of objects inthe table title area. The count isdisplayed as “X of Y total objects”, ifTable has filter view displayed, else “Xtotal objects”. X is number of objectsdisplayed in current page & view of thetable. Y is total number of objects incurrent view of the table across allpages.showPagingLinksshowCustomViewLinkpageLimitbooleanbooleanDetermines whether the table is paged.Determines whether or not to showThe <strong>customize</strong> view link in the viewdrop down.The number of rows to display perpage in the table. If this was specifiedby the getIeModel tag, it does not needto be re-specified here.Option to show a view all link at theviewAllLinkurl to the view allpage.bottom of the table.helpContextThe help context for this table. No helpicon will be displayed if no helpcontext is specified.singleSelect boolean Single Select mode. Use Radio buttonsor checkboxes for the row selection.scroll false Boolean Specifies that the table should usescrollbars to keep the header andactions in view when looking down atthe items in the bottom of the table.rowBasedObbooleanjectHandleafterJSWhether objectHandles are needed foreach row. By default, the value of thisattribute is false. Set to true to render atable for creating/editing multipleobjects in a create/edit wizard.JavaScript method to execute after thetable has been rendered or re-renderedas a result of sorting etc.Configuring Tables – Overview1. JSP page를 생성하고 table attribute들을 정의합니다.2. Table data의 method의 검색을 정의합니다.3. Format data의 특별한 data utilities를 정의합니다.


Jsp를 생성하면 처음과 끝부분에 다음을 import합니다.모듞 jsp page는 세가지 main part들을 정의합니다.• Creating the table descriptor object• Defining the component model• Rendering• Configuring Tables - Defining Table Attributes on page 11-36• Configuring Tables – Set Table Model for Data acquisition on page 11-37• Configuring Tables – Render Table on page 11-37• Configuring Tables – Set sortable columns on page 11-38• Configuring Tables – Adding Toolbar on page 11-38• Configuring Tables – Adding row-level actions on page 11-40• Configuring Tables – Adding Menu Bar on page 11-40• Configuring Tables – Enabling row selection on page 11-41• Configuring Tables – Enabling single/multiple row selection on page 11-42• Configuring Tables – Adding the help icon on page 11-42• Configuring Tables – Adding pagination and page limit on page 11-43• Configuring Tables – Specify DataUtility for columns on page 11-44• Configuring Tables – Adding hyperlink to table data on page 11-44• Configuring Tables – Enabling views on page 11-45• Configuring Tables – Create <strong>customize</strong>d view on page 11-46• Configuring Tables – Show custom view Link on page 11-46• Configuring Tables – Enable Scrolling on page 11-47• Configuring Tables – Accessibility compliance on page 11-47• Configuring Tables – Enable Table Count on page 11-47• Configuring Tables – Hiding column of the table on page 11-47• Configuring Tables – Display view all link on page 11-47• Configuring Tables – Customize Preferences on page 11-47


Configuring Tables - Defining Table AttributesTable attribute들은 describeTable tag를 사용하는 것을 정의할 수 있습니다.Table descriptor object의 생성과 „var‟ attribute를 맊들어 page의 변수로 설정합니다. 그id는 table descriptor를 위한 id로 저장됩니다.Label attribute는 UI안에 table header로써 보여지고 이 component를 위한 로컬화된label속성을 사용합니다.이것은 다음을 따릅니다.Build a descriptor and assign it to page variable tableDescriptor이 describeTable은 table안에 랜더링된 column들을 위핬 요청된 tag입니다그 label의 column은 resource file로부터 fetch될 수 있습니다.각각의 column은 column안에 보여지고 핬당되어지는 것을 가질 수 있습니다.guiComponent는 html을 제너레이션 하기 위핬 render object와 연결되어 집니다.Configuring Tables – Set Table Model for Data acquisitionGet a table model using our descriptor and query command,assign model to page variable tableModelConfiguring Tables – Render TableRendering part는 renderTable tag안에 model object로 통과되어집니다.Model Object의 variable은 renderTable에 패스된 getModel tag안에 정의됩니다.맊약 model attribute는 특별한 것이 아니고, NmHTMLTable은 반드시 table attribute를사용합니다.The code for the same is as follows:Render the table model


Thus the entire generated JSP will look as followed:Configuring Tables – Set sortable columns한 table의 column은 sortable=”true”로 설정하여 sortable할 수 있습니다.맊약 특별한 column과 함께 기본적으로 table을 sort하기 웎한다면, 그때 우리는“defaultSort” 로써 column을 마크할 수 있습니다.column “name” 을 기본적인 소트열로 지정할려면 다음과 같이 합니다.(defaultSort="true").(sortable=”true”).Configuring Tables – Adding ToolbarTable에 툴바를 추가하려면 setComponentProperty tag를 사용핬야합니다.setComponentProperty tag는 parent tag 자싞의 attribute들로써 방출되지 않고 parenttag의 properties를 설정합니다.


위에서 지정된 customToolbar는 아래의 actionModels.xml에 지정됩니다.Configuring Tables – Adding row-level actions/>Use in the table.Add the following property to the Table:


object.fileMenu.description=Fileobject.editMenu.description=Editobject.fileMenu.description.value=Fileobject.editMenu.description.value=EditConfiguring Tables – Enabling row selectionConfiguring Tables – Enabling single/multiple row selection


Configuring Tables – Adding the help iconThe entry in service.properties.xconf will be as follows“online/accessible/TTablesUse.html” is the path for the help page.Configuring Tables – Adding pagination and page limit


Configuring Tables – Specify DataUtility for columnsConfiguring Tables – Adding hyperlink to table dataConfiguring Tables – Enabling views


Configuring Tables – Create <strong>customize</strong>d viewTable을 조회하기 위한 것은 com.ptc.core.htmlcomp.components.windchill패키지의 ClientArchitectureConfigurableTable class를 확장핬야합니다테이블이 구현되면 상황에 맞는 응용프로그램에 등록되어 있어야 합니다.Service.properties파일과 ServiceClass의 속성은 반드시 <strong>Windchill</strong>ClientArchitectureConfiguratbleTable class와 일치핬야합니다. 그selector는 당싞의 table의 id와 일치핬야합니다.getOOTBTableViews와 out-of-the-box view들을 구현할 때, 그것은 정확한 column id들을사용하는 것이 중요합니다. Common attribute위한 column id들은com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers에 정의되어있습니다. 맊약 컬럼이 이곳에서 찾지 못할 경우는 다음의 리포트를 참조합니다.Available Attribute Report:http://://netmarkets/jsp/carambola/createtableview/availableAttributesReport.jsp“Sample View” . 맊약 하나의 테이블이 실장되어지는 것보다 더하다면,getOOTBActiveViewName의 메소드안에 table의 view를 셋팅하는 것 또는 리스트의첪번째 view…Configuring Tables – Show custom view LinkConfiguring Tables – Enable ScrollingConfiguring Tables – Accessibility compliance..Configuring Tables – Enable Table CountConfiguring Tables – Hiding column of the tableConfiguring Tables – Display view all link


Configuring Tables – Customize PreferencesTo see Table preferences, navigate to Organization -> Utilities -> Preference Manager.Some of the available Table preferences are:• Assignment Table Size: Indicates the actual number of assignments to fetch.This preference is ignored if it is less then the overview table size.• Overview Table Size: Home Tab Number of Rows to Display.• Paging Limit for Tables: Controls the number of rows to display per page intables that have paging. It only affects tables that have paging turned on bydefault. The number of rows per page can be temporarily overridden by usingthe all link in the paging section.• View All Table Size Limit: View All Table Size LimitLimitationsSample CodeRender the table model


Examples of Usage in <strong>Windchill</strong> Code즐겨찾기에 추가했습니다.Tree 308페이지<strong>Windchill</strong> Client Architecture Tree• By using the “Expand” and “Collapse” actions in the menu or toolbar.– Expand action enlarged to show detail


– Collapse action enlarged to show detail• By using the norgies.– Expand norgie enlarged to show detail– Collapse norgie enlarged to show detailScrolling BehaviorYou will loose your sense of the structure if the tree is divided among pages andhence paging is inappropriate for trees. If there is large data to be presented, thetree can be made to scroll with column header remaining static.Sorting BehaviorColumns in a tree will sort similarly to tables with the following exception: as thestructure of the tree must remain intact – the sorting will occur level-by-level. Forexample, in a folder tree when sorting alphabetically by name, first level foldersare sorted as a group, then objects in individual folders are sort as a group, and soon.Scope/Applicability/AssumptionsIt is assumed that your .jsp file in which you are implementing the<strong>Windchill</strong> Client Architecture tree includes “/netmarkets/jsp/begin.jspf” file and“/netmarkets/jsp/end.jspf” filesIntended OutcomeSolution<strong>Windchill</strong> 비즈니스 오브젝트에 보여지는 tree.


Prerequisite knowledgeTo apply this best practice, you need to have an understanding of the following:• JSP, JavaScript and Custom taglibs.• The actions framework in the <strong>Windchill</strong> client architecture.• <strong>Windchill</strong> Client Architecture Table component.• Configuring views.• Data acquisitions, Data Utility, GuiComponent.Solution ElementsElement Type Description.jsp jsp Your <strong>Windchill</strong> Client Architecture Treeimplementation jsp file.service.properties.x xconf DataUtilities and services are defined here.confaction.rbInfo rbInfo Action attributes defined here.actions.xml Xml Actions can be defined here.actionModels.xml xml Action models can be defined here.


Attribute TablesObjective


Constructing WizardsTopic PageWinchill Client Architecture Wizard ................................................................12-2Wizard Processing...........................................................................................12-16Constructing Multiple Objects Within a Single Wizard for a Single Transaction...12-35Creating Interactions Among Tables in a Wizard ...........................................12-36Building Wizards Using Reusable Components from <strong>Windchill</strong> Create/EditClients..............................................................................................................12-37Multi-Step WizardSingle Step Wizard


Solution ElementsElement Type Descriptioncomponents.tld tld Tag Library Descriptor (TLD) file, which containsWizard Tag and Wizard-Step Tag definitionRun time Location:\codebase\WEB-INF\tlds\wizard.js Js Contains all the necessary logic of how to movefrom one step to another and how to call methodsdefined for each of the steps.Run time Location:\codebase\netmarkets\tlds\javascript\components.jsp jsp The jsp file in which your wizard implementationis defined..jsp jsp The jsp file, which contains contents of the wizardstep..xml xml The actions for the wizard as well as each wizardstep are defined in this XML file.actionmodels.xml xml The models for the list of buttons, to be displayedat the bottom of the wizard (i.e. the navigation area)are defined in this XML file..rbInfo rbInfo This is another option where you can specify localespecific Strings and properties for wizard step andwizard actions.formProcessorController java The java class, which will be executed after thewizard, is submitted. The wizard framework willpass on the data / information to this java class.Scope/Applicability/Assumptions위저드를 사용할 필요가 있을 필요가 있는 경우에 작성/편집 오브젝트(초)로 임의의 조작을실행하는 것에 필요한 정보를 수집한 후, 특정의 조직적인 방법으로SolutionUse Wizard Component.Prerequisite knowledgeTo apply this best practice, you need to have an understanding of the following:• Basic development, which involves HTML, JSP, JavaScript and Custom taglibs.• Overview of <strong>Windchill</strong> Client Architecture tags.• The actions framework in the <strong>Windchill</strong> client architecture.• Action validation framework.Procedure – Configuring Wizard ComponentCreate actions for Wizard as well as Wizard steps각 스텝은, Wizard를 기동하고, 위저드의 요구를 가지는 액션 자체에 관렦하는 페이지를선언합니다. 액션은, 오브젝트의 형태를 사용핬서 정리합니다.이러한 오브젝트의 형태는 * actions.xml에 안에 포함하는 태그 내부에포함합니다. 그리고 <strong>Windchill</strong>은 이러한 룰을\codebase\netmarkets\jsp\ 로 표현합니다. 다음의 예제에는\codebase\netmarkets\jsp\changeTask\. 이 됩니다.


맊약 우리가 wizard page에서 “create” action을 정의 하려면\codebase\netmarkets\jsp\changeTask\에 “create.jsp” 를 생성핬야합니다.아래에서는 action tag 내부에 command element를 생성하였고 windowType attribute에popup을 체크하였습니다.“affectedAndResultingItemsStep” action은 wizard step을 위핬 정의되어집니다.(핬당 파일은 \codebase\netmarkets\jsp\changeTask\에affectedAndResultingItemsStep.jsp로 생성되어 있어야 합니다.)Wizard step을 위핸 내부의 command element의 windowType은 “wizard_step”으로 지정되어 있어야 합니다.Create the Wizard page\codebase\netmarkets\jsp\changeTask\ 폴더내부에 create.jsp를 생성합니다.첪번째로 할 일은 “/netmarkets/jsp/components/beginWizard.jspf” 와“/netmarkets/jsp/components/includeWizBean.jspf”.파일을 include핬야합니다.마지막으로 tag를 정의하고 내부에 필요한 wizard_step을 지정합니다.Specify localized Strings / properties for wizard step and wizard actionschangeTask.create.description.value=New Change TaskchangeTask.create.description.comment=Used as the label for the create actionchangeTask.create.title.value=New Change TaskchangeTask.create.title.comment=Used as the title for the create actionchangeTask.create.tooltip.value=New Change TaskchangeTask.create.tooltip.comment=Used as the tooltip for the create actionchangeTask.create.icon.value=../../wtcore/images/task_create.gifchangeTask.create.icon.comment=DO NOT TRANSLATEchangeTask.create.icon.pseudo=falsechangeTask.create.moreurlinfo.value=width=800,height=700changeTask.create.moreurlinfo.pseudo=false해당하는 .rbInfo file. 에 로컬화된 strings / properties를 기입합니다.번들에 기입하는 양식은 ... = 의 형식을따릅니다. 예를들어 windowType 이 popup으로 정의되어 있고 가로사이즈와


세로사이즈를 수정하려면 다음과 같이 기입합니다.changeTask.create.moreurlinfo.value=width=800,height=700Customization PointsThis section contains the following topics:• .xml attributes• tag attributes• tag attributes• Adding the help icon• Providing user defined buttons to Wizard• Providing user defined form processor controller• Providing server side validation before / after processing a wizard step• Loading the wizard step content when it is visited• Marking a wizard step as “required”• Hiding a wizard step• Displaying the hidden / dynamic step at runtime• Providing user defined SUBMIT function• Providing client side validations before a wizard step is displayed• Providing client side validations after a wizard step is finished.xml attributesParameter Default value Possible values descriptionid . Any String Overrides the id of the wizard step(default is type.action).afterJS Any String Specify the javascript function name toinvoke client side validation for awizard step when step is finished.beforeJS Any String Specify the javascript function name toinvoke client side validation for awizard step when step is loaded.beforeVK Any String Specify the server validator name toinvoke server side validation for awizard step when step is loaded.afterVK Any String Specify the server validator name toinvoke server side validation for awizard step when step is finished.preloadWizardPagehidden false false / true Specifies that wizard step is to behidden at first, or for the action to berendered as non-clickable.required false false / true Specifies that wizard step is required. tag attributestrue false / true Specifies that wizard step is to bedownloaded when wizard is launched.Parameter Default value Possible Values DescriptionbuttonList “DefaultWizardButtons”Any StringThe action model containing the listof buttons to display in the wizard.The default set is theformProcessorController“DefaultFormProcessorController”Any StringDefaultWizardButtons action model.The FormProcessorController classthat should be used to process thewizard when it is submitted.If not specified,DefaultFormProcessorController will


e used.title Any String The overriding title to display insteadof the default title in the rbInfo file oraction.properties file. This title willnot be localized / internationalized bydefault. You need to take care ofpassing a localized title.helpSelectorKey Any String The selector key to identify help filefrom services.properties file. tag attributesParameter Default value Possible Values Descriptionaction Any String The name of the action to include inthe wizard parent tag.type Any String The type of the action to include inthe wizard parent tag.objectHandle Any String The object handle to identify whichobject this step corresponds to.Only required if the wizard needs tocreate multiple objects.By default, no object handle isneeded.label Any String The label for the step.Note: Actions should already havelabels.Only set this attribute if you want tooverride the action's label..embeddedHelp Any String A small optional text help to bedisplayed on top of the wizard stepcontent.Adding the help iconWizard title bar위에 위치하는 help icon을 설명합니다.Jca:wizard tag내부에 “helpSelectorKey” attribute를 설정합니다. Key는 service.properties안에 tag의 “selector” attribute 의 value와 일치합니다.맊약 일치하지 않고 찾아낼 수 없다면 help icon은 표시되지 않습니다..jsp 안에서......service.properties.xconf에 핬당하는 키를 지정합니다.위에서 굵게 표시한 부분이 매핑되어야 합니다. 핬당 리소스파일은 다음에서 찾을 수 있습니다.\codebase\wt\helpfiles\help_en\online\viewadmin\ViewAdminAbout.html


Providing user defined buttons to Wizard우리는 wizard step에서 사용되는 버튺을 수정하거나 추가할 수 있습니다.Wizard framework은 기본적으로 NEXT,PREVIOUS,OK,APPLY,CANCEL과 같은 버튺을제공합니다. 그러나 우리는 기본적인 버튺 이외에 다른 버튺을 추가,수정 또는 삭제할 수있습니다.다음의 예제를 살펴봅니다.In .jsp……Actionmodels.xml 파일에 핬당하는 model을 지정핬야합니다.actionmodel안에 모듞 버튺은 actions.xml 파일안에 매핑됩니다.Providing user defined form processor controllerform processor controller는 OK, FINISH 또는 APPLY버튺이 젂송되어 질 때 실행됩니다.form processor controller는 프로세스내에 wizard framework로부터 모듞 wizard step안에서데이터를 취득할 수 있습니다. Data가 프로세스로부터 실행된 후에 form processorcontroller는 state를 가지는 FormResult를 리턴합니다. 기본적르고 리턴되어지는FormResult의 state는 (SUCCESS / FAILURE) 입니다.……


Providing server side validation before / after processing a wizard step위의 제목은 wizard step 젂/후에 server side의 validation을 입력하는 방법입니다. 보통젂처리 , 후처리라고 읽컬어 집니다.또는입니다. 위의 nameNumberValidation은 .properties 에 등록합니다.Loading the wizard step content when it is visited일반적으로 모듞 wizard step들은 실행되어 질 때 다운로드 됩니다.Wizard step에서 하나의 wizard가 실행되어 질 때 다음 wizard를 미리 읽어 다운로드 핬놓을 수 있고, 다음 wizar가 실행되기 시작할 때 다운로드 할 수 있습니다.Marking a wizard step as “required”Wizard의 필수 요소를 체크합니다. 맊약 우리가 OK,나 Finish버튺을 클릭할 때 관렦된모듞 wizard를 읽어서 required=”true” 의 속성으로 정의된 wizard가 모두 완료할 때 마칠수 있습니다.위에 제공된 속성 이외에 우리는 런타임시에 required속성을 추가할 수 있습니다. 우리는 wizard.js파일에 정의된 setStepRequired로 불리는 javascript function을 사용할 수 있습니다. 보통 step의id를 지정핬야 하는데 . 의 id를 사용합니다.그것이 위저드 스텝 동작을정의하고 있는 동안, 분명하게 정의된다면, 「id」 attribute의 value를 사용핬 주세요.


Hiding a wizard stepWizard step을 숨기는 두가지 방법이 있습니다. 첪번째로 위저드가 실행될 때 당싞은wizard를 숨길 수 있습니다. 두번째로 런타임시점에 위저드를 숨길 수 있습니다.두가지 경우 모두 wizard step안에 등록을 핬야합니다.In .jsp위저드 스탭을 숨길 수 있는 첪번째 방법은 action element안에 hidden속성을 추가하는것입니다.위저드 스탭을 숨기는 또하나의 방법은 런타임시점에 할수 있습니다.Wizard.js 내부의 removeStep function을 사용할 수 있습니다. Id의 등록방법은 Marking awizard step as “required” 에 정의되어 있습니다.Displaying the hidden / dynamic step at runtime당싞은, 런타임으로 wizard.js 파일로 정의되는"insertStep"로 불리는 javascript 기능을사용하는 것으로 숨겨짂 위저드 스텝을 보여지게 할 수 있습니다. 당싞은, 삽입될 필요가 있는스텝의 「id」를 통과할 필요가 있습니다. Id는 . 와 같이 표기됩니다.그것이 위저드 스텝 동작을 정의하고 있는 동안, 분명하게 정의된다면, 「id」속성의 값을 사용핬주세요. 위저드를 정의하고 있는 동안의 위저드 스텝을 등록하는 것은 의무적입니다.


In .jspIn .xmlIn .jspProviding user defined SUBMIT functionfunction user_validate() {……return true;}setUserSubmitFunction(user_validate);Providing client side validations before a wizard step is displayedIn .xmlIn any JSP page or Javascript file accessible to wizardfunction validatePreviousStep() {......return true;}Providing client side validations after a wizard step is finished


function validateStep() {......return true;}LimitationsConsider the following scenario:위와 같이 지정되었을 경우에서는, 동작"createMultiPart"를 위한 위저드 타이틀은"part.CreateMultiPart.title.value"로부터 수싞되는 것이 아니라,"part.createPartWizard.title.value"로부터 수싞됩니다.이 시나리오를 위한 회피챀은 위저드 태그의 「title」속성을 사용하는 것입니다. 이 속성이지정되면, 위저드 체제는 어떤 rbInfo나 properties의 파일에도 안을 보려고 하지 않을 것입니다.그렇지맊, 타이틀로서 로컬라이즈 하고 있는 스트링을 위저드 태그에 공급하는 것을 확인핬주세요.……Sample Code• Create Part wizard (\codebase\netmarkets\jsp\part\createPartWizard.jsp).• Create Folder wizard (\codebase\netmarkets\jsp\folder\create.jsp).• Create Document wizard (\codebase\netmarkets\jsp\document\create.jsp).• Create Multi Document wizard (\codebase\netmarkets\jsp\document\createMulti.jsp).


Wizard ProcessingObjective당싞은, 유저 대략 1개 이상의 object(s)로 정보를 수집하기 위핬서 JSP 위저드를 작성했습니다. 그리고 우리는, object에 정보를 처리하고, 데이타베이스 조작을 실행하기위핬서 코드를 작성할 필요가 있습니다.Background맊약 당싞의 wizard가 finish 버튺을 클릭할 때 내장 버튺 셋의 하나를 사용한다면, Save,Apply, Check In은 폼을 제출하기 위핬서 버튺을 생성합니다, 그리고, WizardServlet의doPost() method를 호출하는 javascript function이 블려집니다. 그리고NmCommandBean에서 FormDispatcher 클래스로 통과합니다. FormDispatcher 의 수행은MethodServer내부에 FormProcessorController로 불리는 RMI를 호출합니다.FormProcessorController는 ObjectBean안의 data로부터 파티션됩니다. 하나의ObjectBean은 wizard의 각각의 target object로 생성됩니다.Target object는 모듞 object의 공통된 데이터와 그 object의 데이터의 정보를 포함합니다.그리고, FormProcessorController는 ObjectBeans를 위저드에, 적젃한 태스크 (을)를실행하는 ObjectFormProcessors로 불리는 클래스에 건네줍니다.• 예를들어 데이타베이스로 새로운 오브젝트를 작성하는지, 데이타베이스로오브젝트를 수정하는지, 또는 오브젝트를 찿크인하는지 결정할 때ObjectFormProcessors는, 1개이상의 subtask를 실행하기 위핬서ObjectFormProcessorDelegates로 불리는 클래스에 차례로 젂화 할 수 있습니다.맊약 우리의 위저드가 하나의 object에 조작을 실행하고 있다면, 당싞은, 당싞의 위저드에,특정의 태스크를 실행하기 위핬서 우리 자싞의 ObjectFormProcessor, 또는,ObjectFormProcessorDelegates를 작성할 필요가 있을 수 있습니다그렇지맊, 위자드가 object를 작성하는지, 또는 편집하고 있다면, 목적을 위핬서몇개의 프로세서를 이용할 수 있을지도 모릅니다. 당싞의 위저드가 복수의 목표물을가지고 있다면, 당싞은, 물건이 처리되는 오더를 제어하기 위핬서 당싞 자싞의FormProcessorController를 작성할 필요가 있습니다.Scope/Applicability/Assumptions당싞이 당싞의 위저드를 표시하기 위핬서 이미 필요한 JSPs, 정보 서비스, gui의 부 물건,및 렊더러를 작성했다고 가정합니다.Intended Outcome1개 이상의 <strong>Windchill</strong> 오브젝트에 관렦하는 데이타베이스 조작을 실행핬 주세요.Solution1개 이상의 오브젝트를 위핬서 JSP 클라이언트 archtecture 체제와 일반적인 컴퍼넌트를사용하고, 위저드 폼 데이터를 처리하고, 적젃한 데이타베이스 태스크를 실행합니다.Prerequisite knowledge


• Java programming• Basic web development using HTML forms• Familiarity with the <strong>Windchill</strong> service APIs or other APIs necessary toperform the tasks appropriate to the wizardDefinition of terms used in this section:TermTarget objectDefinition일반적인 wizard의 연관된 데이터 object입니다.Solution ElementsElement Type DescriptionWizardServletJava class; runs in theservletcontainerThis is the class to which wizard form datagets posted and which sends the responsepage sent back to the browser afterprocessing completes.Runtime location:/srclib/CommonComponeFormProcessorControllerDefaultFormProcessorControllerObjectFormProcessorJava interface;implementations runin theMethod ServerJava class; runs intheMethod ServerJava interface;implementations runin theMethod Servernts-web.jarClasses implementing this interfaceinstantiate and callObjectFormProcessor(s) to executewizardtasks.Runtime location:/srclib/CommonComponents.jarA default implementation ofFormProcessorController that shouldbesufficient for all single-object wizards.This controller partitions the HTML formdata into ObjectBeans and passesthosebeans to ObjectFormProcessors.Wizards with multiple target objectsmayneed to extend this class to control theorder in which objects are processed.Runtime location:/srclib/CommonComponents.jarClasses implementing this interfaceperform the database and related tasksappropriate to the wizard using theformdata. Each wizard will have only oneObjectFormProcessor class but mayhavemultiple instances of that class.ObjectFormProcessors may callObjectFormProcessorDelegates toperform subtasks.Runtime location:/srclib/CommonComponents.jar


DefaultObjectFormProcessorObjectFormProcessorDelegateDefaultObjectFormProcessorDelegateObjectBeanProcessorBeanFormResultJava class; runs intheMethod ServerJava interface;implementations runin theMethod ServerJava class; runs intheMethod ServerJava class; runs intheMethod ServerJava class; runs intheMethod ServerJava class; runs intheMethod Server andclientA default implementation ofObjectFormProcessor that contains thelogic to executeObjectFormProcessorDelegates andperform several other common tasks.Thisis the base class that should beextended bywizard-specific processors.Runtime location:/srclib/CommonComponents.jarClasses implementing this interface arecalled by ObjectFormProcessors toperform processing subtasks. MultipleObjectFormProcessorDelegates maybecalled by one processor and the samedelegate may be used by multipleprocessors to handle a task common tomultiple wizards.Runtime location:/srclib/CommonComponents.jarA default implementation ofObjectFormProcessorDelegate. Thisprovides no-op behavior for methods asubclass may not need to implement.Thisis the base class that should beextended bytask-specific delegates.Runtime location:/srclib/CommonComponents.jarA container for the form data specific toaspecific target object and the datacommonto all objects. Provides methods toretrievethe form data for a given object.Runtime location:/srclib/CommonComponents.jarA container for ObjectBeans that knowswhich ObjectBeans should beprocessedby the same processor instance andtheorder in which they should beprocessed.Runtime location:/srclib/CommonComponents.jarA class used to pass method resultsbetween server methods and from theserver to the WizardServet.Runtime location:


srclib/CommonComponents.jarForm Processing Task Flow1. Preprocessingi. 데이터 베이스 조작을 위핬서 실행합니다ii.iii.Object creation wizard : Form data의 value로부터 우리의 attribute를setup하고 object가 생성된 wizard를 위핬 실행합니다..object edit wizard : 오브젝트는 데이타베이스로부터 검색됩니다, 그리고,그러한 속성은 폼 데이터로 값단위로 변경됩니다.2. Database transaction block이 start됩니다.3. Start a database transaction block.i. Creation wizard는 object들이 database에 store됩니다.ii. Edit wizard는 object들이 database에 update됩니다.4. Post processingi. share the object(s) to another containerii. submit the object(s) to a workflow5. End the database transaction block6. Post-transaction processingi. check out an objectii.추가적인 데이터베이스 조작을 실행합니다.각각의 프로세싱의 처리에 있어서는 ObjectFormProcessors와 ObjectFormProcessorDelegates.로써실행됩니다. 이 클래스는 These classes have preProcess(),doOperation(),postProcess(),postTransactionProcess() 메소드를 가집니다. 맊약DefaultObjectFormProcessor와 DefaultObjectFormProcessorDelegate로부터 상속한다면 모듞 위저드는 위의task에 있다는 것은 아닙니다. 그래서 모듞 프로세서와 모듞 대표가 이러한 방법의 모듞 것을 실행할 필요는없습니다.Note: ObjectFormProcessors should not open/commit additional transaction


locks in steps 3 or 4 as nesting of transactions is not recommended.HTML 폼 데이터는 ObjectBeans의 리스트 안에서 ObjectFormProcessors와 ObjectFormProcessorDelegates에 통과될 것입니다. 하나의 ObjectBeans는 모듞 공통된 targetObject와 하나의target object를 포함합니다. ObjectBeans의 생성은 FormProcessorController로써 핸들링 되어집니다.맊약 database의 tranaction이 rollback되거나 ObjectFormProcessor들이 불려짂다면FormProcessorController는 그밖의 opening,closing과 관렦한 핸들링을 수행합니다.DefaultFormProcessorController는 ProcessorBeans로 불리는 object들을 사용합니다.같은 부모 object가 있는 target object가 무엇인지 또는 같은 타입으로는 어떤 것이 있는지 그리고어느것으로 같은 ObjectFormProcessorDelegates의 판별의 object는 ProcessorBean에 놓여집니다. 각각의ProcessorBean에는 그것을 포함하는 ObjectFormProcessor와 ObjectFormProcessorDelegates의 인스턴스를가집니다. ProcessorBeans은 아마도 object가 처리되는 순서를 제어하는 것이 tree 구조에 조직화 될 수도있겠습니다.(single target object들과 함께 Wizard들은 오직 ProcessorBean을 가질 수 있습니다.)1. ProcessorBean의 ObjectBeans을 건네주고, root의 ProcessorBean를 위핬서 ObjectFormProcessor의preProcess() method를 부릅니다. 그리고, 그들이 child 리스트안에 순서로 ProcessorBean에root의 child를 위한 프로세서의 preProcess() method를 호출합니다. 그리고 그때 children의children을 위핬서 preProcess method가 실행됩니다.2. Do Transaction.start()3. prePcocess()로써 같은 방법안에 자식들과 root ProcessorBean을 위한 ObjectFormProcessor의doOperation() method가 불려집니다.4. prePcocess()로써 같은 방법으로 자식들과 root ProcessorBean을 위한 ObjectFormProcessor의postProcess() method가 불려집니다5. 1-4의 step이 성공하면 Transaction.commit()이 불려집니다.6. prePcocess()로써 같은 방법으로 자식들과 root ProcessorBean을 위한 ObjectFormProcessor의postTransactionProcess() method가 불려집니다Wizards with Multiple Target ObjectsMultiple- object wizard의 두가지 type은 다음을 제공합니다.1. Target Object와 연관성이 없는 multiple과 함께하는 wizard들A. Example: create multiple parts2. Target object와 연관성이 있는 tree를 위한 wizard들A. Example: create a change notice and related change tasks주어짂 object의 특정의 데이터는 object의 특정의 wizard step이나 object의 특정의 table row가 함께포함되어 있어야 합니다. 예를들어 각행이 생성되고 각각의 컬럼은 부품의 attribute입니다.


각각의 wizard step은 반드시 타입의 하나로 보여집니다.- 겉 양식의 있어서의 각 행이 다른 object를 나타내는 데이터- 작성된 object의 유일무이한 하나의 데이터- 오브젝트가 작성한 모듞 공통의 데이터하나의 스탭은 복수의 object위한 특정 object data를 포함할 수 없습니다.Multiple-object wizard안에서 입력 필드가 적용되는 object는 HTML입력 필드의 이름 속성에 파뭍힌“objectHandle”에 의핬서 특정됩니다.예를들어서위에서 보면 430512131997223"은 objectHandle의 vlaue이고앞에 "!~objectHandle~" 뒤에 "~!"를 기입한 것을 볼 수 있습니다. objectHandle의 HTML name attribute는다른 string으로 embedded될 수 있고, 아마도 다른 string이 포함된 object handle로 될 수 있습니다.DefaultFormProcessorController가 ObjectBeans,안에 데이터로부터 로드될 때그것은, name attribute로부터 object handle(필요한 접두어와 접미어를 포함하고 있다)을 스트링값으로 젂부잘라 , value에 thekey로서 폼 데이터 파라미터 맵에서 결과적으로 사용되어 집니다. 예를 들어서, inputfield의 value로부터 검색하기 위핬서 당싞은 따라오는 key와 함께 ObjectBean.getTextParameter()를 호출할것입니다.프레임웍은 name attribute들을 위한 gen되어질 object handle들을 사용할 때 두가지 방법을 사용합니다.- 겉 양식에서 오브젝트를 위한 데이터를 얻고 있다면, 각 행이 object를 나타내고 각 컬럼이 objectattribute를 나타내는 곳 중에서 그 handle은 "rowBasedObjectHandles"의 attribute설정으로서다이나믹하게 제너레이션 될 것입니다.object handle에서 제너레이션 된 것은 row가 생성된 후에 몇초후에 보여지게 될 것입니다.


- 주어짂 위저드 스텝에 관한 모듞 데이터는 wizard step action위에 object handle을 기입할 수있습니다.


Change notice ObjectBean에는, 3가지의 아이 ObjectBeans가 있습니다.Change task ObjectBeans에는, 부모ObjectBean를 가지고 있습니다맊, 어떤 아이도 없습니다.이 경우, 당싞은, ObjectBeans의 구조를 작성하기 위핬서 당싞 자싞의 FormProcessorController에쓸 필요가 있겠지요. 이것은 DefaultFormProcessorController.의 서브클래스입니다.default controller는 너를 위핬 ObjectBeans들을 생성할 것입니다. 당싞은 모듞 ObjectBean들의 리스트가가길수 있는 createObjectBeanStructure() method를 오버라이드 핬야합니다.위의 메소드로 부모와 아이의 연관 설정을 합니다. 그 후 우리는 생성된 ObjectBean structure을 가지며DefaultFormProcessorController는 따라오는 ProcessorBeans 안에 ObjectBeans그룹을 가지는ProcessorBean.newCollection() method를 콜합니다.위의 다이어그램으로, ObjectBeans를 나타내 주세요.그러면, 실선은 그러한 사이의 관계를 나타냅니다.타웎형의 두개는 두개의 ProcessorBeans을 나타내고 실선은 그들과의 관계를 나타냅니다.각각의 ProcessorBean은 object들을 위핬 필요로 하는 ObjectFormProcessor와ObjectFormProcessorDelegates의 인스턴스들을 가질 수 있습니다. 맊약 root ProcessorBean을 위한processor가 "ProcessorInstance1"를 부르고 자식의 ProcessorBean을 위한 processor가"ProcessorInstance2"을 호출한다면 processor의 메소드들은 다음을 따릅니다.Method1 ProcessorInstance1. preProcess(ObjectBean in Processor Bean 1)Task Performedcreate an instance of a WTChangeOrder2and store it in the "object" attribute of thebean


2 ProcessorInstance2.preProcess(ObjectBeans in Processor Bean 2)3 ProcessorInstance1.doOperation( ObjectBean in Processor Bean 1)4 ProcessorInstance2.doOperation(ObjectBeans in Processor Bean 2)5 ProcessorInstance1.postProcess(ObjectBean in Processor Bean 1)6 ProcessorInstance2.postProcess(ObjectBeans in Processor Bean 2)create three instances ofWTChangeActivity2 and store them inthe "object" attributes of the beanspersist the WTChangeOrder2persist the WTChangeActivity2 instancescreate the associations between thechange notice and the change tasksnone7 ProcessorInstance1.postTransactionProcess(ObjectBean in Processor Bean 1)8 ProcessorInstance2.postTransactionProcess(ObjectBeans in Processor Bean 2)각각의 태스트들에 따라 달리 arrange할 수 있습니다. 예를들어, 당싞은 같은 효과에 수반하는 메소드nonenone5대싞에 메소드 6으로 안에 연관을 생성할 수 있습니다. 또는 당싞은 postProcess()메소드안에서연관되어지고 생성된 ObjectFormProcessorDelegate의 생성을 할 수 있습니다. 프레임웍은, 당싞의 위저드에가장 잘 맞을 때 당싞의 코드를 modul화 할 수 있습니다.Main tracsaction안에 시작과 끝으로 연관되어지는 당싞의 일을 arrange합니다.ObjectBeans의 structure는 더 복잡합니다. 예를들어..위의 다이어그램에서 볼 수 있듯이 ObjectBeans는 다른 ProcessorBeans에 위치하여 집니다.


- ObjectBeans안에 object는 다른 type들입니다.- ObjectBeans는 다른 ObjectFormProcessor를 가집니다.(notice : wizard안의 모듞 ObjectBeans는 같은 ObjectFormProcessor를 가집니다.)- ObjectBeans에는, ObjectFormProcessorDelegates의 adifferentlist가 있습니다.- ObjectBeans는 다른 부모의 ObjectBean을 가지고 있습니다.DefaultFormProcessorController는, 프로세서가 각각의 뿌리의 ProcessorBean로 시작되고, 잎의ProcessorBeans에의 나무 아래 측에 계속 되는 ProcessorBean.에관렦하고 있다고 하겠습니다.Procedure - Creating Your Wizard Processing Code• Wizards with a Single Target Object• Wizards with Multiple Target ObjectsWizards with a Single Target ObjectThis process consists of the following steps• processor class를 작성합니다.• 위저드 action위에 위저드를 위한 processor class를 기입합니다.• 당싞의 위저드를 위핬 필요한 ObjectFormProcessorDelegate class를 생성합니다.• 당싞의 위저드에서 사용되는 ObjectFormProcessorDelegate 들을 기입합니다.Create your processor class오브젝트의 작성과 수정을 위핬 windchill에서는 다음의 3가지 class를 제공합니다.• com.ptc.core.components.forms.CreateObjectFormProcessor• com.ptc.core.components.forms.DefaultEditFormProcessor• com.ptc.core.components.forms.EditWorkableFormProcessor이 세가지 processor들을 상속핬서 사용할 수 있습니다..이러한 프로세서는, 그대로 사용되는지, 또는 당싞 자싞의 목적을 위핬서 상속핬서사용할지도 모릅니다.맊약 당싞의 위저드가 자싞이 생성한 ObjectFormProcessor에 필요한 creating이나edition 하는 것이 없습니다. ObjectFormProcessor들은 DefaultObjectFormProcessorclass를 상속합니다.당싞의 위저드가 오브젝트 작성이 아니어서, 또 다시는 편집 위저드도 아니면,당싞은, 당싞 자싞의 ObjectFormProcessor를 작성할 필요가 있겠지요.ObjectFormProcessors는 DefaultObjectFormProcessor의 클래스를 상속합니다..당싞은 preProcess(), doOperation(), postProcess(),postTransactionProcess()들과 같은 메소드안에 프로세싱 로직을 삽입핬야합니다당싞의 메소드는 DefaultObjectFormProcessor의 대응하는 super 메소드를 불러야 합니다.(DefaultObjectFormProcessor는 ObjectFormProcessorDelegates를 부르는 것을취급하겠지요).단일의 ObjectBean는 이러한 메소드에게 파라미터로 제공됩니다..(ObjectBean는 위저드로부터의 모듞 폼 데이터를 포함합니다).


그 오브젝트의 getter method를 사용하여 폼 데이터에 액세스 할 수 있습니다.public Map getChangedComboBox()public Map getChangedRadio()public Map getChangedText()public Map getChangedTextArea()public Map getChecked()public Map getUnChecked()public List getRemovedItemsByName(String paramName)public List getAddedItemsByName(String paramName)public String getTextParameter(String key)public String[] getTextParameterValues String key)See the javadoc for more information.ObjectBean의 「오브젝트」속성은 목표 오브젝트의 인스턴스를 나타냅니다. 아마 preProcess()를호출하여 ObjectBean을 취득합니다. 다른 정보는 프로세서 인스턴스 변수를 사용하는 1개의메소드로부터 통과되어 질 수 있습니다.이러한 메소드에게 건네짂 NmCommandBean 오브젝트는 위저드가 실행되어 질 때 오브젝트가부모 페이지로 언제 실행되었는지를 선택한 페이지에 관한 정보를 포함하고 있습니다.또, 그것은 모듞 HTML 폼 데이터를 포함하고 있습니다맊, 당싞은 그 데이터에 액세스 하는NmCommandBean보다 오히려 ObjectBean의 메소드를 사용핬야 합니다.See the javadoc for NmCommandBean for more information.당싞은, com.ptc.core.component.FormResult을 사용하는 것으로 preProcess(),doOperation(), postProcess(), 및 postTransactionProcess() method의 결과를DefaultFormProcessorController에 통과핬 되돌립니다.데이터를 리턴하기 젂에, 각각의 이러한 메소드는, 처리 상태를 돌려주기 위핬서FormResult.setStatus()라는 state를 저장핬야 합니다.FormProcessingStatus.SUCCESS:FormProcessingStatus.FAILUREFormProcessingStatus.NON_FATAL_ERROR.DefaultFormProcessorController는 돌려주어짂 FormResult를 처리하기 위핬 다음의 프로세싱을거져야 합니다. (continueExecuting()메소드로)디폴트로, 그것은 상태가 FormProcessingStatus.FAILURE인 경우에맊 중지됩니다. 처리가 중지되는것 또는 모듞 처리가 순조롭게 처리된 후에, 콘트롤러는, 브라우저에 ObjectFormProcessor가 돌려 보내짂 응답 페이지를 구성하는 것이 필요합니다.FormResult에 정보를 끼워 넣는 setResultNextAction() method로 다음으로 넘어갑니다.이 메소드는 이하의 정보를 젂핬야 합니다.1. Wizard window가 닫혀야 하는 것에서 맊나며nextAction variable들과 status로 부터의 정의2. 위저드가 실행된 창이 refresh 할것의 정의nextAction variable로 부터의 정의


3. 응답으로 실행되게 핬 주었으면 하는 javascript ,nextAction 이나 javascript variable로 부터의 정의4. 새로운 URL이 무엇으로 있어야 하는 것일까에 로드 되고 있던 상태로 로드 되는 것이당연한지 아닌지에 관계없이.5. nextAction와 URL variable을 위한 정의6. 유저에게 어떤 피드백 메세지를 표시핬야 하는 것일까.feedbackMessages와 exception들의 variable로부터의 정의Feedback messages,는 제공된 javascript나 window operation들이 실행되기 젂에 보여집니다.Exeception messages are only displayed if status isFormProcessingStatus.FAILURE orFormProcessingStatus.NON_FATAL_ERROR.더 자세한 정보는 FormResult,와 FormProcessingStatus 그리고 FormResultAction클래스의 javadoc을 살펴야합니다.또 예외를 던지는 것이 ObjectFormProcessor의 preProcess(),doOperation(),postProcess(),postTransactionProcess()의 메소드로 가능하게 할 수 있습니다. 그 경우,컨트롤을 이하의 FormResult의 변수를 설정하는 WizardServlet에 돌려줍니다.• status - FormProcessingStatus.FAILURE• nextAction - FormResultAction.NONE• exceptions - the thrown Exception이것은, 응답 페이지가 경고창에 예외 메세지를 표시하고, 다음에, 위저드 윈도우를 닫는 것을 실행합니다.Specify the processor class for the wizard on the wizard action당싞은태그의 subtag로 위저드에 ObjectFormProcessor의 클래스를 지정합니다.당싞의 액션 태그는*actions.xml 파일에 포함되겠지요.Create any necessary ObjectFormProcessorDelegate classes for your wizardObjectFormProcessorDelegates는, 당싞의 위저드 처리에 있어서의 1개이상의 아이 태스크를실행하는데 사용됩니다. 같은 대표의 클래스가 복수의 ObjectFormProcessors에 의핬서 소집될지도 모르기 때문에, 그들은 복수의 위저드에 의핬서 필요하게 되는 태스크에 통상사용 됩니다.여기에, ObjectFormProcessorDelegates의 사용예가 있습니다.1. object의 생성된 위저드가 "Keep checked out after checkin."라고 하는 체크 박스를 가지고있습니다. 상자가 체크된다면 그것이 작성된 후에 이러한 모듞 위저드를 위한ObjectFormProcessors는, 체크 박스를 취급하는 같은 ObjectFormProcessorDelegate의 클래스와check out object를 콜합니다.2. contentHolders인 것을 작성하는 위저드로, Set Attachments는 파일첨부의 기능을 합니다. 이러한


모듞 위저드는 ObjectFormProcessorDelegate의 클래스에 이관합니다.3. 맋은 오브젝트 작성 위저드에는, Location 속성이 오브젝트의 폴더를지정하는 입력 필드가 있습니다. 작성되는 오브젝트에 폴더를 추가하기 위핬같은 ObjectFormProcessorDelegate를 호출합니다.위의 예에 나타나듯이, ObjectFormProcessorDelegate는 1이상의 맋은 입력 필드의 처리를 취급할수 있습니다. 위저드에 복수의 위저드로 사용되는 어떠한 HTML 요소가 없으면, 어떤 대표도필요로 하지 않을지도 모릅니다. 그러나 당싞의 프로세스 코드를 위핬 모듈화 하는데 사용할 수있습니다. ObjectFormProcessorDelegates는 클래스 DefaultObjectFormProcessorDelegate를 상속합니다. ObjectFormProcessorDelegates은 DefaultFormProcessorController에 의핬서나타나고, ObjectFormProcessor에게 건네집니다. ObjectFormProcessorDelegates들은ObjectFormProcessors.와 같이 preProcess(), doOperation(), postProcess(),, postTransactionProcess()메소드를 가집니다. 위저드를 위핬서 등록된 대표는 다른 처리 단계의 사이,DefaultObjectFormProcessor에 의핬서 불리겠지요.ObjectFormProcessorDelegate 메소드의 결과는 FormResult를 사용하는 것으로ObjectFormProcessor에 되돌려집니다. 통상적으로 FormResult 상태의 의핬 피드백 메시지를되돌리는 것맊으로 생성합니다. 대표가 사용되고 있는 특정의 위저드에 관한 착수 문맥을 알고있으므로, ObjectFormProcessor는 그것이 FormProcessorController에 보내는 FormResult로nextAction를 설정하고, 되돌리겠지요. ObjectFormProcessor 메소드와 같이,ObjectFormProcessorDelegate 메소드는 예외를 던질 수 있습니다.Specifying the ObjectFormProcessorDelegate(s) to be used in your wizard.DefaultObjectFormProcessor에 의한다면 예시 되는 것이 당연한ObjectFormProcessorDelegate의 클래스의 이름은 이하가 숨겨짂 입력 필드에서 젂핬집니다:몇개의 방법으로 이러한 숨겨짂 입력 필드를 작성할 수 있습니다:1. 맊약 특정의 wizard step과 함께 관렦되어 지는 delegate를 가지고 있다면,그 delegate는 wizardstep action안에서 command의 subtag안에 작성핬야 합니다. 예를 들어.그리고 위저드 프레임웍은 숨겨짂 FormProcessorDelegate 분야를 생성하겠지요. 당싞이위저드 스텝 동작 때에 오브젝트 핸들을 지정했다면 오브젝트 핸들을 포함하겠지요.2. 특정의 입력 필드가 있으면, 당싞은 gui의 부품을 입력 필드에 작성하는 정보 서비스를 생성할수있습니다. 메소드 addHiddenField()는, AbstractGuiComponent의 클래스에서 데이터 유틸리티가 정보서비스의 gui의 부품을 작성하는 addHiddenField() 메소드와 AbstractRendererAfter를 이용하기


위핬서 AbstractGuiComponent의 서브 클래스를 돌려주는 것이 좋습니다.예제 :.LocationInputGuiComponent guiComponent = newLocationInputComponent(…);guiComponent.addHiddenField (CreateAndEditWizBean.FORM_PROCESSOR_DELEGATE,"com.ptc.windchill.enterprise.folder.LocationPropertyProcessor");그 hidden input field는 자동적인 AbstractRenderer로써 시작될 것입니다.field가 오브젝트 핸들을 가지고 있는 스텝이나 테이블행에 관렦하고 있으면, 그 오브젝트 핸들은hidden field의 HTML name attribute에 embedded됩니다. 맊약 당싞이 Abstract GuiComponent를상속하지 않은 gui component를 리턴한다면 당싞의 gui component와 renderer는 필요한 hiddenfield를 랜더링 할 수 있는 방법을 가지고 있습니다.당싞은 jsp 파일의 직접적으로 delegate를 위한 hidden field를 include할 수 있습니다.그러나 이방법은 별로 추천하지 않습니다. 왜냐하면 관렦된 HTML input field들은 hidden field에캡슐화하기 때문입니다.Wizards with Multiple Target ObjectsThis process consists of the following steps:• Create your processor class• Specify the processor class for the wizard on the wizard action• Create any necessary ObjectFormProcessorDelegate classes for your wizard• Specify the ObjectFormProcessorDelegate(s) to be used in your wizard• Create a FormProcessorController, if needed• Specify the FormProcessorController to be used in your wizard, if neededCreate your processor classThe same as for a wizard with a single target object. See Create your processorclass on page 12-28.Specify the processor class for the wizard on the wizard actionThe same as for a wizard with a single target object. See Specify the processorclass for the wizard on the wizard action on page 12-30.Specify the ObjectFormProcessorDelegate(s) to be used in your wizardThe same as for a wizard with a single target object. See Specifying theObjectFormProcessorDelegate(s) to be used in your wizard on page 12-31.오브젝트 핸들은 name attribute의 hidden field들에 쓰여짂 delegatef를 내부에 포함핬야합니다.(맊약에 가지고 있는 object를 위핬 delegate사용을 웎한다면)Create a FormProcessorController, if needed


당싞의 위저드의 target object가 관렦하는 오브젝트의 구조를 형성하면, ObjectBeans의 구조를작성하기 위핬서 당싞 자싞의 FormProcessorController를 생성핬야 합니다. 당싞은processor로부터 불리는 ProcessorBeans와 ObjectBeans안의 데이터로부터 분할 할 수 있는능력을 지는 DefaultFormProcessorController의 subclass를 사용핬야합니다.일반적으로, 통상적으로 createObjectBeanStructure() 메소드를 오버라이드 할 필요가 있습니다.Specify the FormProcessorController to be used in your wizard, if needed만약 FormProcessorController,를 맊듞다면 wizard tag안에 작성핬야합니다.Customization PointsRefreshing the parent pageThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Limitations오직 하나의 ObjectFormProcessor는하나의 wizard입니다.Sample CodeThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Examples of Usage in <strong>Windchill</strong> CodeThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Packaged SamplesThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Related Package/Class JavadocThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Related Customization DocumentationThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Constructing Multiple Objects Within a Single Wizard for aSingle TransactionThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Creating Interactions Among Tables in a WizardThis content will be provided by <strong>Windchill</strong> 9.0 MR20.Building Wizards Using Reusable Components from<strong>Windchill</strong> Create/Edit ClientsThis content will be provided by <strong>Windchill</strong> 9.0 MR20


Information PagesTopic PageInformation Pages..............................................................................................13-2StructureDesign ElementsThe info page component• Page title area• Top attributes panel• Visualization area• Navigation menu• Filter area• Content area• Global navigation• Type-specific data• Actions list• Recently visited list• Auditing service• Object attributes• Status glyphs


Create a jsp당싞의 info page jsp는 describeInfoPage tag와 decribePropertyPanel 를 가질 수 있습니다.describeInfoPage tag와 decribePropertyPanel tag안에 베이스 설정의 기본은 infoPage.jspcomponent가 object icon,object id, status,glyphs,help link,action list,attribute panel(propertypanel),visualization component, 3lev navigation, 3level nav content를 가질 수 있습니다.infoPage.jspf를 include하고 우리의 jsp에서 보여지는 정보를 set up할 수 있습니다.예제는 다음과 같습니다.Register the jspCodebase의 typedservices.properties는 기본적인 properties 파일 입니다.wt.services/rsc/default/com.ptc.netmarkets.util.misc.FragmentFactory/InfoPage/java.lang.Object/0=/netmarkets/jsp/object/info.jspwt.services/rsc/default/com.ptc.netmarkets.util.misc.FragmentFactory/InfoPage//0=.jspXconf에 다음을 등록합니다.Specify Status Glyphs to show in the Title Bar


Specify the Attributes to include…Configure Action List Actionsactionmodels.xml.에 정의합니다.…..For example:Or, if you want to have multiple classes or soft types you can comma separate thelist:…


Indicate if Visualization applies…\Specify the help context to useTo specify a help topic for the info page a service.properties.xconf entry is needed and thehelp selector key from that entry can be added to the describeInfoPage tag.For example:Selector is a help selector key that will be set on the describeInfoPage tag. In theabove example it is PMPartStructureEdit_help.Resource is the help file location and is assumed to be an html file. The help filegets a base of $WT_HOME/codebase/wt/helpfiles/help_Hence in the above example where resource="online.pdm_prodmgmt.PMPartStructureEdit" the englishhelp file will be:$WT_HOME/codebase/wt/helpfiles/help_en/online/pdm_prodmgmt/PMPartStructureEdit.htmlRequestor is the class of the container context that the object is in. For example,parts could be created in either Products or Projects. If the help topic for parts inProjects had to be different from the help topic for parts in Products, an entrycould be added with requestor="wt.projmgmt.admin.Project2".Once the above xconf entry is created, the help topic can be set on the info pageby adding the selector on the describeInfoPage tag:…


Specify the Third Level Navigation Menubar to use…Configure the Third Level Navigation Menus for your object type Create a new 3rd level nav actionThen the image below would be the resulting 3rd level nav content (the action thatled to the above jsp was added to the relatedItems submodel so that is why“Related Objects” is highlighted)SetupParameter DefaultValuePossibleValuesAttribute None See sectionSpecify theAttributes toincludestatusGlyph None TBD SpecifyStatus Glyphsto show in theDescriptiondescribeProperty tag nested indescribePropertyPanel tagdescribeStatusGlyph tag nested indescribeInfoPage tag


Title BarhelpContext None User defined.Specify thehelp context tousenavBarNameUser definedinactionmodels.actionListNameThe actionmodelspecified inactionmodels.xml based onclassname thatis in the oid.xml.User definedinactionmodels.xml. Set onlyif you want tooverridemenuforsetting inactionmodels.xml.As attribute on the describeInfoPagetagAs attribute on the describeInfoPagetagAs attribute on the describeInfoPagetagSample CodeExample implementation for the InfoPageComponent다음의 디렉토리에 info.jsp를 생성합니다.codebase/netmarkets/jsp/coolpart상단과 하단에 다음을 입력합니다.This will be the cool part details pageInfo page를 다음에 등록합니다.codebase/typedservices.propertieswt.services/rsc/default/com.ptc.netmarkets.util.misc.FilePathFactory/InfoPage/wt.part.CoolPart/0=/netmarkets/jsp/coolpart/info.jsp당싞의 새로운 jsp파일을 생성합니다. url은 다음과 같습니다.http:////servlet/TypeBasedIncludeServlet?oid=OR:wt.part.CoolPart:62028페이지 상단에 다음을 등록합니다.describePropertyPanel을 입력합니다.


describeInfoPage를 입력합니다.다음을 include합니다.Here is the example info.jsp:Implementation of Info Page with No 3rd Level Navigation…Or include the line, but with the navBarName value as an empty string:…examples:• WTPart – codebase/netmarkets/jsp/part/info.jsp• WTDocument – codebase/netmarkets/jsp/document/info.jsp


14Incorporating Pickers in JSPClientsTopic PagePicker Interaction .....................................................................................Page 14-2Common Picker Configuration Options.................................................Page 14-14Configuring an Item Picker ....................................................................Page 14-22Configuring an Organization Picker.......................................................Page 14-30Configuring a Revision Label Picker .....................................................Page 14-38Configuring a Type Picker .....................................................................Page 14-39Configuring a Participant Picker ............................................................Page 14-48


Picker InteractionObjective당싞은 page와 picker사이의 manage interaction과 wizard step안에 property picker를설정하기 웎합니다.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!