I have seen other pages as reference and I have been trying to implement the WorklogImpl and/or WorklogImpl2 in scriptrunner. It keeps giveing me an error on this line of code:
worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, new Date(), null, null, 27000, null)
or
worklog = new WorklogImpl(worklogManager, issue, null, issue.reporter.name, issue.summary, new Date(), null, null, 27000)
I am wondering if I need to import a plugin or if the inputs are not correct.
Hi everyone, this is how I created a worklog on transition. This doesn't log work on the weekends and only logs work on 7.5 hour days. Enjoy everyone and thanks for the help.
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl; import com.onresolve.scriptrunner.runner.customisers.PluginModule; import com.onresolve.scriptrunner.runner.customisers.WithPlugin; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.ComponentManager import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.MutableIssue; import com.atlassian.jira.issue.customfields.manager.OptionsManager import com.onresolve.scriptrunner.runner.ScriptRunnerImpl import com.onresolve.scriptrunner.runner.customisers.PluginModule import com.onresolve.scriptrunner.runner.customisers.WithPlugin import java.lang.Object import com.atlassian.jira.issue.worklog.WorklogImpl2 import java.text.SimpleDateFormat import com.atlassian.crowd.embedded.api.User import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.worklog.DefaultWorklogManager import com.atlassian.jira.security.roles.ProjectRoleManager import com.atlassian.jira.issue.worklog.Worklog import com.atlassian.jira.datetime.LocalDate def componentManager = ComponentManager.getInstance() def customFieldManager = ComponentAccessor.getCustomFieldManager() def cfend = customFieldManager.getCustomFieldObjectByName("End Date") def cfstart = customFieldManager.getCustomFieldObjectByName("Start Date") def cfdays = customFieldManager.getCustomFieldObjectByName("Used vacation days") def reporter = issue.reporter.name def worklogManager = ComponentAccessor.getWorklogManager(); //Take customfield date object and change it to days int days = (issue.getCustomFieldValue(cfdays) as int)//return the number of days int timetracker =0; ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager def UsersRole = projectRoleManager.getProjectRole("Users") long timespent = 27000 int counter = 0; int check = 0; for(int i=0; check == 0 ;i++){ //Checks if it is sunday if(((issue.getCustomFieldValue(cfstart) as Date) + i).getDay() == 0){ i++ def worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, (issue.getCustomFieldValue(cfstart) as Date)+ i, null, null,timespent, UsersRole) worklogManager.create(issue.reporter, worklog, 0L, true) } //Checks if it is Saturday else if(((issue.getCustomFieldValue(cfstart) as Date) + i).getDay() == 6){ i = i + 2 def worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, (issue.getCustomFieldValue(cfstart) as Date) + i, null, null,timespent, UsersRole) worklogManager.create(issue.reporter, worklog, 0L, true) } //Any other day in the week else{ def worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, (issue.getCustomFieldValue(cfstart) as Date) + i, null, null,timespent, UsersRole) worklogManager.create(issue.reporter, worklog, 0L, true) } counter++ if(days == counter){ check =1; } } return 0;
What is the error you are seeing in the logs?
Have you seen our documentation here on doing exactly this? It would be useful to follow that example first and see if it works for you.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I got it to work actually. I didn't post the code because it hasn't been fully completed but I was able create worklogs by performing a transition. When the code is fully complete, I will try and post it online.
Thank you for the help and suggestion
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
No problem. Great that would probably help people with a similar issue to yours.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I just faced an issue and I am wondering if you know how to fix it. JIRA seems to be running out of memory after I began scripting useing scriptrunner. I am using a JIRA server and it prevents me from logging on to the server. After further notice we realized its because the memory seems to max out. We restarted the server and it works fine, but after some time the memory maxs out again and then I can't log on again. My code is posted below:
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl; import com.onresolve.scriptrunner.runner.customisers.PluginModule; import com.onresolve.scriptrunner.runner.customisers.WithPlugin; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.ComponentManager; import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.ComponentManager import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.MutableIssue; import com.atlassian.jira.issue.customfields.manager.OptionsManager import com.onresolve.scriptrunner.runner.ScriptRunnerImpl import com.onresolve.scriptrunner.runner.customisers.PluginModule import com.onresolve.scriptrunner.runner.customisers.WithPlugin import java.lang.Object import com.atlassian.jira.issue.worklog.WorklogImpl2 import java.text.SimpleDateFormat import com.atlassian.crowd.embedded.api.User import com.atlassian.jira.issue.worklog.WorklogImpl import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.worklog.DefaultWorklogManager import com.atlassian.jira.security.roles.ProjectRoleManager import com.atlassian.jira.issue.worklog.Worklog import com.tempoplugin.core.workattribute.api.WorkAttributeService import com.tempoplugin.core.workattribute.api.WorkAttributeValueService //Tempo Plugin //@WithPlugin("is.origo.jira.tempo-plugin") @PluginModule //WorkAttributeService workAttributeService def componentManager = ComponentManager.getInstance() def customFieldManager = ComponentAccessor.getCustomFieldManager() def cfend = customFieldManager.getCustomFieldObjectByName("End Date") def cfstart = customFieldManager.getCustomFieldObjectByName("Start Date") def cfdays = customFieldManager.getCustomFieldObjectByName("Used vacation days") def reporter = issue.reporter.name def worklogManager = ComponentAccessor.getWorklogManager(); //Take customfield object and change it to time double stDate = (issue.getCustomFieldValue(cfstart) as Date).getTime()//time in milliseconds double enDate = (issue.getCustomFieldValue(cfend) as Date).getTime()//time in milliseconds double timediff = (enDate - stDate)/1000 // returns the time difference in seconds int days = (issue.getCustomFieldValue(cfdays) as int)//return the number of days timediff = Math.round(timediff) ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager def UsersRole = projectRoleManager.getProjectRole("Users") long timespent = 27000 for(int i=1; i<=days;i++){ def worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, (issue.getCustomFieldValue(cfstart) as Date) - 1 + i , null, null,timespent, UsersRole) worklogManager.create(issue.reporter, worklog, 0L, true) } return 0;
There might be another reason why this is occuring, but I just want to double check to make sure that it is not this line of code. We are using JIRA 7.3.1
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
the @PluginModule is also commented out (//@PluginModule)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I can't see anything wrong with your script.
Is it possible that there are event listeners setup that are being triggered in a loop? Is it only when you use this script you get out of memory?
If you have a paid license for ScriptRunner you can open up a support request through our portal here and we'll take a closer look for you. Please attach thread dumps and heap dumps when this problem occurs so we can analyse them.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.