App Orchestration API - Extending the functionality of the agent

2:08 PM
App Orchestration API - Extending the functionality of the agent -

In reviewing the API documentation App Orchestration, I realize that there is a missing section: page explaining how extend the AO agents somehow was missed when compiling the documentation on the product.

So now I present "missing manual" for the 2.0 AO workflow extension mechanism officer. We will ensure that this is included in the in-product Help for the next version of AO


API Documentation - Supplemental :. Extension Agent Functionality

App Orchestration performs the configuration on the products and components it manages by running workflows on agents. Each task or change administrative configuration can cause one or more workflow running, potentially across multiple product areas and data centers. App Orchestration manages the programming of these workflows, and the dependencies between them.

The workflow logic is implemented as PowerShell functions on machines running agents App Orchestration. Each PowerShell functions can be extended or overridden.

Extension workflow function

Create and sign your own PowerShell script files with definitions of functions that provide your workflow customizations, as described below.

Then, place this script in a file on all machines of the agent in the workflow; for example, if the workflow is executed by XenDesktop delivery controllers, place the script on all delivery controllers in the site (s) of delivery where you want your change to take effect.

Configure agents on these machines to pick up the script override by setting the path to the folder where it is located:

 Import-Module Set-CitrixCamAgent CamAgentConfiguration -ExtensionsFolderPath  [Path]  Restart-Service CitrixCamAgent 

the agent will now perform your duties when running workflows.

Adding synchronous actions

This is the best way to extend the integrated workflows because it offers a high level of compatibility between versions. If the integrated workflow logic is changed in a future version of App Orchestration, your override will continue to operate without affecting the new logic

Examples :. Logging before or after a workflow executes, or call March 1 rd component party to make some additional actions that quickly supplement.

You can provide a function that executes before workflow logic, naming it with the verb Initialization and specifying the name of the workflow (without dashes ) the name.
For example, to run your own logic before the workflow "Update-OR", create a function named Initialization-UpdateOU .

You can also provide a function that executes after workflow logic, naming with
specifying the name of the workflow (without dashes) as the name. For example, to run your own logic after the workflow "Update-OR", create a function named Complete-UpdateOU .

These functions should take as input the workflow data and should return $ True to indicate that the integrated logic can continue to run, according to this model:

 Function Initialization-UpdateOU {[CmdletBinding()] param ([Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [PSObject] $ WorkflowStep) process (# Your logic to be executed before the logic high-return $ True)} function full-UpdateOU {[CmdletBinding()] param ([Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [PSObject] $ WorkflowStep) process (# Your logic to run after the high logic return $ True)} 

If the integrated logic changes, override the script will work with the new changes automatically.

Adding long-term actions

This method override workflow is more complex, but still provides a high level of compatibility between versions. If the integrated workflow logic is changed in a future version of the App Orchestration, your override will continue to operate without affecting the new logic.

When this differs Adding synchronous actions is that the new logic you add can take an arbitrary amount of time to complete

Eg .. meanwhile human intervention before the stream continuously working, integration with e component 3 of the party that takes an indefinite amount of time to complete

to do this, your application must be able to know when it is ongoing, and when he finished. You can make long term operations before or after the integrated workflow logic using Initialization and full verbs based on substitutions, as described in Adding synchronized actions. However, you can return $ False to indicate that your action is long race and has not yet finished.

 Function Initialization-UpdateOU {[CmdletBinding()] param ([Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [PSObject] $ WorkflowStep) process (if (! (IsStarted $ WorkflowStep)) {StartMyProcess} if (! (IsComplete $ WorkflowStep)) {return $ False} return $ True)} 

in this example, you would need to provide the implementation of the functions isStarted StartMyProcess and IsComplete .

Whenever your tax override function $ False , it may take 5 minutes or more before being interviewed again to determine the end.

Replacing a function of workflow

This is the most difficult method to extend the workflow functionality. It has two major challenges:

  1. The integrated logic for workflow is often very complex. change can have unintended consequences on the ability of the App Orchestration to ensure the accuracy of the configuration.

  2. The adoption of new versions of Citrix App Orchestration components will be difficult, as any new feature to be emulated or extended by your manually replace.

However, there may be cases where the extent of customization you want requires this approach. It gives you maximum flexibility in how the workflow runs.

The best approach to do this is to start by finding the integrated workflow logic. It is
located in

% Program Files%  Citrix  CloudAppManagement  Agent  CitrixCamAgent 

Search the files in it directory to the point of the function of input workflow. Workflow functions Cam prefixed to the name of the function name; for example, the workflow "Update-OR" is located in a function called Update-CAMOU .

Then copy this logic in your own function with the same name, and where necessary to twist your customizations. Keeping your small changes is the best way to minimize the risk of unintended consequences elsewhere in the App Orchestration configuration system.

While your function has the same name and signature, and exists in the ExtensionsFolderPath configured as described in Extension function workflow, the agent will use your function instead the integrated logic.

Previous
Next Post »
0 Komentar