-
Notifications
You must be signed in to change notification settings - Fork 120
ProSnippets Tasks
UmaHarano edited this page Nov 6, 2024
·
21 revisions
Language: C#
Subject: Tasks
Contributor: ArcGIS Pro SDK Team <[email protected]>
Organization: esri, http://www.esri.com
Date: 10/22/2024
ArcGIS Pro: 3.4
Visual Studio: 2022
.NET Target Framework: .Net 8
IEnumerable<TaskProjectItem> taskItems = Project.Current.GetItems<TaskProjectItem>();
foreach (var item in taskItems)
{
// do something
}
// Open a task file
try
{
// TODO - substitute your own .esriTasks file to be opened
string taskFile = @"c:\Tasks\Get Started.esriTasks";
//At 2.x -
//System.Guid guid = await TaskAssistantModule.OpenTaskAsync(taskFile);
System.Guid guid;
if (TaskAssistantFactory.Instance.CanOpenTaskFile(taskFile))
guid = await TaskAssistantFactory.Instance.OpenTaskFileAsync(taskFile);
// TODO - retain the guid returned for use with CloseTaskItemAsync
}
catch (OpenTaskException e)
{
// exception thrown if task file doesn't exist or has incorrect format
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(e.Message);
}
// get the first project task item
var taskItem = Project.Current.GetItems<TaskProjectItem>().FirstOrDefault();
// if there isn't a project task item, return
if (taskItem == null)
return;
try
{
// Open it
//At 2.x -
//System.Guid guid = await TaskAssistantModule.OpenTaskItemAsync(taskItem.TaskItemGuid);
var guid = await TaskAssistantFactory.Instance.OpenTaskItemAsync(taskItem.TaskItemGuid);
// TODO - retain the guid returned for use with CloseTaskItemAsync
}
catch (OpenTaskException e)
{
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(e.Message);
}
// find the first project task item which is open
var taskItem = Project.Current.GetItems<TaskProjectItem>().FirstOrDefault(t => t.IsOpen == true);
// if there isn't a project task item, return
if (taskItem == null)
return;
if (taskItem.IsOpen)
{
// close it
// NOTE : The task item will also be removed from the project
//At 2.x -
//TaskAssistantModule.CloseTaskAsync(taskItem.TaskItemGuid);
TaskAssistantFactory.Instance.CloseTaskItemAsync(taskItem.TaskItemGuid);
}
// get the first project task item
var taskItem = Project.Current.GetItems<TaskProjectItem>().FirstOrDefault();
// if there isn't a project task item, return
if (taskItem == null)
return;
try
{
// export the task item to the c:\Temp folder
string exportFolder = @"c:\temp";
//At 2.x -
//string fileName = await TaskAssistantModule.ExportTaskAsync(taskItem.TaskItemGuid, exportFolder);
string fileName = await TaskAssistantFactory.Instance.ExportTaskItemAsync(taskItem.TaskItemGuid, exportFolder);
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Task saved to " + fileName);
}
catch (ExportTaskException e)
{
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Error saving task " + e.Message);
}
var taskItem = Project.Current.GetItems<TaskProjectItem>().FirstOrDefault();
// if there isn't a project task item, return
if (taskItem == null)
return;
string message = await QueuedTask.Run(async () =>
{
bool isOpen = taskItem.IsOpen;
Guid taskGuid = taskItem.TaskItemGuid;
string msg = "";
try
{
TaskItemInfo taskItemInfo = await taskItem.GetTaskItemInfoAsync();
msg = "Name : " + taskItemInfo.Name;
msg += "\r\n" + "Description : " + taskItemInfo.Description;
msg += "\r\n" + "Guid : " + taskItemInfo.Guid.ToString("B");
msg += "\r\n" + "Task Count : " + taskItemInfo.GetTasks().Count();
// iterate the tasks in the task item
IEnumerable<TaskInfo> taskInfos = taskItemInfo.GetTasks();
foreach (TaskInfo taskInfo in taskInfos)
{
string name = taskInfo.Name;
Guid guid = taskInfo.Guid;
// do something
}
}
catch (OpenTaskException e)
{
// exception thrown if task file doesn't exist or has incorrect format
msg = e.Message;
}
catch (TaskFileVersionException e)
{
// exception thrown if task file does not support returning task information
msg = e.Message;
}
return msg;
});
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(message, "Task Information");
// TODO - substitute your own .esriTasks file
string taskFile = @"c:\Tasks\Get Started.esriTasks";
string message = await QueuedTask.Run(async () =>
{
string msg = "";
try
{
// retrieve the task item information
//At 2.x -
//TaskItemInfo taskItemInfo = await TaskAssistantModule.GetTaskItemInfoAsync(taskFile);
TaskItemInfo taskItemInfo = await TaskAssistantFactory.Instance.GetTaskItemInfoAsync(taskFile);
msg = "Name : " + taskItemInfo.Name;
msg += "\r\n" + "Description : " + taskItemInfo.Description;
msg += "\r\n" + "Guid : " + taskItemInfo.Guid.ToString("B");
msg += "\r\n" + "Task Count : " + taskItemInfo.GetTasks().Count();
}
catch (OpenTaskException e)
{
// exception thrown if task file doesn't exist or has incorrect format
msg = e.Message;
}
catch (TaskFileVersionException e)
{
// exception thrown if task file does not support returning task information
msg = e.Message;
}
return msg;
});
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(message, "Task Information");
// TODO - substitute your own .esriTasks file to be opened
string taskFile = @"c:\Tasks\Get Started.esriTasks";
await QueuedTask.Run(async () =>
{
try
{
// retrieve the task item information
//At 2.x -
//TaskItemInfo taskItemInfo = await TaskAssistantModule.GetTaskItemInfoAsync(taskFile);
var taskItemInfo = await TaskAssistantFactory.Instance.GetTaskItemInfoAsync(taskFile);
// find the first task
TaskInfo taskInfo = taskItemInfo.GetTasks().FirstOrDefault();
Guid guid = Guid.Empty;
if (taskInfo != null)
{
// if a task exists, open it
//At 2.x -
//guid = await TaskAssistantModule.OpenTaskAsync(taskFile, taskInfo.Guid);
guid = await TaskAssistantFactory.Instance.OpenTaskFileAsync(taskFile, taskInfo.Guid);
}
else
{
// else just open the task item
//At 2.x -
//guid = await TaskAssistantModule.OpenTaskAsync(taskFile);
guid = await TaskAssistantFactory.Instance.OpenTaskFileAsync(taskFile);
}
// TODO - retain the guid returned for use with CloseTaskItemAsync
}
catch (OpenTaskException e)
{
// exception thrown if task file doesn't exist or has incorrect format
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(e.Message);
}
catch (TaskFileVersionException e)
{
// exception thrown if task file does not support returning task information
ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(e.Message);
}
});
public void TaskEvents()
{
TaskStartedEvent.Subscribe(OnTaskStarted);
TaskEndedEvent.Subscribe(OnTaskCompletedOrCancelled);
}
private void OnTaskStarted(TaskStartedEventArgs args)
{
string userName = args.UserID; // ArcGIS Online signed in userName. If not signed in to ArcGIS Online then returns the name of the user logged in to the Windows OS.
string projectName = args.ProjectName;
Guid taskItemGuid = args.TaskItemGuid;
string taskItemName = args.TaskItemName;
string taskItemVersion = args.TaskItemVersion;
Guid taskGuid = args.TaskGuid;
string taskName = args.TaskName;
DateTime startTime = args.StartTime;
}
private void OnTaskCompletedOrCancelled(TaskEndedEventArgs args)
{
string userName = args.UserID; // ArcGIS Online signed in userName. If not signed in to ArcGIS Online then returns the name of the user logged in to the Windows OS.
string projectName = args.ProjectName;
Guid taskItemGuid = args.TaskItemGuid;
string taskItemName = args.TaskItemName;
string taskItemVersion = args.TaskItemVersion;
Guid taskGuid = args.TaskGuid;
string taskName = args.TaskName;
DateTime startTime = args.StartTime;
DateTime endTime = args.EndTime;
double duration = args.Duration;
bool completed = args.Completed; // completed or cancelled
}
Home | API Reference | Requirements | Download | Samples
-
Retrieve all the Task Items in a Project
-
Open a Task File - .esriTasks file
-
Open a Project Task Item
-
Close a Task Item
-
Export a Task Item
-
Get Task Information - from a TaskProjectItem
-
Get Task Information - from an .esriTasks file
-
Open a specific Task in a Task File - .esriTasks file
-
Subscribe to Task Events