Prior to Windchill 11.0: Required using the same Windchill Workgroup Manager CPS on both the server and client machines.
Windchill 11.0 M010 Onwards:
You can use different CPS levels on the Windchill server and client machines within the same maintenance release.
Workgroup Manager will now check version compatibility at the Windchill maintenance version level; not at the CPS level.
Windchill Workgroup Manager is no longer installed from the Windchill server.
A company now has the flexibility to have their end users at desired CPS levels and still connect to a single Windchill server.
For example, the following scenario is supported.
A company has Windchill 11.0 M010 CPS05 server and user ‘A’ can connect to the Windchill server with Windchill Workgroup Manager 11.0 M010 CPS03 and user ‘B’ can connect to the same server with Windchill Workgroup Manager 11.0 M010 CPS07.
Illustrated below is the supported configuration.
Very informative Gary. If you are looking for another topic to cover, I would recommend a blog post on How to efficiently publish or republish unrelated datasets. Most customers are having to customize Windchill to be able to publish a list of cad objects residing in a CSV file. I'd like for PTC to have documentation for the process. I have two use case examples:
1) I have identified a list of objects that currently do not have a representation....want to send these to the publisher as a low priority.
2) I have a list of objects that need republished through an upgraded object adapter, recipe file or new config setting. I need the representation deleted and then republished to attain the new functionality or feature. (I can guarantee the customers are not able to 100% define what they want as the output for Creo View the first time. )
Regarding the suggested topic... I agree, this has long been a WVS gap and I'm pretty sure there is something in the backlog for a future release. The idea was to provide a Generic WVS Job Scheduler method that would take a Windchill Query (created using the Report Management tool / formerly Query Builder) as input and create publish / republish jobs for the resulting list of objects.
The only current alternative I am aware of, short of customization, is to use custom SQL (or a Windchill Query) to output the DerivedImage OID's to a file, use this with the DeleteRepUtil (article CS62748) to remove all of the Representations and then to republish them using the out-of-the-box PublishAllLatestEPMDocumentsNoRepresentation scheduler method (article CS113279).
However, if we get decent interest in your post from this Community or indeed, in the form of submitted Ideas (Create a product idea action in Windchill Community) and Enhancement SPR's (Premium Accounts), then I will pass this information back to Product Management.
I would like to second Bill's comments. We desperately need the ability to do exactly what he is describing in his second point - republish existing objects. I have no idea how to write Java code to create custom publish schedules. While I might be able to work through the steps you're listing, the PublishAllLatestEPMDocumentsNoRepresentation will only work for the latest version. At the same time, using the PublishAllEPMDocumentsNoRepresentation will sweep up 10's of thousands of other objects that don't need to be published. We really, really need a simple way of defining what we want to (re)publish and how we want them published (assuming multiple methods are configured via publish rules.)
Bill / Tom et al,
The ideal solution, I'm sure you agree, would be an out-of-the-box, supported method of republishing a list of affected DerivedImage OID's, whether from a flat file (CSV or simple list) or using the results of a saved custom Windchill Report Management Query. In the short term, however, we may be able to consider providing the sample code and configuration steps for a custom, unsupported WVS Job Scheduler method that does this.
I will take a look in to this and see what can be provided and consider this for a future article and related blog post.
This is great news that this is being considered. It's even better that you are accomodating two types of workflows!. My current process of identification utilizes Creo View Bill of Material Export Functionality
1) Open Large Assembly in Creo View
2) Only load the branch links of the systems I'm interested in. Example Cab or Chassis.
3) Use Bill of Material option under Tools menu in MCAD Creo View to generate list
4) Export the list out of Creo View with the columns as shown in image below.
Utilizing this process, I can identify which objects do not have images (source file name field is empty) and identify which object adapter published the image (these are the potential republish items).
I'm curious if the derivedimage OID is an available attribute within Croe View. I see epmdoc_objectid...but I don't specifically see derived image in the list of available attributes....maybe this attribute is the same as what you are referring to? Just want to make sure I have the correct attribute to drive the process.
Your explanation highlights the reason the automation of this has not been achieved so far; every customer's use case is different...
In your case, you are looking to publish missing Representations (I presume this is what you mean by "images") for all branch-linked sub-assemblies and parts in a top-to-bottom Positioning Assembly structure. You are relying on the fact that the adapter populated information (any of the PVS File Properties would probably do) does not exist for unpublished branch-linked EPMDocuments (use case #1 in your original message). In this case, identifying the EPMDoc OID in this way is probably as good a technique as any for identifying those objects you need to publish in order to achieve a complete Positioning Assembly Representation view.
This same use case might equally be addressed by creating a customized version of the out-of-the-box PublishAllLatestEPMDocumentsNoRepresentation scheduler method (and we can provide you with the out-of-the-box source for these methods) that takes a top level assembly object as input, walks its CAD structure and publishes a Positioning Assembly Representation if one does not already exist.
Just to chime back in here, our use case is a little trickier. We need a way to locate objects at specific lifecycle states that are missing their additional files. Generally they will have a representation that was created during check-in, they just never got republished after release and therefore didn't get the additional files created. I have no idea how to query for whether or not an object has additional files attached to it. Any suggestions?
Use the listcontent.jsp tool with the showlinks=true argument (see article CS70251), to view the content of a Representation with Additional Files... you will see that the linked Representation content includes ApplicationData with the content role of ADDITIONAL_FILES. Those that do not, will not have this. You could construct SQL to provide the DerivedImage OID's that do not have this. If this needs to be filtered by other criteria, like Representations on Released EPMDocs only, however, the query will quickly start to get a little too complex.
Thanks Gary, I believe most customers will be happy with the ability to manage from the CSV list. As long as you can make it easy from that point, then everybody can benefit.
I'd be open to the publish all if it is smart enough to only send assemlbies to the publisher and it automatically publishes them as positioinng assembly without requiring the positioinng_assy attribute to be included. (Also note that we currently have many legacy family table assemblies NOT set up as positioning assembly due to the challenge of having to verify the instances in the process isnce we use the attribute method.) You will notice in my picture above that I have a column for generic and instance...I'm filtering family tables assemblies out of my list just for this reason! All new family table assemblies created get the attributes, but we haven't solved the legacy family table assemblies yet. It's my dream thjat someday, PTC has a drop down menu setting that basically manages the PA and Extended PA settings for every ".asm" file entering the publisher withouy having to manage attributes, listeners, robots or any other manual intervention or performance hit. Then the customer can focus on the config and recipe settings.
And BTW, thanks for listening and responding to our requests!
Gary, maybe I should have said instead, "I have no way to search for objects based on whether or not they have additional files." The listcontent.jsp tool seems to only be good for looking at one object at a time, and you have to know what the object ID is in advance. Are you saying there is a way to write a query to find all cad documents where state == "Build" OR "Released" & additional files == "No"?
Gary, just saw CS211115 come out today. Is this by chance your doing related to this topic?
Not entirely, this has been posted by a colleague and knowledge domain expert in China and appears to be based on PTC Services customization.
One thing I would say about this article and sample code available through it, is that the code is provided 'as-is' and is not supported by PTC. So if you plan to utilize this, make sure you test fully before deploying in production (and I'll be adding a note to this effect).
I hope this goes some way to addressing your problems but please do provide feed back via the widget on the article, if there are any problems.
Tom, just so you are aware, article CS211115 has been unpublished temporarily whilst it receives an internal face-lift to improve the wording and remove errors in the procedure. The customization code is mature and if you've managed to implement this using the initial instructions, you're all good but if you struggled, wait until it's re-posted in the next day or so.
All feedback regarding the unsupported custom Scheduler Method and/or command-line utility version of the same are welcome and I hope it does go some way towards addressing some of the problems you are experiencing in this area.
Gary, thanks for the update. I haven't had a chance to implement yet. The one thing I was concerned about was how it would impact our already existing publish helper. Not sure if I have to combine them or if they can co-exist separately...
So, in response to your comments, I am planning a Blog post around Publishing / Republishing Based on custom criteria, e.g. from a CSV or using filters like in the recent article CS211115.
Let me know if there are any specific points you would like me to approach but bear in mind I am no customization engineer.
That's a loaded question Gary! From my perspective, you will have 99% of it covered if the Blog covers publishing and republishing from a CSV file created from a search query or a custom report. Here are a couple search/report criteria as examples:
1) All Assemblies or Parts residing in large assembly structure without a representation
2) All Assemblies published using Object Adapter XXX between the Dates of aa/yy/zz and xx/yy/zz (this might be a republish list)
3) All Assemblies with extended positioning assembly parameter where lower level component has been iterated. (republish) (This may not be a report...I believe you put a flag in place for this action)
4) All Released cad objects with part number format "xyz"
5) All Assemblies or Parts without a representation and modified between the dates of aa/yy/zz and xx/yy/zz. (I can run a monthly report and find out which objects failed in the publisher...my current process is to look at the WVS job monitor to filter on the failed items....problem with this process is that we purge failed items every Saturday night)
As you can see, I have plenty of use cases!
Any news on your next blog post? I've managed to build a pretty crazy SQL statement to locate all Windchill objects that are released but don't have the proper additional files. Now I just need a way to republish these guys. CS211115 doesn't seem to allow CSV type input. Anxiously awaiting a solution...
Is it possible to configure the queues to only allow publishing at certain times of the day, and then outside of those times keep any remaining or newly submitted jobs at "ready" until the next publish window opens up? I don't want jobs to fail just because a CAD worker isn't available. They should simply wait until one does become available again, regardless of how long that is. Is this possible? Thanks.
Careful use of dedicated Pubilsher Queue Sets and the publish.publishqueue.availabletimes.<queuename> properties should help with this. It was not specifically designed for disabling all publishing and there may be some issues because of this but it's worth a try. Take a look at the articles in the knowledge base and the WVS Guide for more information.
I'm starting work on this now. I am no programmer, so this will be more conceptual than sample code to resolve the input file / CSV list use case specifically but I'll see what I can find across PTC for this.
Indeed, my colleague in Shanghai pulled out all the stops to update his sample custom scheduler methods with one that hopefully meets all your needs, or at least provides the code basis for one that does. He even provided a command-line option the must be run by an admin on the Windchill server.
I've not had a chance to deploy this and validate it yet then again the idea is that you take this, modify it to your requirements and the fully test it in a development environment before deploying and using in production.
I'll post on the scheduler thread shortly but I hope it helps you Tom.
I will be trying it out tonight on our DEV server. I'll let you know how it goes. Thanks!
Hi Gary - Do you know of or have any clearer information/explanation of how the wvs architecture functions...specifically on the directional flow of cad publish request to the loader and how the overall process flows?