Initial add of defaria.com
[clearscm.git] / defaria.com / blogs / Status / 2006 / 10 / cloning-done.html
1 <!DOCTYPE html>
2 <html lang="en-us" itemscope itemtype="http://schema.org/Article">
3   <head>
4     <meta charset="utf-8">
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">
12     <!--[if lt IE 9]>
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>
15     <![endif]-->
16     
17     <link rel="start" href="http://defaria.com/blogs/Status/">
18
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">
29     <!-- Metadata -->
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">
33     
34   </head>
35   <body>
36     <div id="container">
37       <div id="container-inner">
38         <header id="header" role="banner">
39           <div id="header-inner">
40             <div id="header-content">
41               <h1>
42                 <a href="http://defaria.com/blogs/Status/">
43
44                   Status
45
46                 </a>
47               </h1>
48               
49             </div>
50
51             <nav role="navigation">
52           <ul>
53             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
54
55
56           </ul>
57         </nav>
58
59           </div>
60         </header>
61         <div id="content">
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>
66             </ul>
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>
75
76   
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>
78   
79
80                    </ul>
81                 </footer>
82                 </div>
83                 <div class="entry-content asset-content" itemprop="articleBody">
84                   <ul>
85   <li>Implemented cloning procedure for DMD/CQ</li>
86 </ul>
87                   <h3>How to clone a parent CQ record to a child</h3>
88
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>
90
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>
92
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>
94
95 <div class=code><pre>
96 my $session = $entity->GetSession;
97
98 $session->NameValue ("ParentID", $entity->GetFieldValue ("id")->GetValue);
99 </pre></div>
100
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>
102
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:
104
105 <div class=code><pre>
106 my $session = $entity->GetSession;
107
108 $session->NameValue ("ParentID", "");
109 </pre></div>
110
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>
112
113 <p>In the default value hooks for each field you want cloned place the following call:</p>
114
115 <div class=code><pre>
116 CloneField ($fieldname);
117 </pre></div>
118
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>
120
121 <p>Finally, create the following Global Script:</p>
122
123 <div class=code><pre>
124 sub CloneField {
125   my $fieldname = shift;
126     
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");
131
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.
135
136     # Get the parent record
137     my $parent = $session->GetEntity ("ChangeRequest", $parentID);
138
139     # Set the child field
140     $entity->SetFieldValue (
141         $fieldname,
142         $parent->GetFieldValue ($fieldname)->GetValue
143     );
144   } # if
145 } # CloneField
146 </pre></div>
147
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>
149                 </div>
150                 <nav class="page-navigation entry-navigation pagination content-nav">
151                   <ul class="page-navigation-list">
152
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>
154
155
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>
157
158                   </ul>
159                 </nav>
160                 <!--
161 <aside id="zenback" class="zenback feedback">
162   Please paste Zenback script code here.
163 </aside>
164 -->
165                 
166                 
167               </article>
168             </div>
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">
173       <div>
174         <input type="text" name="search" value="" placeholder="Search...">
175
176         <input type="hidden" name="IncludeBlogs" value="8">
177
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">
181         </button>
182       </div>
183     </form>
184   </div>
185 </nav>
186 <nav class="widget-archive-category widget">
187   <h3 class="widget-header">Categories</h3>
188   <div class="widget-content">
189     
190       
191     <ul class="widget-list">
192       
193       
194       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/ameriquest/">Ameriquest (99)</a>
195       
196       
197       </li>
198       
199     
200       
201       
202       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/audience/">Audience (3)</a>
203       
204       
205       </li>
206       
207     
208       
209       
210       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/broadcom/">Broadcom (76)</a>
211       
212       
213       </li>
214       
215     
216       
217       
218       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/gpdb/">GPDB (35)</a>
219       
220       
221       </li>
222       
223     
224       
225       
226       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-dynamics/">General Dynamics (61)</a>
227       
228       
229       </li>
230       
231     
232       
233       
234       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/general-electric/">General Electric (13)</a>
235       
236       
237       </li>
238       
239     
240       
241       
242       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/hewlett-packard/">Hewlett Packard (13)</a>
243       
244       
245       </li>
246       
247     
248       
249       
250       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/lynuxworks/">LynuxWorks (162)</a>
251       
252       
253       </li>
254       
255     
256       
257       
258       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/pqa/">PQA (35)</a>
259       
260       
261       </li>
262       
263     
264       
265       
266       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/salira/">Salira (79)</a>
267       
268       
269       </li>
270       
271     
272       
273       
274       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/tellabs/">Tellabs (2)</a>
275       
276       
277       </li>
278       
279     
280       
281       
282       <li class="widget-list-item"><a href="http://defaria.com/blogs/Status/texas-instruments/">Texas Instruments (31)</a>
283       
284       
285       </li>
286       
287     </ul>
288       
289     
290   </div>
291 </nav>
292   
293
294 <nav class="widget-archive-dropdown widget">
295   <h3 class="widget-header">Archives</h3>
296   <div class="widget-content">
297     <select>
298       <option>Select a Month...</option>
299     
300       <option value="http://defaria.com/blogs/Status/2016/02/">February 2016</option>
301     
302   
303     
304       <option value="http://defaria.com/blogs/Status/2014/09/">September 2014</option>
305     
306   
307     
308       <option value="http://defaria.com/blogs/Status/2014/04/">April 2014</option>
309     
310   
311     
312       <option value="http://defaria.com/blogs/Status/2014/03/">March 2014</option>
313     
314   
315     
316       <option value="http://defaria.com/blogs/Status/2013/02/">February 2013</option>
317     
318   
319     
320       <option value="http://defaria.com/blogs/Status/2012/09/">September 2012</option>
321     
322   
323     
324       <option value="http://defaria.com/blogs/Status/2012/08/">August 2012</option>
325     
326   
327     
328       <option value="http://defaria.com/blogs/Status/2012/05/">May 2012</option>
329     
330   
331     
332       <option value="http://defaria.com/blogs/Status/2012/04/">April 2012</option>
333     
334   
335     
336       <option value="http://defaria.com/blogs/Status/2012/02/">February 2012</option>
337     
338   
339     
340       <option value="http://defaria.com/blogs/Status/2012/01/">January 2012</option>
341     
342   
343     
344       <option value="http://defaria.com/blogs/Status/2011/10/">October 2011</option>
345     
346   
347     
348       <option value="http://defaria.com/blogs/Status/2011/07/">July 2011</option>
349     
350   
351     
352       <option value="http://defaria.com/blogs/Status/2010/09/">September 2010</option>
353     
354   
355     
356       <option value="http://defaria.com/blogs/Status/2010/08/">August 2010</option>
357     
358   
359     
360       <option value="http://defaria.com/blogs/Status/2010/04/">April 2010</option>
361     
362   
363     
364       <option value="http://defaria.com/blogs/Status/2010/03/">March 2010</option>
365     
366   
367     
368       <option value="http://defaria.com/blogs/Status/2010/02/">February 2010</option>
369     
370   
371     
372       <option value="http://defaria.com/blogs/Status/2009/05/">May 2009</option>
373     
374   
375     
376       <option value="http://defaria.com/blogs/Status/2009/04/">April 2009</option>
377     
378   
379     
380       <option value="http://defaria.com/blogs/Status/2008/07/">July 2008</option>
381     
382   
383     
384       <option value="http://defaria.com/blogs/Status/2008/05/">May 2008</option>
385     
386   
387     
388       <option value="http://defaria.com/blogs/Status/2008/04/">April 2008</option>
389     
390   
391     
392       <option value="http://defaria.com/blogs/Status/2008/03/">March 2008</option>
393     
394   
395     
396       <option value="http://defaria.com/blogs/Status/2008/02/">February 2008</option>
397     
398   
399     
400       <option value="http://defaria.com/blogs/Status/2008/01/">January 2008</option>
401     
402   
403     
404       <option value="http://defaria.com/blogs/Status/2007/12/">December 2007</option>
405     
406   
407     
408       <option value="http://defaria.com/blogs/Status/2007/11/">November 2007</option>
409     
410   
411     
412       <option value="http://defaria.com/blogs/Status/2007/10/">October 2007</option>
413     
414   
415     
416       <option value="http://defaria.com/blogs/Status/2007/09/">September 2007</option>
417     
418   
419     
420       <option value="http://defaria.com/blogs/Status/2007/08/">August 2007</option>
421     
422   
423     
424       <option value="http://defaria.com/blogs/Status/2007/07/">July 2007</option>
425     
426   
427     
428       <option value="http://defaria.com/blogs/Status/2007/06/">June 2007</option>
429     
430   
431     
432       <option value="http://defaria.com/blogs/Status/2007/05/">May 2007</option>
433     
434   
435     
436       <option value="http://defaria.com/blogs/Status/2007/04/">April 2007</option>
437     
438   
439     
440       <option value="http://defaria.com/blogs/Status/2007/03/">March 2007</option>
441     
442   
443     
444       <option value="http://defaria.com/blogs/Status/2007/01/">January 2007</option>
445     
446   
447     
448       <option value="http://defaria.com/blogs/Status/2006/12/">December 2006</option>
449     
450   
451     
452       <option value="http://defaria.com/blogs/Status/2006/11/">November 2006</option>
453     
454   
455     
456       <option value="http://defaria.com/blogs/Status/2006/10/">October 2006</option>
457     
458   
459     
460       <option value="http://defaria.com/blogs/Status/2006/09/">September 2006</option>
461     
462   
463     
464       <option value="http://defaria.com/blogs/Status/2006/07/">July 2006</option>
465     
466   
467     
468       <option value="http://defaria.com/blogs/Status/2006/06/">June 2006</option>
469     
470   
471     
472       <option value="http://defaria.com/blogs/Status/2006/05/">May 2006</option>
473     
474   
475     
476       <option value="http://defaria.com/blogs/Status/2006/04/">April 2006</option>
477     
478   
479     
480       <option value="http://defaria.com/blogs/Status/2006/03/">March 2006</option>
481     
482   
483     
484       <option value="http://defaria.com/blogs/Status/2006/02/">February 2006</option>
485     
486   
487     
488       <option value="http://defaria.com/blogs/Status/2006/01/">January 2006</option>
489     
490   
491     
492       <option value="http://defaria.com/blogs/Status/2005/12/">December 2005</option>
493     
494   
495     
496       <option value="http://defaria.com/blogs/Status/2005/11/">November 2005</option>
497     
498   
499     
500       <option value="http://defaria.com/blogs/Status/2005/10/">October 2005</option>
501     
502   
503     
504       <option value="http://defaria.com/blogs/Status/2005/09/">September 2005</option>
505     
506   
507     
508       <option value="http://defaria.com/blogs/Status/2005/08/">August 2005</option>
509     
510   
511     
512       <option value="http://defaria.com/blogs/Status/2005/07/">July 2005</option>
513     
514   
515     
516       <option value="http://defaria.com/blogs/Status/2005/06/">June 2005</option>
517     
518   
519     
520       <option value="http://defaria.com/blogs/Status/2005/05/">May 2005</option>
521     
522   
523     
524       <option value="http://defaria.com/blogs/Status/2005/04/">April 2005</option>
525     
526   
527     
528       <option value="http://defaria.com/blogs/Status/2005/03/">March 2005</option>
529     
530   
531     
532       <option value="http://defaria.com/blogs/Status/2005/02/">February 2005</option>
533     
534   
535     
536       <option value="http://defaria.com/blogs/Status/2005/01/">January 2005</option>
537     
538   
539     
540       <option value="http://defaria.com/blogs/Status/2004/12/">December 2004</option>
541     
542   
543     
544       <option value="http://defaria.com/blogs/Status/2004/09/">September 2004</option>
545     
546   
547     
548       <option value="http://defaria.com/blogs/Status/2004/08/">August 2004</option>
549     
550   
551     
552       <option value="http://defaria.com/blogs/Status/2004/07/">July 2004</option>
553     
554   
555     
556       <option value="http://defaria.com/blogs/Status/2004/06/">June 2004</option>
557     
558   
559     
560       <option value="http://defaria.com/blogs/Status/2004/05/">May 2004</option>
561     
562   
563     
564       <option value="http://defaria.com/blogs/Status/2004/04/">April 2004</option>
565     
566   
567     
568       <option value="http://defaria.com/blogs/Status/2004/03/">March 2004</option>
569     
570   
571     
572       <option value="http://defaria.com/blogs/Status/2004/02/">February 2004</option>
573     
574   
575     
576       <option value="http://defaria.com/blogs/Status/2004/01/">January 2004</option>
577     
578   
579     
580       <option value="http://defaria.com/blogs/Status/2003/12/">December 2003</option>
581     
582   
583     
584       <option value="http://defaria.com/blogs/Status/2003/11/">November 2003</option>
585     
586     </select>
587   </div>
588 </nav>
589     
590   
591
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>
595
596   </div>
597 </div>
598
599             </aside>
600           </div>
601         </div>
602         <footer id="footer" role="contentinfo">
603           <div id="footer-inner">
604             <div id="footer-content">
605   <nav role="navigation">
606           <ul>
607             <li><a href="http://defaria.com/blogs/Status/">Home</a></li>
608
609
610           </ul>
611         </nav>
612
613   <p class="license">&copy; Copyright 2016.</p>
614   <p class="poweredby">Powered by <a href="http://www.movabletype.org/">Movable Type</a></p>
615 </div>
616           </div>
617         </footer>
618       </div>
619     </div>
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>
622   </body>
623 </html>