2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
5 <meta name="description" content=" Implemented cloning procedure for DMD/CQ...">
6 <meta name="generator" content="Movable Type 5.2.3">
7 <title>Cloning done - Status</title>
8 <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="http://defaria.com/blogs/Status/atom.xml">
9 <link rel="canonical" href="http://defaria.com/blogs/Status/2006/10/cloning-done.html">
10 <meta name="viewport" content="width=device-width,initial-scale=1">
11 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles.css">
13 <link rel="stylesheet" href="http://defaria.com/blogs/Status/styles_ie.css">
14 <script src="/mt/mt-static/support/theme_static/rainier/js/html5shiv.js"></script>
17 <link rel="start" href="http://defaria.com/blogs/Status/">
19 <link rel="prev" href="http://defaria.com/blogs/Status/2006/10/cclic-reportgpd.html" title="cclic_report/gpdb_putDesignsync bug">
20 <link rel="next" href="http://defaria.com/blogs/Status/2006/11/convertdb.html" title="Convertdb">
21 <!-- Open Graph Protocol -->
22 <meta property="og:type" content="article">
23 <meta property="og:locale" content="en-us">
24 <meta property="og:title" content="Cloning done">
25 <meta property="og:url" content="http://defaria.com/blogs/Status/2006/10/cloning-done.html">
26 <meta property="og:description" content=" Implemented cloning procedure for DMD/CQ...">
27 <meta property="og:site_name" content="Status">
28 <meta property="og:image" content="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
30 <meta itemprop="description" content=" Implemented cloning procedure for DMD/CQ...">
31 <link itemprop="url" href="http://defaria.com/blogs/Status/2006/10/cloning-done.html">
32 <link itemprop="image" href="/mt/mt-static/support/theme_static/rainier/img/siteicon-sample.png">
37 <div id="container-inner">
38 <header id="header" role="banner">
39 <div id="header-inner">
40 <div id="header-content">
42 <a href="http://defaria.com/blogs/Status/">
51 <nav role="navigation">
53 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
62 <div id="content-inner">
63 <ul class="breadcrumb breadcrumb-list">
64 <li class="breadcrumb-list-item"><a href="http://defaria.com/blogs/Status/">Home</a></li>
65 <li class="breadcrumb-list-item">Cloning done</li>
67 <div id="individual-main" class="main" role="main">
68 <article id="entry-1845" class="entry entry-asset asset hentry">
69 <div class="asset-header">
70 <h2 itemprop="name" class="asset-name entry-title">Cloning done</h2>
71 <footer class="asset-meta">
72 <ul class="asset-meta-list">
73 <li class="asset-meta-list-item">Posted on <time datetime="2006-10-31T11:18:55-08:00" itemprop="datePublished">October 31, 2006</time></li>
74 <li class="asset-meta-list-item">by <span class="author entry-author vcard"></span></li>
77 <li class="asset-meta-list-item">in <a itemprop="articleSection" rel="tag" href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments</a></li>
83 <div class="entry-content asset-content" itemprop="articleBody">
85 <li>Implemented cloning procedure for DMD/CQ</li>
87 <h3>How to clone a parent CQ record to a child</h3>
89 <p>You would think that this would be clearly documented in the CQ manual but it isn't. The requirement is clear enough - "implement parent/child relationships for a CQ record... Oh and when a child is created could you copy everything from the parent and we'll change what's different in the child".</p>
91 <p>Implementing a parent/child relationship is pretty clear and documented - basically you create a reference link in the current record back to itself. CQ even has a parent/child control that handles manipulating the relationship allowing the user the controls to link in existing records, delete a parent/child relationship or add a new record as a child of this record. But there is nothing in there about copying data from the parent to the child. This you must do with hooks. But how to code the hooks?</p>
93 <p>I found a method for doing this and implemented the following. The trick is to add pre and post hooks to the <b>New</b> button of the parent/child control. This button is selected when the user wishes to add a new child record to this parent. The pre action hook, created as a <i>Record Script</i> set a session wide variable saying "Hey I'm adding a new child record to this parent". This variable contains the ID of the parent. The following code accomplishes this:</p>
96 my $session = $entity->GetSession;
98 $session->NameValue ("ParentID", $entity->GetFieldValue ("id")->GetValue);
101 <p>After creating this record script add it as the pre-action hook for the new button. Don't forget to toggle the Enable for CQ Web (I don't really understand why you would ever not toggle that).</p>
103 <p>For the post-action script you are basically saying "Hey I'm no longer adding a new child record to this parent" with the following code:
105 <div class=code><pre>
106 my $session = $entity->GetSession;
108 $session->NameValue ("ParentID", "");
111 <p>What this does is effectively bound the time you are in this unique situation - any other time the global session variable ParentID will be blank. Now the cloning can begin...</p>
113 <p>In the default value hooks for each field you want cloned place the following call:</p>
115 <div class=code><pre>
116 CloneField ($fieldname);
119 <p>This is written as a call to a Global Script since the code will always be the same and because you'll have to do this for each field that you wish cloned.</p>
121 <p>Finally, create the following Global Script:</p>
123 <div class=code><pre>
125 my $fieldname = shift;
127 # Check session wide global, ParentID, and if set retrieve
128 # the parent record and clone this field
129 my $session = $entity->GetSession;
130 my $parentID = $session->GetNameValue ("ParentID");
132 if ($parentID ne "") {
133 # If ParentID is not blank then we are adding a subtask.
134 # Copy this field from the parent to this new child.
136 # Get the parent record
137 my $parent = $session->GetEntity ("ChangeRequest", $parentID);
139 # Set the child field
140 $entity->SetFieldValue (
142 $parent->GetFieldValue ($fieldname)->GetValue
148 <p>This script checks to see if the session global "ParentID" is not blank, indicating that we are in this special mode of adding a new child to an existing parent, and if so, gets the parent record and the field value based on the passed in field name. Finally it sets the field value based on the field name to that of the value of the corresponding parent's field value.</p>
150 <nav class="page-navigation entry-navigation pagination content-nav">
151 <ul class="page-navigation-list">
153 <li class="page-navigation-list-item page-navigation-prev"><a rel="prev" href="http://defaria.com/blogs/Status/2006/10/cclic-reportgpd.html" title="cclic_report/gpdb_putDesignsync bug">Previous entry</a></li>
156 <li class="page-navigation-list-item page-navigation-next"><a rel="next" href="http://defaria.com/blogs/Status/2006/11/convertdb.html" title="Convertdb">Next entry</a></li>
161 <aside id="zenback" class="zenback feedback">
162 Please paste Zenback script code here.
169 <aside class="widgets related" role="complementary">
170 <nav class="widget-search widget">
171 <div class="widget-content">
172 <form method="get" id="search" action="http://defaria.com/mt/mt-search.cgi">
174 <input type="text" name="search" value="" placeholder="Search...">
176 <input type="hidden" name="IncludeBlogs" value="8">
178 <input type="hidden" name="limit" value="20">
179 <button type="submit" name="button">
180 <img alt="Search" src="/mt/mt-static/support/theme_static/rainier/img/search-icon.png">
186 <nav class="widget-archive-category widget">
187 <h3 class="widget-header">Categories</h3>
188 <div class="widget-content">
191 <ul class="widget-list">
194 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
202 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
210 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
218 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
226 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
234 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
242 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
250 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
258 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
266 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
274 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
282 <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
294 <nav class="widget-archive-dropdown widget">
295 <h3 class="widget-header">Archives</h3>
296 <div class="widget-content">
298 <option>Select a Month...</option>
300 <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
304 <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
308 <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
312 <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
316 <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
320 <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
324 <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
328 <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
332 <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
336 <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
340 <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
344 <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
348 <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
352 <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
356 <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
360 <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
364 <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
368 <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
372 <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
376 <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
380 <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
384 <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
388 <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
392 <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
396 <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
400 <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
404 <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
408 <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
412 <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
416 <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
420 <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
424 <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
428 <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
432 <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
436 <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
440 <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
444 <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
448 <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
452 <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
456 <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
460 <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
464 <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
468 <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
472 <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
476 <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
480 <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
484 <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
488 <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
492 <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
496 <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
500 <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
504 <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
508 <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
512 <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
516 <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
520 <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
524 <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
528 <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
532 <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
536 <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
540 <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
544 <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
548 <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
552 <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
556 <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
560 <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
564 <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
568 <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
572 <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
576 <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
580 <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
584 <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
592 <div class="widget-syndication widget section">
593 <div class="widget-content">
594 <p><img src="http://defaria.com/mt/mt-static/images/status_icons/feed.gif" alt="Subscribe to feed" width="9" height="9" /> <a href="http://defaria.com/blogs/Status/atom.xml">Subscribe to this blog's feed</a></p>
602 <footer id="footer" role="contentinfo">
603 <div id="footer-inner">
604 <div id="footer-content">
605 <nav role="navigation">
607 <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
613 <p class="license">© Copyright 2016.</p>
614 <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
620 <script src="http://defaria.com/mt/mt-static/jquery/jquery.min.js"></script>
621 <script src="http://defaria.com/blogs/Status/mt-theme-scale2.js"></script>