I currently have a workflow that sort of works.
I am trying to log a person into my list once they change a field:
Stage:Wait for Finance
If Current Item:Is the Financial Section Complete? not equals Yes
Wait for Is the Financial Section Complete? to equal Yes
Transition to stage
Go to Set Financial
Stage:Set Financial
If Current List:Is the Financial Section Complete? equals Yes
Set Financial Manager to [%Current List:Modified By%]
Log Financial section completed by: [%Cur... to the workflow history list
Email Kimberly Abaid
Transition to stage
Go to Wait for it
Stage:Wait for it
If Current Item:Is the Systems Section Complete not equals Yes
Wait for Is the Systems Section Complete to equal Yes
Transition to stage
Go to Set Systems
Stage:Set Systems
If Current Item:Is the Systems Section Complete equals Yes
Set Systems Manager to [%Current List:Modified By%]
Log Systems Section Completed by: [%Curre... to the workflow history list
Email Kimberly Abaid
Transition to stage
Go to End of Workflow
This sort of works except that when someone modifies their section (ie systems manager) it doesn't put their user name, it puts mine. How do I get the Modified by to put their name?
It sounds like you may have an action beforehand that updates the list item? If this is the case, save the Current Item Modified By to a variable before updating the list item, and make sure to set the Modified By in your update to that variable. This will prevent your update from interfering with your subsequent lookup, and you can just use the variable for logging :)
Related
Want to restrict to publish items ,if items count is more than 20.
You could do this with an item validator, so that "the 21st" item and onward would fail validation so that it cannot transition to the final workflow step.
Another, more intrusive, alternative could potentially be having a item:saved processor that could set __Never publish to 1 to the surplus items, so they can't be published.
As a general recommendation, I'd say you should avoid changing the publishing pipeline. Try having all the items in a "good/valid" state instead, like the solutions above, where you don't change the behavior of Sitecore - rather just keep the content in a state that's in line with the application requirements.
I'm using infopath 2013 form with nintex 2013 workflow.
My current requirement is one form is requested by requester. The same form will expired at 11.59 pm on same day requested(form at any status).
methods I try
1. get remaining minutes from form requested date time. and configure the
renaming minutes in Pause for using parallel action field in workflow but it pause the entire workflow
how to get current time in for loop or anything at 11.59pm i need to end the workflow automatically.
plz suggest any solution
Try to create a "Date and time" variable in your workflow. Then, configure an action "Set a variable" like this:
First dropdown box => your variable
Second dropdown box (Equals to) => Workflow Context
Third dropdown box => Current Time
Finally, you'll can use this variable in your loop.
I hope it helps! :)
We have workflows enabled for majority of our content in Sitecore. We are using the auto-publish feature available after an item gets into the Final state of the workflow. Our implementation partner has enabled 3 parameters for this publish action -
alllanguages=1
related=1
deep=1
I understand that deep publishes only the children of the item that the workflow is on. I also understand that related will publish all related images, items are linked via the link manager functionality. But I do not understand what the alllanguages parameter is for. Does this publish the item in the workflow in all available languages? Also, would it publish all children and related items in all available languages as well?
There are 6 parameters boolean, 1 or 0
With allanguages, related and deep, it publish the current item and childeren and related items in all languages so also the childeren and related are published in all languages.
See this article auto-publish-workflow-action-updates
This are the language options:
"alllanguages" - controls whether current item will be published in all languages that exist in source database. Possible values: "1" - current item will be published in all languages that exist in source database; all other values - code uses values of other parameters to determine languages in which current item will be published.
"languages" - comma (,) separated list of languages in which current item will be published.
"itemlanguage" - controls whether current item will be published in its current language. Possible values: "1" - current item will be published in its current language; "0" - current item will not be published in its current language; all other values - current item will published in its current language. Note that even if value of this parameter is "0", current item will still be published in its current language if current language of the item is in "languages" list.
Sitecore has versions and languages for each item; My assumption (without seeing the implementation) would be it publishes all (available) versions of said items. That is to say, if you only had an en-US language version, you wouldn't necessarily get an es-SP too (unless part of your workflow is a language translation).
Taking the example of the Sample Workflow in SiteCore, in the Approving state state, can I add a new Reject option for the approver to reject the item and move it to the reviewing state?
I believe that the default reject action in any state will always move the item back to the first/draft state but we are implementing a workflow with multiple states in it and the approver would like to have the option to reject to the various teams which each have a state in the workflow. So, is it possible to have multiple reject options as well - for example, can the approver reject to draft or to reviewing based on the error detect?
Select the 'Reject' item underneath your approving workflow step, then set the 'Next State' field to point to the correct workflow state.
In order to have the choice to reject to multiple different states, you will need to add multiple reject buttons. Simply duplicate the Reject "Command" item, point each items "Next State" field to a diff state, and then rename the "Command" items accordingly so the user knows what they mean. E.G. "Reject to Draft" and "Reject to Reviewing".
I am having a problem in QTP with selection of a web list box and I have exhausted what I know to do to resolve it. I am hoping someone can help.
There are 5 controls in a container, 2 webedit controls and 3 weblist controls. Together, they allow entry of accounts associated with a customer, and there can be 16 accounts for any customer. There are only ever five controls active at any time, whether editing or entering information for an account. When the information for an account is entered and accepted, it changes to a read-only table row and a new set of controls appears below it for entry of the next account.
The information entered in these controls is the account number, type, description, designation, and status. The status value is contingent on the designation, and the items in the list change dynamically depending on what the user specifies for the designation. The status list is not enabled until the designation is specified.
After some experimenting with timing, I was able to get past an issue where the status list for the first account was seen by QTP as disabled even though it was clearly enabled. I was then able to advance to entry of the second account.
I change the designation on the second account and try to select an appropriate item (specified in a data table) in the status list. My specification from the data table is never found. I figured it was a problem with verbiage differences and also that I should probably anticipate that and address it now, so I wrote a function to accept three parameters, the list and up to two search items. My function searches the listbox passed to it and looks for a match (full or partial) on the search items it receives. Here is where I encountered a significant problem.
The list of the control my function received was from the previous iteration of the test, corresponding to the designation of that account. This is why my function was not finding the selection item. The list on the screen shows the appropriate items, which suggests that I am looking at the wrong object. I also get the ‘object is disabled’ message when I put my data table value directly into the list with the select statement.
The active controls are displayed below the readonly presentation of the previously entered accounts. I am very new to QTP, but I also read documentation. My only theory at this point is that ATP is not passing the right list to my function… that perhaps that how it was learned included the position, which will change each time. However, the spy identifies the screen control as the same item I processed for the preceding account, which makes my theory suspect. In addition, the other four controls, which are not dynamically changing, do not present the same problem. I can put the information in them consistently.
I apologize for the length of this question, but I wanted to be as thorough and clear as possible. Can anyone help me get past this obstacle.
There are many possiblities why it is exposing this behaviour, so let's start with something simple:
Did you try a myWebList.Refresh call before you do something with the listbox? Refresh re-identifies the object.
Have you put a break point (red dot) inside the custom function. Just see what is happening there. With the debug viewer you can enter a realtime command in the scope of that function like msgbox myWebList.exist(0) or myWebList.Highlight
Can you see how the disabled property is propagated to the webpage? If you can 'Object Spy' it as TO property, you can add it in the GUI Map description.
A more sophisticated aproach is to create a Description with the weblist properties. If you can read the disabled property as an RO property from the 'Object Spy', you can use it as an identifier like "attribute/customDisabledProperty:=false".
If you cannot correctly read the disabled property, you can create a description object and do a count on the amount of items that match that description on that page with numberOfLists = Browser("my browser").Page("my page").ChildObjects(myDescription).Count and get the last list with Set lastList = Browser("my browser").Page("my page").ChildObjects(myDescription)(numberOfLists-1)
Keep us informed. Depending on how this works out, we can work into a direction for a solution.
I figured this out early this morning. There are 4 different list boxes used, each made visible or enabled dependent on the selection of the previous list. This is why the spy found the one listed when I was using it and also why the items in the list were not appropriate to what I had selected and also why it appeared disabled to QTP but enabled to me.
I was selecting the same designation when trying to spy it. It was intuitive that the controls were all the same. I am also a windows programmer and I would have populated the same list each time with the appropriate list items, and I presumed that was what the web developer was doing. It was not and it took some time to figure that out. Now that I figured it out, everything is working fine, and I came back to report that. This was a significant, time-intensive lesson.
Thank you very much for your input. It is still useful because I am very new to QTP and every thing I learn is of value.