Main Content

addTaskTool

Add tool to help organize and complete task activities

    Description

    addTaskTool(pm,taskTool) adds a tool to the process model. You can use task tools to help you organize and complete task activities. Starting in R2024a, you can access the tools for a task by pointing to the task in the Tasks column in Process Advisor and opening the options menu (...).

    Task options menu showing a custom task app

    example

    Examples

    collapse all

    Starting in R2024a, you can integrate custom apps into your process model by using the addTaskTool function. You create the custom app by using App Designer or uifigure and represent the app by using a padv.TaskTool object. For this example, you add a custom app as a tool for a task and view the tool in the options menu for the task in Process Advisor.

    Open the Process Advisor example project.

    processAdvisorExampleStart

    Open the standalone Process Advisor window.

    processAdvisorWindow

    Open the Additional Examples process by selecting Additional Examples from the Process gallery in the toolstrip. The Additional Examples process contains example tasks that use a custom task app created in App Designer.

    Note

    For R2025a, this functionality will be available in a future release of the support package.

    Mouse selecting Additional Examples process in Process gallery

    In the Tasks column, expand the task Example Automated Task and open the task app for the AHRS_Voter model by pointing to AHRS_Voter, opening the task options menu (...), and clicking Example Task App.

    Example Task App option in task options menu for AHRS_Voter model

    The App Designer app opens inside Process Advisor. The Example Task App dialog box shows the relative path to the model and several buttons for interacting with the app. The dialog box was designed in App Designer and provides a UI for opening a model and accessing other options using App Designer UI components. For example, you can open the current task iteration artifact, AHRS_Voter, by clicking Open in the Example Task App dialog box.

    Example Task App dialog box showing path to AHRS_Voter model and buttons for opening model, closing task app, and accessing help information

    In Process Advisor, close the Example Task App dialog box by clicking Close.

    In the project root, find the example app, TaskAppDemo.mlapp, and the example function, exampleProcess.m.

    The exampleProcess function defines a padv.TaskTool object for the task app and adds the padv.TaskTool object, appOpenModel, to the example task and process model. Since the tool function is an App Designer app, the Type is set to padv.TaskToolType.TaskApp. The ToolFunction argument specifies the App Designer file name, TaskAppDemo, that defines the example task app UI.

    % Example Task App
        appOpenModel = padv.TaskTool( ...
            Title        = "Example Task App", ...
            Type         = padv.TaskToolType.TaskApp, ...
            ToolFunction = "TaskAppDemo");
        pm.addTaskTool(appOpenModel);
    ...
    taskExampleTaskApps.TaskTools = appOpenModel;

    Open and inspect the exampleProcess.m file to view the full code. The processmodel.m file calls the exampleProcess function on the process model object, pm, to add the example process to the process model for the project.

    Open the example task app in App Designer by double-clicking the TaskAppDemo.mlapp file in the root of the example project. You can use App Designer to interactively develop the example task app. For more information, see App Designer.

    TaskAppDemo file in App Designer

    In App Designer, drag and drop a Table UI component onto the canvas. Resize the table and app layout as needed.

    Design View of App Designer showing table UI component on canvas

    View the app code by clicking the Code View button above the canvas. This example app uses a startup function, startupFcn, to find the task context object, extract the task iteration artifact, and display the model file path in the app. When you open a task app, Process Advisor passes a padv.TaskContext object to the task app.

            function startupFcn(app, varargin)
                % Find the TaskContext object in varargin
                taskContextIndex = find(cellfun(@(x) isa(x, 'padv.TaskContext'), varargin), 1);
    
                if ~isempty(taskContextIndex)
                    app.TaskContext = varargin{taskContextIndex};
    
                    % Get the IterationArtifact
                    iterationArtifact = app.TaskContext.getIterationArtifact();
    
                    % Get the file path from the name field
                    filePath = iterationArtifact.name;
                    app.ModelFilePath.Value = filePath;
    
                end
            end

    In the conditional block within startupFcn, add code that retrieves and displays the commit history for the current task iteration artifact in the table component of the app, app.UITable. The following code shows the updated startupFcn function.

            function startupFcn(app, varargin)
                % Find the TaskContext object in varargin
                taskContextIndex = find(cellfun(@(x) isa(x, 'padv.TaskContext'), varargin), 1);
    
                if ~isempty(taskContextIndex)
                    app.TaskContext = varargin{taskContextIndex};
    
                    % Get the IterationArtifact
                    iterationArtifact = app.TaskContext.getIterationArtifact();
    
                    % Get the file path from the name field
                    filePath = iterationArtifact.name;
                    app.ModelFilePath.Value = filePath;
    
                    % Display commit history for iteration artifact
                    repo = gitrepo;
                    commitHistory = log(repo.CurrentBranch,File=filePath);
                    app.UITable.Data = commitHistory;
                    columnNames = commitHistory.Properties.VariableNames;
                    app.UITable.ColumnName = columnNames;
    
                end
            end

    In Process Advisor, update the task information by clicking Refresh Tasks and open the task app for AHRS_Voter. The Example Task App dialog box shows a table with the commit message, branches, and authoring information for the AHRS_Voter model.

    Modified Example Task App dialog box showing table of commit messages for the AHRS_Voter model

    Starting in R2024a, you can integrate custom commands into your process model by using the addTaskTool function. You represent the custom commands by using padv.TaskTool objects. For this example, you add two custom commands as tools for a task and view the tools in the options menu for the task in Process Advisor.

    Open the Process Advisor example project. The model AHRS_Voter opens with the Process Advisor pane to the left of the Simulink® canvas.

    processAdvisorExampleStart

    Define your custom command by creating a new MATLAB® function file. The function must accept a TaskContext as a name-value argument and must be on the MATLAB path.

    For this example, you can create a file named taskCmd1.m and define a custom function that accepts and displays an input argument.

    function out = taskCmd1(inputArg, NamedValueArgs)
        arguments
        inputArg
        NamedValueArgs.TaskContext
        end
    
        disp(inputArg);
        
    end

    In the Process Advisor pane, click the Edit process model button to open the processmodel.m file for the project.

    Replace the contents of the processmodel.m file with the following example code. The code defines:

    • myTask — A custom task.

    • myTaskTool — A custom tool for a task. The tool calls the function specified by the ToolFunction argument. In the Process Advisor context menu for a task, the tool has the title My Command 1. Since the tool function, taskCmd1, is a .m file for a function that defines a command for the task tool to execute, the Type is set to Command. The function accepts an input argument cmd1Arg.

    Inside the process model, the code adds the task and tool to the process model and specifies the tool as one of the task tools for the task.

    function processmodel(pm)
        % Define process model for project
    
        arguments
            pm padv.ProcessModel
        end
    
        % --- Task ---
        myTask = padv.Task("MyTask");
        pm.addTask(myTask);
        
        % --- TaskTool ---
        cmd1Arg = "myInputArg";
        myTaskTool = padv.TaskTool(ToolFunction="taskCmd1",...
            Title="My Command 1",...
            Type=padv.TaskToolType.Command,...
            Arguments={cmd1Arg});
    
        % --- Integrate ---
        pm.addTaskTool(myTaskTool);
        myTask.TaskTools = myTaskTool;
    
    end

    In Process Advisor, update the task information by clicking Refresh Tasks.

    In the Tasks column, point to MyTask, open the options menu (...), and click My Command 1.

    Process Advisor executes the command specified in the taskCmd1 function. The function displays the input argument, "myInputArg", in the MATLAB Command Window.

    Task options menu showing a custom command

    Input Arguments

    collapse all

    Process model for project, specified as a padv.ProcessModel object.

    Example: pm = padv.ProcessModel

    Tool to help complete a task, specified as a padv.TaskTool object or an array of padv.TaskTool objects.

    Example: padv.TaskTool(ToolFunction="app1_exported",Title="My App",Type=padv.TaskToolType.TaskApp)

    Example: [padv.TaskTool(ToolFunction="app1_exported",Title="My App 1",Type=padv.TaskToolType.TaskApp),padv.TaskTool(ToolFunction="app2_exported",Title="My App 2",Type=padv.TaskToolType.TaskApp)]