페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

이 문서는 Calculated Custom Field 애드온에서 커스텀 필드 합계를 계산하는 Groovy Script 예제를 공유하기 위해 작성되었다. 


목차


Sum of Sub-task, linked issues field

  • Sub-task의 linkTypeId: 10100
코드 블럭
<!-- @@Formula:
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.issue.link.IssueLinkManager;
import com.atlassian.jira.issue.link.IssueLinkTypeManager;
import com.atlassian.jira.issue.customfields.manager.OptionsManager;
import com.atlassian.jira.issue.customfields.option.Option;
//import com.atlassian.jira.issue.status.
double sumCustomFieldValues( Issue issue, customFieldId, linkTypeId ) {
double sum = 0;
int statusCondition = 0;
 
 CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
 CustomField customField = customFieldManager.getCustomFieldObject(customFieldId);
 CustomField customFieldDeliveryMaterial = customFieldManager.getCustomFieldObject(10315);
 IssueLinkManager issueLinkManager = ComponentAccessor.getIssueLinkManager();
 for (IssueLink issueLink : issueLinkManager.getOutwardLinks(issue.getId())) {
    //log.warn("in here 1, linkTypeId:" + issueLink.getIssueLinkType().getId());
    statusCondition = 0;
    if( issueLink.getIssueLinkType().getId() == linkTypeId ){
       Issue subTask = (Issue) issueLink.getDestinationObject();
       if (subTask != null ) {
           String status = subTask.getStatus().getName();
           //log.warn("Issue status:" + status);
           if (status != null) {
              if (status.toUpperCase().equals("DONE")) {
                 statusCondition = 1;
              }
           }
           Option deliveryMaterialValue = (Option) subTask.getCustomFieldValue(customFieldDeliveryMaterial);
           if ((deliveryMaterialValue != null) && (statusCondition == 1))  {
               String deliveryMaterialString = (String) deliveryMaterialValue.getValue();
               if (deliveryMaterialString != null) {
                   if( !deliveryMaterialString.isEmpty() && deliveryMaterialString.equals("YES") ) {
                       Double customFieldValue = issueLink.getDestinationObject().getCustomFieldValue(customField);
                       sum += (customFieldValue == null) ? 0 : customFieldValue;
                    }
                }
            }
        }
    }
      
  }
 
 return sum;
}
 
sumCustomFieldValues(issueObject, 10314, 10100);
-->


Issue 내의 custom field (Single Selection) value 얻기

  • issue object: calculated custom field add-on에서 제공하는 issue object
  • issueObject: Jira에서 제공하는 issue object 

...