WorkflowThread
                                    Overview
A Workflow, in a context of a specific data. You will use this object for reading and writing a workflow based on a specific context and data.
- From version: 2020.20
 
Properties
                                                
		coordinates
	
                                            coordinates: string
The coordinates are a delimited string that captures the exact data points that describe the context of the thread. For data cells and members the coordinates are a combination of members and measures that the workflow is related to.
const coordinatesText = document.getElementById("coordinates");
coordinatesText.innerText = workflowApi.currentThread.coordinates;
                                            
                                                
		createdBy
	
                                            createdBy: Contact
The information of the user that created the thread.
if(workflowApi.session.currentUser.id !==  workflowApi.currentThread.createdBy.id){
 	deleteButton.style.visibility='hidden';
	}
                                            
                                                
		entries
	
                                            entries: Entry[]
The list of entries in the thread. Each workflow thread has a list of entries. All the entries represent the thread's changes over time.
const firstEntry =  workflowApi.currentThread.entries[0];
                                            
                                                
		expirationDate
	
                                            expirationDate: Date
A date for the thread to be expired. An expired thread is hidden in the application.
workflowApi.currentThread.expirationDate = workflowApi.enums.ExpirationType.ThreeMonths;
                                            
                                                
		hasDataSnapshot
	
                                            hasDataSnapshot: boolean
A flag that indicates if a report snapshot should be added to the thread. Snapshots allow the report structure to be stored regardless of whether it changes in the future.
setHasDataSnapshotButton.onclick = () => {
     	workflowApi.currentThread.hasDataSnapshot = true;
}
                                            
                                                
		hasReportSnapshot
	
                                            hasReportSnapshot: boolean
A flag that indicates if a report snapshot should be added to the thread. Snapshots allow the report structure to be stored regardless of whether it changes in the future.
setHasReportSnapshotButton.onclick = () => {
    	workflowApi.currentThread.hasReportSnapshot = true;
}
                                            
                                                
		id
	
                                            id: string
The thread's unique id,
const threadId = workflowApi.currentThread.id;
console log(" The current thread id is: " + threadId);
                                            
                                                
		isEmailParticipents
	
                                            isEmailParticipents: boolean
A flag that indicate if the thread's contacts will get an email when a new entry is added.
setEmailParticipentsButton.onclick = () => {
    	workflowApi.currentThread.isEmailParticipents = true;
}
                                            
                                                
		isReportSpecific
	
                                            isReportSpecific: boolean
A flag that indicates if the thread is related to a specific report or slide. If this flag is false the user will see the thread in every report with the same data model and coordinates.
setReportSpecificButton.onclick = () => {
		workflowApi.currentThread.isReportSpecific = true;
}
                                            
                                                
		subtitle
	
                                            subtitle: string
The thread's subtitle or description. The subtitle gives the user a larger understanding of what the thread is about.
const detailsInput = document.getElementById("details");
detailsInput.value = workflowApi.currentThread.subtitle;
detailsInput.onkeyup = function(event) {
	const input = event.target.value;
	workflowApi.currentThread.subtitle = input;
}
                                            
                                                
		title
	
                                            title: string
The thread's title. The title gives the user a quick understanding of what the thread is about.
const subjectInput = document.getElementById("subject");
subjectInput.value = workflowApi.currentThread.title;
subjectInput.onkeyup = function(event){
	const input = event.target.value;
	workflowApi.currentThread.title = input;
}
                                            
                                                
		type
	
                                            type: WorkflowThreadType
The source object driving the thread. A thread could be created on one of those contexts : Cell , Member , Document and Component. You can use this type to indicate the context the Thread was created on.
if(workflowApi.currentThread.type === workflowApi.enums.WorkflowThreadType.Cell){
   	console.log("The current Thread is on a cell");
}
                                            
                                                
		validation
	
                                            validation: () => boolean
A function that is being used by the API infrastructure to indicate if a thread is valid for saving. You should use this to set a customize validation function to control when the thread is valid for saving or not.
cApi.currentThread.validation = () => {
	const currentEntry =  workflowApi.currentThread.entries[0];
	const tasks = document.getElementById('tasks
	return validateTaskList(currentEntry, tasks);
}
                                            Type declaration
- 
                                                        
- (): boolean
 
- 
                                                                
A function that is being used by the API infrastructure to indicate if a thread is valid for saving. You should use this to set a customize validation function to control when the thread is valid for saving or not.
cApi.currentThread.validation = () => { const currentEntry = workflowApi.currentThread.entries[0]; const tasks = document.getElementById('tasks return validateTaskList(currentEntry, tasks); }Returns boolean
 
 
Methods
                                                
		addContacts
	
                                            addContacts ( newContacts : Contact []): Promise<void>
This function adds contacts or users to the thread.
fucntion addAllUsersAsContacts(){
		workflowApi.currentThread.addContacts(workflowApi.utilities.getUsersAndRoles());
}
                                            Parameters
- 
                                                    
newContacts:Contact[]
Array of Contacts - the contacts you want to add for the thread
 
Returns Promise<void>
                                                
		addNewEntry
	
                                            addNewEntry (): Entry
This function adds a new entry to the thread.
createNewEntryButton.addEventListener('click', () => {
		const newEntry = workflowApi.currentThread.addNewEntry();
 	newEntry.save();
});
                                            Returns Entry
Entry-The new Entry for you to add to the thread.
                                                
		getContacts
	
                                            getContacts (): Promise< Contact []>
Returns the list of contacts or users attached to a thread.
cApi.currentThread.getContacts().then((currentContact) =>{
		console.log(currentContact.name);
});
                                            Returns Promise<Contact[]>
users in the app that get updates about the thread and can view it.
                                                
		getEntriesByDate
	
                                            getEntriesByDate ( startDate : Date): Entry []
This function returns all entries in a given thread from the specified date-time.
const entriesSinceYesterday = workflowApi.currentThread.getEntriesByDate(today.getDate() - 1);
console.log("The number of entries since yesterday is " + entriesSinceYesterday.length);
                                            Parameters
- 
                                                    
startDate:Date
the time from where to get the entries.
 
Returns Entry[]
the entries from a time that is relevant for your need.
                                                
		getLastEntries
	
                                            getLastEntries ( count : number): Entry []
This function returns the last set of entries in a given thread. Set the count argument to specify the number to return.
const currentEntry = workflowApi.currentThread.getLastEntries(1)[0];
                                            Parameters
- 
                                                    
count:number
The number of Entries that was last added.
 
Returns Entry[]
Entries that was last added.
                                                
		notifyChangeToContacts
	
                                            notifyChangeToContacts (): Promise<void>
This function triggers the framework to notify all of a thread's contacts that there is an update for this thread.
fucntion CancelThread(){
 	workflowApi.currentThread.title = "canceled:" + workflowApi.currentThread.title;
		workflowApi.currentThread.save().then(() =>{
			workflowApi.currentThread.notifyChangeToContacts();
 	});
}
                                            Returns Promise<void>
                                                
		removeContacts
	
                                            removeContacts ( ids : string[]): Promise<void>
This function removes contacts from the thread.
fucntion removeAllContacts(){
		workflowApi.currentThread.getContacts().forEach((contact) =>{
			workflowApi.currentThread.removeContacts([contact.id]);
		});
}
                                            Parameters
- 
                                                    
ids:string[]
Array of string - id of contacts that you want to remove from the thread
 
Returns Promise<void>
                                                
		removeEntry
	
                                            removeEntry ( entryId : string): void
This function removes the selected entry object from the thread's entries list.
removeLastEntryButton.onclick = function(event) {
	 const lastEntry =  workflowApi.currentThread.getLastEntries(1)[0];
	 workflowApi.currentThread.removeEntry(lastEntry.id);
}
                                            Parameters
- 
                                                    
entryId:string
the entry that you want to delete's id
 
Returns void
                                                
		removeThread
	
                                            removeThread (): Promise<void>
This function removes a Thread by it's given id. You should use it when you require to remove the current thread or some other thread.
const removeThreadButton = document.createElement("button");
removeThreadButton.addEventListener('click', () => {
	workflowApi.currentThread.removeThread().then(() => {
 	workflowApi.canvas.closeWindow();
	});
});
                                            Returns Promise<void>
                                                
		save
	
                                            save (): Promise<void>
This function saves changes made to the thread object.
workflowApi.onBeforeUnload = () => {
		workflowApi.currentThread.save();
}
                                            Returns Promise<void>