{"id":10553,"date":"2015-05-14T15:12:47","date_gmt":"2015-05-14T20:12:47","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=10553"},"modified":"2015-07-29T16:23:53","modified_gmt":"2015-07-29T21:23:53","slug":"sun-idm-8-1using-the-identity-manager-ide","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=10553","title":{"rendered":"Sun IDM 8.1:Using the Identity Manager IDE"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Intro\">Intro<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Download_and_Install_IDE\">Download and Install IDE<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#IDM_projects\">IDM projects<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Identity_Manager_Project\">Identity Manager Project<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Create_IDM_Project\">Create IDM Project<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Set_Current_CBE_Target\">Set Current CBE Target<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Manage_Embedded_Repository\">Manage Embedded Repository<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Identity_Manager_Project_Remote\">Identity Manager Project (Remote)<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Working_with_Repository_Objects\">Working with Repository Objects<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Supported_Object_Types\">Supported Object Types<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Getting_objects_from_repository\">Getting objects from repository<\/a>\n\t\t\t\t<ol class='toc-odd level-3'>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Removing_Object_IDs\">Removing Object IDs<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Automatically_Upload_Objects_to_Repository\">Automatically Upload Objects to Repository<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href=\"#Using_CBE_Pattern_Substitution\">Using CBE Pattern Substitution<\/a>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_New_Objects\">Create New Objects<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Edit_Object_Properties\">Edit Object Properties<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Delete_Objects\">Delete Objects<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Diff_Objects\">Diff Objects<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Working_with_XML\">Working with XML<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#IDE_Debugger\">IDE Debugger<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Debugging_Forms\">Debugging Forms<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Test_Rules\">Test Rules<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Debugging_Workflows\">Debugging Workflows<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Tutorial\">Tutorial<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Import_debugger-tutorial.xml\">Import debugger-tutorial.xml<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Start_Debugging\">Start Debugging<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Example_1:_Debugging_a_Workflow_and_a_Rule\">Example 1: Debugging a Workflow and a Rule<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Example_2:_Debugging_a_Workflow_Containing_a_Manual_Action_and_a_Form_\">Example 2: Debugging a Workflow Containing a Manual Action and a Form <\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Example_3:_Debugging_the_Tabbed_User_Form_and_Refresh_View\">Example 3: Debugging the Tabbed User Form and Refresh View<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Debugging_Java_and_XPRESS\">Debugging Java and XPRESS<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#References\">References<\/a>\n\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<span id=\"Intro\"><h2>Intro<\/h2><\/span>\n<p>* IDM IDE is used to:<br \/>\n&#8211; CRUD configuration and generic objects, forms, workflows, rules, email templates, and rule libraries<br \/>\n&#8211; Download\/upload objects to repository<br \/>\n&#8211; Debug forms, rules, and workflows<br \/>\n&#8211; Create projects that are associated with specific repositories<\/p>\n<span id=\"Download_and_Install_IDE\"><h2>Download and Install IDE<\/h2><\/span>\n<p>* Download IDE from <a href=\"https:\/\/java.net\/projects\/identitymanageride\/downloads\">here<\/a>. E.g. <a href=\"https:\/\/java.net\/projects\/identitymanageride\/downloads\/download\/com-sun-idm-ide_8.1.0.20080630.nbm\">IDM 8.1 GA<\/a><br \/>\n* Install downloaded plugin into Netbeans using <em>Tools > Plugins > Downloaded > Add Plugins&#8230;<\/em><\/p>\n<span id=\"IDM_projects\"><h2>IDM projects<\/h2><\/span>\n<p>* An IDM Project is tied to one and only one specific repository<br \/>\n* Each IDE project is tied to a specific IDM version which is provided in the compatibility bundle<\/p>\n<span id=\"Identity_Manager_Project\"><h3>Identity Manager Project<\/h3><\/span>\n<p>* Fully featured dev environment including:<br \/>\n&#8211; a sample CBE (Configuration Build Environment)<br \/>\n&#8211; can manage Java code and JSPs<br \/>\n&#8211; interact with NetBeans embedded app server so you can deploy idm.war file locally<br \/>\n&#8211; integrated Java, JSP, workflow, form and XPRESS debugging<br \/>\n&#8211; embedded database repository<br \/>\n* Compatibility bundle is included in idm.war<br \/>\n* Upgrade project to a newer version:<br \/>\n&#8211; Shutdown NetBeans<br \/>\n&#8211; Manually upgrade all your objects, custom JSPs, and the contents of your project&#8217;s idm-staging directory<br \/>\n&#8211; replace the existing nbproject\/ide-bundle.zip with that from the version  to which you are upgrading.<\/p>\n<span id=\"Create_IDM_Project\"><h4>Create IDM Project<\/h4><\/span>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_1-300x205.jpg\" alt=\"idm81_ide_createProj_1\" width=\"300\" height=\"205\" class=\"aligncenter size-medium wp-image-10718\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_1-300x205.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_1.jpg 719w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_2-300x203.jpg\" alt=\"idm81_ide_createProj_2\" width=\"300\" height=\"203\" class=\"aligncenter size-medium wp-image-10719\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_2-300x203.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_2.jpg 728w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_2\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_3-300x203.jpg\" alt=\"idm81_ide_createProj_3\" width=\"300\" height=\"203\" class=\"aligncenter size-medium wp-image-10720\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_3-300x203.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_3.jpg 729w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Create embedded repository: creates an embedded repository for the default <em>sandbox<\/em> CBE target (based on hsql DB Server @ jdbc:hsqldb:hsql:\/\/127.0.0.1:54881\/idm)<br \/>\n&#8211; Initialize repository: imports init.xml file from idm.war. Do <strong>not<\/strong> enable this if you want to reuse a repository from another project<br \/>\n&#8211; Automatically Publish Identity Manager Objects: publish every time you Run or Debug project<\/p>\n<span id=\"_3\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_4_embeddedRepo.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_4_embeddedRepo-300x219.jpg\" alt=\"idm81_ide_createProj_4_embeddedRepo\" width=\"300\" height=\"219\" class=\"aligncenter size-medium wp-image-10723\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_4_embeddedRepo-300x219.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_4_embeddedRepo.jpg 717w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Manually setup repository:<br \/>\n&#8211; copy jdbc jar file, e.g. mysql-connector-java-5.1.6-bin.jar, into project&#8217;s <em>custom\/WEB-INF\/lib<\/em> directory<br \/>\n&#8211; right click project name and select <em>IDM > Run LH<\/em> Command<br \/>\n&#8211; enter <strong>setup<\/strong> into LH Command field and then click OK<br \/>\n* Setup repository, e.g. using MySQL:<br \/>\n&#8211; welcome screeen:<\/p>\n<span id=\"_4\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH-300x206.jpg\" alt=\"idm81_ide_createProj_6_runLH\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-10754\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH.jpg 672w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_5\"><h6><\/h6><\/span>\n<p>&#8211; db connection:<\/p>\n<span id=\"_6\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_mysql.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_mysql-300x202.jpg\" alt=\"idm81_ide_createProj_6_runLH_mysql\" width=\"300\" height=\"202\" class=\"aligncenter size-medium wp-image-10755\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_mysql-300x202.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_mysql.jpg 683w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; setup demo user:<\/p>\n<span id=\"_7\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_demo.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_demo-300x205.jpg\" alt=\"idm81_ide_createProj_6_runLH_demo\" width=\"300\" height=\"205\" class=\"aligncenter size-medium wp-image-10756\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_demo-300x205.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_demo.jpg 687w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; smtp setting:<\/p>\n<span id=\"_8\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_SMTP.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_SMTP-300x201.jpg\" alt=\"idm81_ide_createProj_6_runLH_SMTP\" width=\"300\" height=\"201\" class=\"aligncenter size-medium wp-image-10757\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_SMTP-300x201.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_SMTP.jpg 689w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; apply configuration:<\/p>\n<span id=\"_9\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_execute.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_execute-300x202.jpg\" alt=\"idm81_ide_createProj_6_runLH_execute\" width=\"300\" height=\"202\" class=\"aligncenter size-medium wp-image-10758\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_execute-300x202.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_execute.jpg 689w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; done:<\/p>\n<span id=\"_10\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_done.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_done-300x207.jpg\" alt=\"idm81_ide_createProj_6_runLH_done\" width=\"300\" height=\"207\" class=\"aligncenter size-medium wp-image-10759\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_done-300x207.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_createProj_6_runLH_done.jpg 688w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_11\"><h6><\/h6><\/span>\n<span id=\"Set_Current_CBE_Target\"><h4>Set Current CBE Target<\/h4><\/span>\n<p>* Right click IDM project and select <em>Properties<\/em><br \/>\n* Set IDM Instance: <em>IDM Properties > IDM Instance > Current CBE Target<\/em><\/p>\n<span id=\"_12\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_setIDMInst_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_setIDMInst_1-300x208.jpg\" alt=\"idm81_ide_setIDMInst_1\" width=\"300\" height=\"208\" class=\"aligncenter size-medium wp-image-10722\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_setIDMInst_1-300x208.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_setIDMInst_1.jpg 745w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Manage_Embedded_Repository\"><h4>Manage Embedded Repository<\/h4><\/span>\n<p>* <em>IdM > Repository > Manage Embedded Repository<\/em><\/p>\n<span id=\"_13\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_mngEmbedRepo_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_mngEmbedRepo_1-300x252.jpg\" alt=\"idm81_ide_mngEmbedRepo_1\" width=\"300\" height=\"252\" class=\"aligncenter size-medium wp-image-10721\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_mngEmbedRepo_1-300x252.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_mngEmbedRepo_1.jpg 452w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Identity_Manager_Project_Remote\"><h3>Identity Manager Project (Remote)<\/h3><\/span>\n<p>* Used to make small modifications and to perform debugging on an external server<br \/>\n&#8211; no build environment<br \/>\n&#8211; cannot launch idm.war file<br \/>\n* Compatibility bundle location:<br \/>\nIdentity Manager install root\/<em>sample\/ide-bundle.zip<\/em> <\/p>\n<span id=\"Working_with_Repository_Objects\"><h2>Working with Repository Objects<\/h2><\/span>\n<span id=\"Supported_Object_Types\"><h3>Supported Object Types<\/h3><\/span>\n<p>* Configuration object: a persistent object that contains forms and workflow processes.<br \/>\n* Email templates: templates used to send notification of varioius changes and actions to user and administrators.<br \/>\n* Form: an object associated with a web page that contains rules about how a browser should display user view attributes on that page. Form can contain business logic.<br \/>\n* Generic object: An object typically used to represent views, such as simple collections of name\/value pairs. Generic objects have an Extension of type Object.<br \/>\n* Library: An object used to organize closely related objects, typically rules, into a single object in the repository. Organizing objects into libraries makes it easier for workflow and form designers to identity useful objects.<br \/>\n* MetaView: In Identity Manager, a meta view is a unified view of all resources, providing a common data model in which to view a set of resources and how attributes on these resources flow from one to another.<br \/>\n* Rule: Objects in the Identity Manager repository that contain functions written in the XPRESS, XML Object, or JavaScript languages. Within Identity Manager, rules store frequently used logic or static variables for reuse in forms, workflows, and roles.<br \/>\n* Workflow Process: A workflow is a logical, repeatable process during which documents, information, or tasks are passed from one participant to another. Identity Manager workflows comprise multiple processes that control user accounts, such as account creation, update, enabling, disabling, and deletion.<br \/>\n* Workflow Subprocess: An object used to create a workflow subprocess to be included in a workflow.<\/p>\n<p>* Check out view<\/p>\n<span id=\"Getting_objects_from_repository\"><h3>Getting objects from repository<\/h3><\/span>\n<p>* Right click Custom Identity Manager Objects, select <em>IDM <\/em>and then appropriate actions:<\/p>\n<span id=\"_14\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-popupMenu.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-popupMenu-300x207.jpg\" alt=\"idm81_ide_IDM-popupMenu\" width=\"300\" height=\"207\" class=\"aligncenter size-medium wp-image-10717\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-popupMenu-300x207.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-popupMenu.jpg 565w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Download Object(s)<br \/>\n&#8211; Open object<\/p>\n<span id=\"_15\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObject_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObject_1-300x245.jpg\" alt=\"idm81_ide_openObject_1\" width=\"300\" height=\"245\" class=\"aligncenter size-medium wp-image-10725\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObject_1-300x245.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObject_1.jpg 393w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Open object reference<\/p>\n<span id=\"_16\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_1-300x124.jpg\" alt=\"idm81_ide_openObjectReference_1\" width=\"300\" height=\"124\" class=\"aligncenter size-medium wp-image-10726\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_1-300x124.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_1.jpg 596w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_17\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_2-300x258.jpg\" alt=\"idm81_ide_openObjectReference_2\" width=\"300\" height=\"258\" class=\"aligncenter size-medium wp-image-10727\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_2-300x258.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_2.jpg 439w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_18\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_3-300x172.jpg\" alt=\"idm81_ide_openObjectReference_3\" width=\"300\" height=\"172\" class=\"aligncenter size-medium wp-image-10728\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_3-300x172.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_openObjectReference_3.jpg 586w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>&#8211; Reload object(s)<br \/>\n&#8211; Upload object(s)<\/p>\n<span id=\"Removing_Object_IDs\"><h4>Removing Object IDs<\/h4><\/span>\n<p>* Used to move objects from one repository to another<br \/>\n* Identity Manager IDE locates and removes all object IDs and objectRef IDs that conform to a specified expression \u2014 without removing any hard-coded, predefined IDs.<\/p>\n<span id=\"Automatically_Upload_Objects_to_Repository\"><h4>Automatically Upload Objects to Repository<\/h4><\/span>\n<p>* Only available for embedded repository: IDM > Manage Embedded Repository > Automatically Publish Identity Manager Objects<\/p>\n<span id=\"_19\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-autoPublish.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-autoPublish-300x80.jpg\" alt=\"idm81_ide_IDM-autoPublish\" width=\"300\" height=\"80\" class=\"aligncenter size-medium wp-image-10729\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-autoPublish-300x80.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-autoPublish.jpg 451w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Using_CBE_Pattern_Substitution\"><h4>Using CBE Pattern Substitution<\/h4><\/span>\n<p>* Used when uploading objects to an embedded or external instance<br \/>\n* Enabled by <em>Properties > IDM Properties > Miscellaneous > Apply Pattern Substitution<\/em><\/p>\n<span id=\"_20\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-patternSub.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-patternSub-300x120.jpg\" alt=\"idm81_ide_IDM-patternSub\" width=\"300\" height=\"120\" class=\"aligncenter size-medium wp-image-10730\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-patternSub-300x120.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-patternSub.jpg 617w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Pattern substitutions are defined in <em>target-name.properties<\/em>, which is defined in <em>build.xml<\/em> and defaults to IDM project root directory.<br \/>\n* For example, sandbox-target.properties:<\/p>\n<pre lang=\"bash\">\r\n#Target Properties\r\n#Fri Nov 03 10:00:07 CST 2006\r\n%%IDM_URL%%=http\\:\/\/localhost\\:9191\/idm\r\n%%TARGET_NAME%%=sandbox\r\n%%NOTIFICATION_REDIRECT%%=\r\n%%TABLESPACE%%=abc_sandbox\r\n%%SMTP_HOST%%=mail.xyzcompany.com\r\n%%DEFAULT_FROM_ADDRESS%%=admin@xyzcompany.com\r\n%%LOG_DIR%%=C\\:\/temp\r\n%%CUSTOM_SERVER_REPOSITORY%%=nbproject\/private\/sandbox-ServerRepository.xml\r\n<\/pre>\n<span id=\"Create_New_Objects\"><h3>Create New Objects<\/h3><\/span>\n<p>* <em>File > New File&#8230; > Sun Identity Manager Objects<\/em><\/p>\n<span id=\"_21\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-createNewObj_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-createNewObj_1-300x206.jpg\" alt=\"idm81_ide_IDM-createNewObj_1\" width=\"300\" height=\"206\" class=\"aligncenter size-medium wp-image-10731\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-createNewObj_1-300x206.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-createNewObj_1.jpg 721w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"Edit_Object_Properties\"><h3>Edit Object Properties<\/h3><\/span>\n<p>* Expression builder dialog?<br \/>\n* Add elements to an object<\/p>\n<span id=\"Delete_Objects\"><h3>Delete Objects<\/h3><\/span>\n<span id=\"Diff_Objects\"><h3>Diff Objects<\/h3><\/span>\n<span id=\"Working_with_XML\"><h2>Working with XML<\/h2><\/span>\n<span id=\"IDE_Debugger\"><h2>IDE Debugger<\/h2><\/span>\n<p>* Start debugger: <em>Proj > IDM > Attach Identity Manager Debugger<\/em><br \/>\n* Set breakpoints: click left margin of the source editor, immediately adjacent to the tag where you want to add a breakpoint.<br \/>\n* Using watches<br \/>\n* Step through:<br \/>\n&#8211; F7: step into<br \/>\n&#8211; F8: step over<br \/>\n&#8211; Ctr-F7: step out<\/p>\n<span id=\"Debugging_Forms\"><h3>Debugging Forms<\/h3><\/span>\n<p>* Launch form tester: from form xml source, right click form element and select <em>Test Form<\/em><br \/>\n* To avoid login every time you test a form, Set <em>System Configuration > allowInterAppAuthentication<\/em> to <strong>true<\/strong><\/p>\n<span id=\"Test_Rules\"><h3>Test Rules<\/h3><\/span>\n<p>* Setup Rule Tester input values: from rule xml source, right click rule element and select <em>Test Rule&#8230;<\/em> (note the &#8230;). Enter input test values:<\/p>\n<span id=\"_22\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-testRule_1_input.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-testRule_1_input-300x91.jpg\" alt=\"idm81_ide_IDM-testRule_1_input\" width=\"300\" height=\"91\" class=\"aligncenter size-medium wp-image-10732\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-testRule_1_input-300x91.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-testRule_1_input.jpg 483w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Launch Rule Tester: from rule xml source, right click rule element and select <em>Test Rule<\/em><br \/>\n* Start IDM Debugger: <em>Run > Debug Main Project<\/em><br \/>\n* Set a breakpoint for the rule<br \/>\n* Launch <em>Rule Tester <\/em>to test together with debugging.<\/p>\n<span id=\"Debugging_Workflows\"><h3>Debugging Workflows<\/h3><\/span>\n<span id=\"Tutorial\"><h2>Tutorial<\/h2><\/span>\n<span id=\"Import_debugger-tutorial.xml\"><h3>Import debugger-tutorial.xml<\/h3><\/span>\n<p>* Login IDM as <em>configurator<\/em><br \/>\n* Select <em>Configure > Import Exchange File<\/em><br \/>\n* Browse to <em>C:\\prog\\apache-tomcat-6.0.41\\webapps\\idm\\sample\\debugger-tutorial.xml<\/em><\/p>\n<span id=\"_23\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_1-300x295.jpg\" alt=\"idm81_ide_IDM-tutorial_prepare_1\" width=\"300\" height=\"295\" class=\"aligncenter size-medium wp-image-10733\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_1-300x295.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_1.jpg 527w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* Click <em>Import<\/em><\/p>\n<span id=\"_24\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_prepare_2.jpg\" alt=\"idm81_ide_IDM-tutorial_prepare_2\" width=\"294\" height=\"172\" class=\"aligncenter size-full wp-image-10734\" \/><\/a><\/h6><\/span>\n<span id=\"Start_Debugging\"><h3>Start Debugging<\/h3><\/span>\n<p>* From IDE, download objects:<br \/>\n&#8211; debugger-tutorial-workflow1<br \/>\n&#8211; debugger-tutorial-workflow2<br \/>\n* Restart Tomcat<br \/>\n* Launch IDE Debugger: <em>Run > Debug Main Project<\/em><\/p>\n<span id=\"Example_1:_Debugging_a_Workflow_and_a_Rule\"><h3>Example 1: Debugging a Workflow and a Rule<\/h3><\/span>\n<p>* Open <em>debugger-tutorial-workflow1.xml<\/em> object<br \/>\n* Set breakpoint at the start of the workflow to the right of <em>WFProcess<\/em><br \/>\n* Login IDM, select <em>Server Tasks > Run Tasks<\/em><br \/>\n* Click <em>debugger-tutorial-workflow1<\/em><\/p>\n<span id=\"Example_2:_Debugging_a_Workflow_Containing_a_Manual_Action_and_a_Form_\"><h3>Example 2: Debugging a Workflow Containing a Manual Action and a Form <\/h3><\/span>\n<p>* Open <em>debugger-tutorial-workflow2.xml<\/em> object<br \/>\n* Set breakpoint at the start of the workflow to the right of <em>WFProcess<\/em><br \/>\n* Login IDM, select <em>Server Tasks > Run Tasks<\/em><br \/>\n* Click <em>debugger-tutorial-workflow2<\/em><\/p>\n<span id=\"Example_3:_Debugging_the_Tabbed_User_Form_and_Refresh_View\"><h3>Example 3: Debugging the Tabbed User Form and Refresh View<\/h3><\/span>\n<p>* Create a new XPRESS breakpoint:<\/p>\n<span id=\"_25\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_breakpoint_refreshView_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_breakpoint_refreshView_1-300x232.jpg\" alt=\"idm81_ide_IDM-tutorial_breakpoint_refreshView_1\" width=\"300\" height=\"232\" class=\"aligncenter size-medium wp-image-10735\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_breakpoint_refreshView_1-300x232.jpg 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2015\/05\/idm81_ide_IDM-tutorial_breakpoint_refreshView_1.jpg 432w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<p>* From IDM create a new user: <em>Accounts > New User<\/em><br \/>\n* Enter first name and last name<br \/>\n* Click a different tab to trigger a refresh view operation<\/p>\n<span id=\"Debugging_Java_and_XPRESS\"><h3>Debugging Java and XPRESS<\/h3><\/span>\n<p>* Create Java classs:<\/p>\n<pre lang=\"java\">\r\npackage testpackage;\r\n\r\npublic class TestClass {\r\n\r\n    public static String concat(String s1, String s2) {\r\n        return s1 + s2;\r\n    }\r\n}\r\n<\/pre>\n<p>* Create TestRule.xml:<\/p>\n<pre lang=\"xml\">\r\n<?xml version='1.0' encoding='UTF-8'?>\r\n<!DOCTYPE Rule PUBLIC 'waveset.dtd' 'waveset.dtd'>\r\n<Rule id='#ID#Rule:TestRule' name='TestRule'>\r\n    <MemberObjectGroups>\r\n        <ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'\/>\r\n    <\/MemberObjectGroups>\r\n    <invoke class='testpackage.TestClass' name='concat'>\r\n        <s>myprefix.<\/s>\r\n        <ref>arg2<\/ref>\r\n    <\/invoke> \r\n<\/Rule>\r\n<\/pre>\n<p>* Clean, rebuild<br \/>\n* Test Rule<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"https:\/\/docs.oracle.com\/cd\/E19164-01\/820-0820\/IDE_intro.html\">Using the Identity Manager IDE<\/a><br \/>\n* <a href=\"https:\/\/wikis.oracle.com\/display\/sunidmdev\/Identity+Manager+IDE\">Identity Manager IDE Wiki<\/a><br \/>\n* <a href=\"https:\/\/java.net\/projects\/identitymanageride\/downloads\">DENTITYMANAGERIDE Downloads<\/a><br \/>\n* <a href=\"https:\/\/docs.oracle.com\/cd\/E19365-01\/819-6127\/index.html\">Sun Java[TM] System Identity Manager 7.0 Deployment Tools<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro * IDM IDE is used to: &#8211; CRUD configuration and generic objects, forms, workflows, rules, email templates, and rule libraries &#8211; Download\/upload objects to repository &#8211; Debug forms, rules, and workflows &#8211; Create projects that are associated with specific &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=10553\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[530],"tags":[539,651],"class_list":["post-10553","post","type-post","status-publish","format-standard","hentry","category-sunidm","tag-ide-2","tag-sunidm"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-2Kd","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/10553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10553"}],"version-history":[{"count":13,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/10553\/revisions"}],"predecessor-version":[{"id":10841,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/10553\/revisions\/10841"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}