Jump to content

Search all fexes for string


Go to solution Solved by robert fuschetto,

Recommended Posts

I may have asked this before but can't find the thread.  We are deprecating a table and need to identify and an all fexes that reference the related master file. Is there code or something that may be run to find any fex that essentially references a given string....which in this case would be a master file name.  If so, what is the code and how does one run it. THANKS!

Link to comment
Share on other sites

I would export all the workspaces via CM export package and then scan the fexes with a text editor seaching for the master - this I think is the easiest.

The impact analysis on server console to my knowledge only looks at fexes in the app path. 

Also possible to use WebFOCUS client webservices adapter but might be tricky and lengthy approach.

 

Edited by Clayton Peacock
Link to comment
Share on other sites

@robert fuschetto - I agree with @Clayton Peacock - exporting a CM is great way to accomplish this.

In addition what I did is was creating a report on top of WebFOCUS repository to read/search via a WebFOCUS report - but this is an unsupported technique and would require an additional custom view in the Repository - I did this with SQL Server and Oracle in the past.

Link to comment
Share on other sites

I looked at the fexes generated by the WebFOCUS client adapter, get_reportinfo.fex, the report lists the masters used in a specific fex. BUT you will need to do a lot of looping through the repository tree structure and this will be a lengthy exercise. image.thumb.png.d3b6a5ff43f5cfba393fb7f4d4351463.png  

Link to comment
Share on other sites

Under root_content/WFC/Repository you should find all the Workspace or Domains and their subfolers and fexes.  You can use a file search tool to locate strings of interest. It seems most of us use a tool called Agent Ransack to search the files. Windows seach doesn't alsways seem to give expected results.

  • Like 1
Link to comment
Share on other sites

Well thanks for the response but this is ...well..insane! I can run a query on access db. Someone was able to do it Tableau repositories.  I just did it myself on a SQL database. Tables become deprecated and / or change...we need to be able to identify where they are used.

 

I guess our IT runs a tight ship. We are unable to officially get AR or Notepad++. I am left with having to open every fex to check.

 

Is there no other way? I really thought IBI would have a utility. Likely I would not be secured to use it but some from our 'support' team would....

 

If not I will close this out..thanks again.

Link to comment
Share on other sites

You may have to adapt a little, but I use often the following to search the Repo

Quote

SELECT distinct
     T2.PRT_PATH AS 'Location',
     T2.OBJNAME AS 'Object Name',
     'IBFS:' + T2.PRT_PATH + '/' + T2.OBJNAME AS 'Full IBFS path'
     --,T3.[WF_LNG] AS 'Lang'
     --,T3.[OBJDESC] AS 'Title'
     --,T1.OBJ_HANDLE
     --,CAST(CAST(T1.BCONTENT AS VARBINARY(MAX)) AS VARCHAR(MAX)) 'Code'
  FROM ReposProd.dbo.WF_CONTENT_REVS T1
  INNER JOIN ReposProd.dbo.WF_REPOSOBJ T2
     ON T1.OBJ_HANDLE = T2.HANDLE
  /* To also have the title per language */
  --INNER JOIN ReposProd.[dbo].[WF_NLSOBJ] T3
  --   ON T1.OBJ_HANDLE = T3.OBJ_HANDLE

WHERE UPPER(CAST(CAST(T1.BCONTENT AS VARBINARY(MAX)) AS VARCHAR(MAX))) LIKE '%commissions%'
--and T2.OBJNAME like '%htm'
--and T3.[WF_LNG] = 'en_US'
ORDER BY 1, 2, 3

 

  • Like 1
Link to comment
Share on other sites

11 hours ago, Martin Yergeau said:

CAST(CAST(T1.BCONTENT AS VARBINARY(MAX)) AS VARCHAR(MAX)) 'Code'

 

The cast ist the important part but this will be different from database to database - I had to create it differently for an Oracle repository then for an MS SQL Server repository

 

Link to comment
Share on other sites

I agree with Patrick - the search filter is different based on the repository database.  This is because repository content is stored in BLOBs, and a simple WHERE statement does not work.  Each database seems to have different ways to search BLOB content.  The WHERE is the key to searching for specific values in the repository.

I have been able to implement search with SQL Server and Postgres, but I was not able to find a way to do it with Derby.

SQL Server:   where cast(cast(t1.BCONTENT as varbinary(max)) as varchar(max)) like '%sum%'

Postgres:   where upper(encode(BCONTENT, 'escape')) like '%sum%'

What is your repository database?

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...