In Watson Dialog, <folder label="Global"> could be used to handle objections.
If in middle of some dialog user type an objection, folder Global could answer and after that keep the dialog at the same point.
I trying to do the same with Watson Conversation but I'm lost. Apparently it is not possible or not easy. The node everything_else don't solve the problem. It breaks the conversation.
Watson Conversation is or not is a evolution of Watson Dialog? It has less features?
Conversation and Dialog are two different systems. Dialog would maintain state, while in Conversation you are expected to maintain it.
There is no global feature at this time, but you can simulate the feature through two different ways.
1. Two workspaces.
This option is probably the easiest. You have your second workspace with all your global terms. In your process flow of the first workspace at the end of a check area you have a keyword. This keyword triggers your application layer to search the second workspace for the global answer.
This way you can maintain your position in the first workspace easily.
This example uses the return text "SearchGlobal" to trigger it. Once it completes, it will return to asking for a yes/no.
2. One workspace. Global folder
In this case when you see the "SearchGlobal" text, you store the context object from the response. Then send the users input again, only with the context object to jump to a related branch.
You can do this by either loading a context variable, or storing a pre-existing context object to jump to a branch. The latter is a little tricker.
Related
In Tableau dashboard it is possible to create a number of elements (like sliders) which can be used by user to set values of some parameters. Further these parameters are used in combination with data as input for some calculations. The results of the calculations are displayed back to the user.
The default behavior of Tableau is that the calculations are triggered each time as soon as one of the parameters is changed by a user. It might be not optimal if there are many parameters and each recalculation takes several seconds. A user might want first to set the values of all parameters and only then trigger the calculations.
How can one get this behavior?
ADDED
I found out that I can choose "pause auto updates" (here). In this way a change in one of the parameters does not trigger the calculations (as I want). Then I can trigger the calculations (after all parameters are changed) by pressing "Refresh" button. The problem with this solution is that I, as a dashboard developer, have this button but the user will not have it. I guess the user can also update the dashboard by pressing F9 button on the keyboard, but it might be not user friendly. I would prefer to put a "Refresh" button into the UI (into dashboard directly). Is it possible?
ADDED 2
Here I see a question that is identical to mine. The proposed solution is to use "Pause" and "Run" buttons. However, as I have already mentioned, it does not seems to be a "full solution" since it works only for the developers of dashboard and not the final users (since they do not have access to these buttons). So, my question remains: How can I add the "Pause" and "Run" buttons to the dashboard?
You can factor out portions of your dashboard, such as user input, into HTML inputs and then use the Tableau JavaScript API to control aspects of Tableau's behavior, such as when it refreshes. You can then style your controls with CSS etc. At the cost of maintaining a bit of HTML and JavaScript.
It may not be worth the hassle compared to just putting a note on the dashboard to say, "use pause and resume when ..." but it does give you more control over look, feel, behavior and integration with other apps
We're looking for a solution on how to best deal with the situation where multiple authors are working on the same page. If the first author pushes in the content, the second should have a way to merge it when he tries to publish. Launches appears to be a way to take care of this but it doesn't seem to be handling content merging. Is there any way an author can view the diff(and or do merge) of the content that might have been pushed by another author while they were working concurrently ?
Please help with any pointers.
Page modifications happen in real time to the underlying structure. They also happen at as small a level as possible.i.e. If you go into a text area and modify the text there, the text node is changed on the server, you aren't saving the entire page.
The only way that person A could interfere with what person B is doing is if they were working on the exact same area of the page. Which, honestly is a process issue. I say this because the answer to your question is that there is nothing out of the box to handle this type of scenario and if you are on 6.0 or higher and looking at the JCR3. JCR3 handles this far worse than the older version did. Last time I checked it didn't support nodes at all
Adding to what Bailey said, AEM OOB allow multiple users to edit same page in real time, though if multiple users are working on same node will be a reason of conflict. Such cases can be managed by defining a process like:
1. Take a lock of page and edit page or
2. Create versions of page and publish versions
When I create a live copy of a blueprint website, and rollout pages using standard rollout config, links in the pages are updated to reflect the live copy version.
ex. /content/myblueprintwebsite/home.html -> /content/mylivecopywebsite/home.html
But when those paths are buried inside properties of the page content nodes, they are not updated, and still points to the blueprint pages.
... is this the intended behavior? If so I guess I would have to write my own rollout config? Or is there another solution to this problem?
Thanks for your answers.
As per: https://docs.adobe.com/docs/en/aem/6-1/administer/sites/msm/msm-livecopy.html
"
When the blueprint source contains links and references that target a paragraph in a different chapter, the targets are not updated in the live copy pages. For example, a live copy is created from the Geometrixx Demo Site blueprint. Links in the Toolbar chapter that target the Services chapter are not updated in the live copy, and continue to target the original pages in the Geometrixx Demo Site.
"
My interpretation of the above:
- If the link to the target is created on a page that is in the ancestral line, the change will reflect in live copies.
I tested this by configuring a link to bp/en/parent/child-page on the bp/en/parent page and also on the bp/en page.
In both cases, the corresponding live-copy/... pages reflect changed paths to the live copy specific child page.
Moreover, the change is happening for links no matter what widget is used - OotB List, a customized link widget, or hyperlink configured in the text widget.
Further question:
Editors may want to create links from pages that is not in the ancestor line. What then? Is there a configuration that can be set to allow the change to happen ? Or are we required to write custom rollout action?
When ever a page rollout is done it updates all the individual content references for ex:
paths in property nodes, if it is stored individually i.e., not concatenated with any other text like: hello /content/test/master/en.
It doesnt update if the path is in the mid of other text.
And
Creating custom roll out doesn't server your purpose.If u really want to create custom roll out to meet this requirement then you have to create following custom live actions and write logic to find paths and then modify them.
1.ContentCopyActionFactoryCustom
2.ContentDeleteActionFactoryCustom
3.ContentUpdateActionFactoryCustom
Creating custom roll out is a risky option as roll out is called from many places like while creating live copy,from blue print section , roll outing a page and its sub pages and background execution etc.,We have to handle any exception caused in this explicitly.If u start changing one file then u end up changing all related files has roll out implementation on many java classes.
Ideal Solution : Save all the paths in a individual property and AEM will take care of updating there references
Cheers !!
When using chrome developer tools, it appears that each app window (and the background 'page') has its own javascript context (space of objects, thread of execution), and yet the createdWindow callback of chrome.app.window.create apparently provides direct access to the objects of the 'other' window that was just created.
Given that, I'm unclear on the best way to communicate between windows; e.g. if I open a second window to act as a dialog box, when the user clicks OK to save changes, should I be using postMessage, sendMessage, or just call a function on an object in the main window. I've looked at the messaging samples, and they seem focused on communication between two different apps, or between an app and an extension.
So, I'm seeking a clear description of the memory and execution model within one app. Are there really separate contexts, or is it just one space of objects, with one thread of execution? What is the best way to communicate between windows of the same chrome app?
That is a great question James!
Multiple chrome windows are not completely separate. They share a single thread and object space, however the window object is different for each. In javascript unscoped references to things are looked up on the current window, so this makes the windows appear to be different object spaces - but they are not really.
So, you can reach into another window and execute a function there, or manipulate state in other ways (e.g. set a variable on another window to a function from the current window) and it is acceptable and supported.
You might find the chrome.app.window.getAll() and chrome.app.window.get() methods useful. They are however new to Chrome 33 which is not yet in the stable channel.
As an alternative you could hold an array of opened AppWindow objects in the background page context.
You can then get a reference to the background page context from any window using the chrome.runtime.getBackgroundPage() method
I am making a custom textbox control and am thinking about adding keybindings in the constructor that execute commands to open and save files. I am also thinking about handling the find and replace dialog from within my textbox control.
Is there a reason I shouldn't do this?
--Edit--
I am planning on only using this control in my current application. One of the reasons I am thinking of doing this is to avoid binding to the textbox's Text property, since this binding seems like it would be just as inefficient as updating a string on the textbox's textchanged event.
Well, flexibility comes to mind. Consider the following scenarios, which would be impossible (or at least difficult) in your control:
You want to handle multiple or different methods of opening a file, but it depends on your application.
You want to use your textbox but limit the functionality -- e.g., Find/Replace is not allowed.
You want to change the behavior of any of that in one application but not the other. For example, in app A you want to tack on an extra slash to the end of the text, but in app B you want to add a custom folder name.
In general, I would consider something more generic. Something like a textbox has a specific purpose; enhancing that purpose is fine, but you're going beyond that. You're taking logic that rightly belongs to the app and putting it on a specific control. That limits what you can do with the control across multiple apps.
Of course, if you're writing a control specifically for one and only one app, you don't need to worry about these things. But I would still consider it a bad practice, myself.